Account Proof
An Acccount Proof represents the account and storage values, including the Merkle proof, of the specified account.
Execution-Layer Proof A Patricia Merkle Proof is constructed for the account object in the execution layer. This proof includes the account’s
balance,nonce,codeHash, andstorageRoot, as well as separate proofs for all accessed storage keys. The resulting root of this proof corresponds to the block’s stateRoot. (Equivalent to the data returned byeth_getProof.)State Proof An SSZ Merkle Proof links the
stateRootfrom the execution layer to the ExecutionPayload, and further through the BeaconBlockBody to its root hash, which is included in the BeaconBlockHeader.Consensus Reference The BeaconBlockHeader is included in the proof to provide the
slotinformation, which identifies the sync committee period responsible for signing the corresponding block root.Sync Committee Signature The BLS aggregate signature from the sync committee of the following block is verified against the
SignDatacontaining the block hash. The signing domain is derived from the fork version and the Genesis Validator Root, confirming that the account data originates from a block included in the canonical chain.

This Proof is used for the following RPC-Methods:
EthStateProof
The stateRoot proof is used as part of different other types since it contains all relevant proofs to validate the stateRoot of the execution layer.
The Type is defined in src/chains/eth/ssz/verify_proof_types.h.
class EthStateProof(Container):
block : Union [ # the block to be proven
None, # no block-proof for latest
Bytes32, # proof for the right blockhash
Uint64] # proof for the right blocknumber
proof : List [bytes32, 256] # the merkle prooof from the executionPayload.state down to the blockBodyRoot hash
header : BeaconBlockHeader # the header of the beacon block
header_proof : Union [ # the proof for the correctness of the header
EthSignatureBlockProof, # proof fby provding signature of the sync_committee
EthHistoricBlockProof, # proof for a historic block using the state_root of a current block.
EthHeadersBlockProof] # proof block giving headers up to a verifyable header.Referenced Types
EthStorageProof
Represents the storage proof of a key. The value can be taken from the last entry, which is the leaf of the proof.
The Type is defined in src/chains/eth/ssz/verify_proof_types.h.
class EthStorageProof(Container):
key : Bytes32 # the key to be proven
proof : List [bytes_1024, 1024] # Patricia merkle proofEthAccountProof
The main proof data for an account.
The Type is defined in src/chains/eth/ssz/verify_proof_types.h.
class EthAccountProof(Container):
accountProof : List [bytes_1024, 256] # Patricia merkle proof
address : Address # the address of the account
storageProof : List [EthStorageProof, 256] # the storage proofs of the selected
state_proof : EthStateProof # the state proof of the accountReferenced Types
EthStorageProofData
Represents the storage proof of a key. The value can be taken from the last entry, which is the leaf of the proof.
The Type is defined in src/chains/eth/ssz/verify_data_types.h.
class EthStorageProofData(Container):
key : Bytes32 # the key
value : Bytes32 # the value
proof : List [bytesList, 1024] # Patricia merkle proof (simplified)EthProofData
Container type for storage proof data Account proof data as returned by eth_getProof. Contains the account state and Merkle proofs for account and storage values.
The Type is defined in src/chains/eth/ssz/verify_data_types.h.
class EthProofData(Container):
balance : Uint256 # the account balance
codeHash : Bytes32 # the hash of the contract code (empty for EOA)
nonce : Uint256 # the account nonce
storageHash : Bytes32 # the root hash of the storage trie
accountProof : List [bytesList, 256] # Patricia Merkle proof for the account (from state root to account)
storageProof : List [EthStorageProofData, 256] # the storage proofs for requested storage keysReferenced Types
Last updated