Taurai Minodawafa
If you’ve been paying attention to what’s going on in the tech world, you’ve probably come across Web3. Though we have all gotten used to Web 2.0, Web3 is coming, and looking like it will be the new standard in years to come if trends continue. This means that developers will have to learn their way around Web3, and it’s better to do so sooner rather than later.
Compared to Web 2.0’s developer ecosystem, Web3’s is very small. However, the Web3 developer ecosystem is snowballing, and it is becoming more and more vital that developers learn what the Web3 tech stack includes. If you’re hip, you probably know that it relies on blockchain for decentralization and that identity is proven through cryptocurrency wallets. There’s a chance you’ve heard of distributed storage solutions such as the InterPlanetary File System (IPFS).
However, there is much more to Web3 than that. This blog post will further educate developers on what they need to know about it and also how web technologies like Javascript fit into the Web3 world.
The Web3 stack is comprised of the following:
Blockchain
Blockchain development environment
File storage
P2P Databases
API (Indexing & querying)
Identity
Client (frameworks and libraries)
Other protocols
There are many ways in which this stack differs from traditional web architecture, and Web3’s tools, technologies, and ecosystem are much less mature than Web2 also. Approaching it from a web infrastructure perspective, the prominent differences involve what many consider to be “backend” technologies, but they are usually discussed in terms of “protocols” in Web3.
WEB3’s FRONTEND
The client-side technologies (frameworks and libraries) of Web3 liken to those in Web 2.0. Javascript is used heavily on the front end, and a plethora of Web3 projects are built in React. There isn’t much difference in the frontend tech other than actual HTTP client libraries. Instead of Fetch or Axios, one may use Web3.js or Ethers.js– two JavaScript libraries that allow developers to interact with the Ethereum blockchain– to talk to a remote procedure call (RPC) or a graphql client to speak to The Graph to communicate with servers through the HTTP protocol.
Furthermore, identity and how we deal with identity are different on the front end. Since virtually all of the data is public, you don’t need to know anything about the user to read data. However, you usually need to connect to the user’s wallet when writing data. This is either done on a desktop app– the user usually has a browser extension for their wallet, which automatically injects a global window object for the network (e.g., Solana, Ethereum, Arweave)– or on mobile. After signing a transaction, you will be allowed to authenticate in a wallet app and redirect.
If you’ve experimented with buying cryptocurrencies, NFTs or dapps (decentralized applications), you’ve more than likely used MetaMask (including browser extensions for Chrome, Firefox and Chromium-based browsers like Brave). Owned by ConsenSys, MetaMask justifiably refers to itself as “the leading Ethereum software company.”
ConsenSys also controls Truffle, one of the leading integrated development environments (IDEs) in Web3. The IDE is a “development environment, testing framework and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM).” It offers “smart contract lifecycle management” and “automated contract testing,” among other things.
LEARNING ETHEREUM & RUST
Most developers now understand what blockchain is– a veritable distributed ledger of data. However, there are a few different types of blockchains, the two most important being Bitcoin and Ethereum. In contrast to Bitcoin, Ethereum is a fully programmable “Turing-complete” computer.
Ethereum’s programmable nature has led the way for Web3. You can build pretty much anything on top of Ethereum. In terms of Web 2.0, it is a web platform. Not only is Ethereum the largest Web3 platform, but it is also compatible with some of the other blockchains. Learning how to use Ethereum is the main on-ramp to becoming a Web3 developer.
Solidity is a programming language for the Ethereum blockchain that resembles Javascript, but it is only used to write “smart contracts” for blockchains. Solidity and the EVM (or Ethereum Virtual Machine) are probably the best bet as a new blockchain developer. Using this skill set and tech stack, you can build for Ethereum and other Ethereum Layer 2s, sidechains, and even other blockchains like Avalanche, Fantom, and Celo. Rust is also becoming a go-to skill for smart contract developers. Solana, NEAR and Polkadot are three examples of blockchains with first-class Rust support.
Some say that Solidity and Rust are the most used and in-demand languages for smart contract development. Also, since experienced smart contract programmers are relatively rare, they can easily achieve salaries in the mid-hundreds of thousands of dollars per year. Some of the most experienced ones are pulling in upwards of $1 million per year.
STORING DATA & QUERYING IT
Storing and using data is one of the trickiest parts of Web3 development. Though blockchains are good chains of immutable data, they are terrible at storing and processing large amounts of data (especially for dapps). This is where file storage protocols like IPFS, Arweave and Filecoin come in.
Arweave, an open-source project, self-describes as “a protocol that allows you to store data permanently, sustainably, with a single upfront fee.” Essentially a peer-to-peer (P2P) network, it, unfortunately, comes with its own set of crypto buzzwords. Its mining mechanism is called “Succinct Proofs of Random Access (SPoRAs).” Developers can deploy apps to the “permaweb” (“a permanent and decentralized web built on top of the Arweave”).
Dapp developers have the additional complication of having the option to use “off-chain” solutions, meaning the data is stored somewhere other than the main blockchain. There are two common forms of this, and they are “sidechains” (secondary blockchains) and “Layer 2” (L2) solutions (think Bitcoin Lightning Network and Ethereum Plasma). For more on how to approach data management in Web3, click here.
The process of indexing and querying data on the blockchain is a relatively new area of development. The Graph, among other things, enables developers to query directly from L1 or L2 chains using GraphQL within the application.
WEB DEVELOPERS & DECENTRALIZATION
it’s clear if you’re trained in traditional web programming skills (from Javascript to Rust), you’re in a good space with Web3 development. You’ll also have to learn how to program blockchains using smart contracts and familiarize yourself with crypto file storage and off-chain solutions.
From the vantage point of a developer, Web3 seems to be in a transition period, and it appears to be trying to rely less on centralized services like Coinbase, OpenSea and Alchemy. Doing that is where all the complexity comes in, though, because absolute decentralization is a challenging task for dapps.
We’ll see how the evolution of the Web3 stack throughout 2022. In the meantime, it would behoove you to peruse Nader Dabit’s Web3 developer’s guide if you want to learn more.