Ethereum On-chain Data
A review of Ethereum data structures
On-chain data in Ethereum is stored in four different mappings, each of which are encoded in a Merkle-Patricia trie. Each block header contains commitments to these four tries, thereby committing to all of the current Ethereum state. The types of data this comprises are:
- State trie: This is a mapping between
rlpdenotes the RLP serialization and
acctis the array
[nonce, balance, storageRoot, codeHash]of information associated to each Ethereum account.
- Storage trie: Each account has a storage trie which is a mapping between
rlp(slotValue)which encodes the storage of each account, which is a mapping between the
- Transaction trie: Each block also commits to the transactions in that block via a mapping between the encoded transaction index
rlp(txIndex)and the serialization
- Receipt trie: Finally, the receipts trie commits to a mapping between the encoded receipt index
rlp(receiptIndex)and the serialization
The block header of each block contains the roots
receiptsRoot, which together commit to each of these tries and thus all of the Ethereum on-chain data.