notes

Ethereum Development: Overview

Quick overview of development and tooling on Ethereum.

blockchain

ethereum

Last updated on July 3rd, 2022

Ethereum Development: Overview

I’ve been exploring the blockchain ecosystem for quite a while now, attending virtual conferences and workshops, reading newsletters, announcements, documentation, joining countless Discord communities and trying out cutting-edge tools and services.

The web3 space is moving at lightspeed pace with innovators, designers and builders hard at work ideating and building different types of blockchains and blockchain-enabled applications for the next version of the web.

Leading the pack is Ethereum, a turing complete blockchain powered by a single canonical computer called Ethereum Virtual Machine (EVM) whose state every member (node) on the network shares and agrees upon. Participants broadcast requests to this computer to perform arbitrary computations, which other network participants then verify, validate, and execute. Each execution causes the state of the EVM to change, after which it is committed and propagated throughout the entire network.

To execute computations on the network, application builders develop and deploy code called smart contracts to the EVM’s storage where users can make requests to said code with varying parameters. In order to use the network’s resources, each computation execution (called a transaction) has to be paid for (gas) using the network’s native token (ether) to reward the nodes (miners) that executed the transaction.

 

Proof-of-Work Proof-of-Stake

Ethereum’s consensus mechanism is changing to the more sustainable and energy efficient POS mechanism. This means that miners no longer have to expend energy to validate transactions, instead they stake ETH as capital/collateral which gets destroyed if their node violates network policies.

This transition event is popularly known as The Merge and is scheduled to happen sometime this year with successful transitions on testnets; the last of which happened on Goerli.

POS also reduces the barrier of entry to becoming an Ethereum validator, which requires a 32ETH deposit and running/operating a node. However, platforms like RocketPool and Lido Finance offer liquid staking services, where ETH is swapped for staked tokens that earn staking rewards and can be used as collateral, yield farming and other DeFi activities.

 

Connecting with Ethereum

To interact with Ethereum, we’d need access to a node. A node is a running piece of client software — an implementation of Ethereum that verifies all transactions in each block, keeps the network secure and ensures the data is accurate. Here’s a real-time view of all the nodes on the Ethereum network. We could choose to run our own node or we could choose node-as-a-service providers like Alchemy, QuikNode and Infura.

 

Smart Contract Development

For writing smart contracts, our current options are Solidity and Vyper. There are a few others but they aren’t as widely used. Solidity is object-oriented and statically typed while Vyper is python-based, strongly typed and has less features compared to Solidity.

 

Development Tools, Networks & Frameworks

We need access to a development network a.k.a. an Ethereum client for local development. Development networks come with features that enable us to create local blockchains, instantly mine transactions, seed our blockchain with data and test/debug our code.

Frameworks are also great because they are packed with all the tools needed for development, some of which include a development environment, testing framework, build pipeline, and other tools. Here are some of the Ethereum networks/frameworks currently available: Truffle, Hardhat, Foundry, Ape, Embark, Open Zeppelin, Scaffold-Eth.

 

Client API Libraries

To connect our web apps to Ethereum, we need to connect to a node. Every Ethereum node implements the JSON-RPC specification which ensures that each node provides a uniform set of endpoints applications can connect to. There are libraries available that enable us to interract with Ethereum within our apps. They provide node connections and wallet functionality, can interract with smart contract functions, include utility functions and so on.

These libraries are: Ethers.js, Web3.js

 

Storage

Unlike a centralized server operated by a single company or organization, decentralized storage systems consist of a peer-to-peer network of user-operators who hold a portion of the overall data, creating a resilient file storage sharing system. These can be in a blockchain-based application or any peer-to-peer-based network.Ethereum Docs
 

Understanding IPFS