I’ve been reading and watching videos on WEB3 for the last few weeks. After following a few tutorials, I built a React app to transfer funds between accounts on the Ropsten Ethereum test network and created a simple NFT marketplace. I will summarize in this post my initial observations on the technology.
One of the most repeated mottos of WEB3 is how it is decentralized, meaning not only that you truly own the content you create but also that you are not subject to censorship since there is no tech overlord who controls the blockchain (as opposed to your Tweets, messages on WhatsApp, posts on Facebook, etc. which are stored on those companies infrastructure).
Any WEB3 project needs access to a node in the network to post transactions to the blockchain. You can run your own node as explained here, but this will incur costs you must be willing to pay. If you don’t run your own node, you will need to access someone else’s node or use companies like Infura, Alchemy, or Moralis. Using such services to get access to the network is the route that most app developers follow hence centralizing your blockchain access through a 3rd party.
So yeah: it can be decentralized, but right now it is mostly not.
On my first tests using the transfer app on the Ropsten network operations signed using my MetaMask were reasonably fast. When I finished the marketplace and started testing it things were not pretty. The network was taking a long time to confirm transactions. This might be because I was using the test network and not the mainnet? Actually, the mainnet has it own problems due to the growing volume of transactions being requested the gas fees are increasing to meet the demand. If you don’t commit to a high gas fee for your transaction, you will wait a long time for it to get confirmed on mainnet.
Even on the Polygon network, which was supposed to be faster than Ethereum, things are not looking that great: it only takes a new crypto game to be successful on the network for all other transactions start to take more time or “charge” more gas fee.
So no, the (eventual?) slowness happens regardless of the network and has its roots in the architecture itself.
To create applications on the Ethereum network, you will be writing “contracts” most likely on the Solidity development language. You try the language out using the Remix web IDE in which you not only write Solidity code, but you also compile, deploy and test it: all without leaving your browser. There are already some libraries in Solidity that encapsulate many of the common needs when writing contracts.
For local development, I used VSCode which has some plugins to help you write Solidity code. To compile and test it locally both tutorials I read used Hardhat. This tool will also help you deploy your contract to test or main networks (using fake ether to pay for the gas fee on the test network and very real ether for mainnet). To interact with the contracts themselves, I used libraries like ethers which also help us to interact with the wallet through MetaMask.
I am sure tooling will improve but I think it is in a decent state right now.
Some of the promises of WEB3 are not yet fully realized: there are still lots of WEB2 in it. It is hard to say how long it will take for a truly decentralized web to emerge (if ever), but if it comes to be, its first steps are being taken as you read this. There are legit use cases for crypto technology today, and I think more will arise soon. Working with new concepts and technologies is always refreshing, so I encourage you to try it out too. Reach me out on Twitter if you wanna chat about it. I plan to write a new post on this subject after trying to develop more complex projects: very interested to see how things will evolve.