Let’s dive in to web3 development. The goal here is not to develop blockchains, but rather to develop smart contracts, the programs that run on blockchains.
We’ll start by learning more about the smart contract platform Ethereum. Then, we’ll look at the most popular language for developing apps for Ethereum, called Solidity, as well as some tools for Solidity development, in addition to other tool’s we need to develop web3 apps. Finally, we’ll get our feet wet and work through programming examples as well as security examples.
Because most popular web3 projects use Ethereum or an Ethereum-like chain, we’ll focus on smart contract development for the Ethereum blockchain.
The Ethereum Foundation provides the best primer to Ethereum in the developer docs. To familiarize yourself with Ethereum, please read the Foundational Topics section, and then the first article in the Ethereum stack section, titled Intro to the stack. Certainly, feel free to skim through the other sections if you’d like, but upcoming tutorials will cover the relevant info there.
Solidity is by far the most popular language for writing smart contracts. Lets’s follow along with some tutorials to get our feet wet with the language. But first, we’ll need a crypto wallet - go ahead and download browser extension MetaMask and follow along with its walkthrough.
Now, go ahead and jump into these tutorials!
Hardhat provides a great development environment, but if we want to spin up code quickly, view execution details without sifting through transaction receipts, interact directly with our contracts without writing any code to do so, and leverage a variety of other nice-to-haves, we can use the popular in-browser IDE called Remix, and to stay focused on contract dev, let’s open it now.
Go ahead on open the contracts folder, and create a new file called HelloWorld.sol using the first button below default_workspace in the sidebar. Now go ahead and paste in the following code in the file you created, and ignore the code pasting warning if you see one:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract HelloWorld {
string public greet = "Hello World!";
}
You can then compile, deploy, and interact with your contract:


