Block 21VIDEO
Anatomy of an Ethereum Transaction
The fields of an Ethereum transaction explained: nonce, gas price, gas limit, recipient, value, data and v, r, s, plus the EIP-1559 fee fields used since 2021.
Here’s a video I made about the components of a transaction in Ethereum:
Here are the components of a transaction summarized:
- Nonce (a counter of the transactions sent by the account; it stops a transaction from being replayed on the same chain)
- GasPrice (in wei per unit of gas)
- GasLimit (in units of gas, not wei: the most gas the transaction may use. The fee is the gas used times the gas price)
- Recipient (an ethereum address)
- Value (can be zero)
- Data (can be empty)
- v, r, s (the ECDSA signature. Since EIP-155,
valso encodes the chain ID, so a transaction signed for one chain cannot be replayed on another)
Also I made another video where I go into ethereum’s block explorer etherscan.io and point out all the parts we mentioned in a real world transaction. Watch it here:
Links in the video:
- First transaction
- Contract transaction
- Self-transaction done with the purpose to save data (a message in this case) in the blockchain
I hope you enjoyed this new video format. I registered it all in one shot without too much editing to optimize my time, so let me know in the comments if I messed up something, if you have questions or cool discussions to raise.
Update, 2026
The list above describes a legacy transaction, which is still valid. Since the London upgrade in 2021 (EIP-1559), most transactions are type 2 and look like this:
| Field | Meaning |
|---|---|
chainId |
The network the transaction is for (1 for mainnet, 11155111 for Sepolia). In legacy transactions it is folded into v (EIP-155); here it is a field of its own. |
nonce |
Same as before: the sender’s transaction counter. |
maxPriorityFeePerGas |
The tip per unit of gas for the block producer, in wei. |
maxFeePerGas |
The most you will pay per unit of gas, in wei. You pay the block’s base fee plus the tip, capped at this value; the base fee is burned. |
gasLimit |
The maximum gas the transaction may use, in units of gas. |
to, value, data |
Same as before. |
accessList |
Optional list of addresses and storage keys the transaction will touch (EIP-2930). |
yParity, r, s |
The signature. yParity is 0 or 1 and replaces v. |
In short, the single gasPrice of a legacy transaction becomes two fields, maxFeePerGas and maxPriorityFeePerGas. There are other transaction types too, such as type 1 (access lists only), type 3 (blob transactions for rollups, EIP-4844) and type 4 (EIP-7702, which lets an account set code), but type 2 is the one most wallets send by default.
Two more things changed since the video: Ethereum moved from proof of work to proof of stake in 2022, so blocks are produced by validators instead of miners, and the testnet to use is now Sepolia.