In this section we’re going to talk about what happens on the Ethereum when a crypto wallet sends ETH to another wallet. We’re going to follow this transaction from beginning to end, from the time it’s sent from the crypto wallet, to when it is added to a block, and when the block gets propagated to the rest of the network. This will give us a good idea of the role that nodes play on the blockchain network. And, this is just the beginning of Web3 tutorials for product designers. Stay tuned for future Web3 Design Courses where we discuss emerging dApps that will disrupt the internet as we know it today.
It starts when Web3 users initiate a send transaction from their wallet app. Think of a transaction as a packet of data that contains all the pertinent information, like “from”, “to”, and “amount”. Of course this is an oversimplification, but this has been an adequate mental model of a transaction’s structure for me as a product designer. Next, the wallet signs the transaction with the wallet’s private key. This is called a digital signature and, again, the details are more of a computer science topic than a design topic. The signed transaction is sent to an Ethereum validator who checks that the signature matches the wallet’s public key. The private key and public key are intimately related to each other – they are called a key pair. If the signature matches, the transaction is considered valid, and the validator accepts the transaction into its mempool for temporary storage. This process of signing transactions and checking that the signature matches is what secures the user’s crypto, and ensures that only someone with the private key can spend that wallet’s crypto.
Let’s pause for a moment, and talk about blockchains and their constituent blocks. Validators assemble new blocks with the transactions in their mempool. Again, this is an oversimplification, but a block is a larger data packet made up of transactions and some unique information that connects it to the last block. Every block connects back to the previous block, and this goes all the way back to the genesis block. The genesis block is the first block on the blockchain, and initiated the Ethereum blockchain on June 30th, 2015. Since then, the blockchain has been built up, block by block. So the blockchain is simply a record of all the confirmed transactions from the genesis block onward. A validator creates a new block, roughly every 12 seconds on Ethereum, with the confirmed transactions that have been received since the last block.
Now that a validator has created a new block, the validator sends the block out to the rest of the network. This is called block propagation, and goes back to the fact that the network is decentralized, and no single validator has the authority to update the blockchain. The validator essentially proposes the new block to other validators, who check that the new block meets certain criteria, and if it does, the other validators add it to their local blockchain. This is how the blockchain gets updated.
When all the validators have the same blockchain, updated with the newest block, then the transactions within the newest block go from pending to confirmed. Thus, Web3 users must wait for their transactions to be included in a block, which has to do with the block confirmation delay.
Also, remember how Web3 users must pay a network fee with every transaction they send. And blocks are made up of these transactions. Every time a new block is created, the network fees get distributed to the validators participating in the network at that time.
To bring this back to our original example of sending crypto to a friend, my send transaction was included in a block, and the validators added the block to their blockchain. This is when my transaction went from pending to confirmed. My wallet’s account balance was decreased by X + F ether, my friend’s account balance was increased by X ether, and F ether was distributed to the validators.
Last thing to discuss – Ethereum is a public blockchain meaning that the data is open for anyone to see. There are tools called block explorers that are great for looking at the status of the network in terms of what was the most recent block, when it was created, and by which validator. Also, you can see all the transactions that were included in a block. Further, you can look into transactions and see the wallet address from which it originated, which address it was sent to, and the amount that was sent.
In summary, we looked at what happens behind the scenes when one wallet sends ETH to another. And we now understand the roles of each node on the Ethereum network. Clients, running crypto wallet software are responsible for assembling raw transactions, signing raw transactions with the wallet’s private key to legitimize them, and sending these signed transactions to validators on the blockchain. Also, the wallet software queries the blockchain to get the status of the transaction, whether it’s pending, or if it’s been confirmed. Also, the wallet app queries the wallet’s address to return information like token balance, which then gets displayed on the UI for the user to see.
Finally, validators are responsible for receiving incoming transactions, and checking the legitimacy of these transactions. They create new blocks to update the current state of the blockchain by bundling these confirmed transactions, and send the new block on to other validators so that it propagates across the network. The other validators check that the block is valid, and then accept it and add it to their blockchain. This is how the blockchain gets updated, and all validators end with the same copy of the blockchain, stored locally on their computers.
If you enjoy videos over reading when it comes to online learning then checkout the course on YouTube. This is part 8 of 9 in the Web3 Design Course 2022. Also, make sure to stay tuned for future Web3 Design Courses where we will get into more interesting topics about emerging dApps.