Ethereum is the World Computer: a globally shared utility that exists between a network of 1000s of computers. Users interact with Ethereum through a wallet (like MetaMask), which creates and sends transactions to the network.
Once accepted, the transactions are written into a block.
An Ethereum transaction is made of up 3 parts:
- metadata, including to/from, $ETH amount, gas details and signature data
- cache, a list of accounts and keys the transaction expects to use
- data, the payload of the transaction (smart contract code or API call)
(Cache is the term I use; the accessList is not officially delineated)
Contains the accessList, a list of addresses and keys the transaction anticipates using. The transaction will still be able to use resources off this list, but at a higher (gas)cost.
The accessList was added by EIP-2929, allowing clients to fetch/cache data to be used during the transaction.
Today, the discount for using addresses & keys in the accessList is ~10%. However, this will increase in the future as Ethereum moves to support light clients.
The data payload being delivered by the transaction. This can be used in 3 ways:
![]() |
![]() |
Data in the input field is recorded in binary, but can be translated back to a human readable form.
The input field exists on-chain, but is not part of the EVM state. It simply provides data for the contract to use during the transaction, it is not tracked by Ethereum nor used in consensus.
The EVM can only use data supplied in that transaction; it cannot look back.
This property becomes useful for applications that want to write historical data to the Ethereum blockchain (eg for manual retrieval later) but don't care about having direct EVM access.
Source Material - Original Tweet
Source Material - PDF