Transaction Proof

represents the account and storage values, including the Merkle proof, of the specified account.

  1. The payload of the transaction is used to create its SSZ Hash Tree Root.

  2. The SSZ Merkle Proof from the Transactions of the ExecutionPayload to the BlockBodyRoot. (Total Depth: 29)

  3. BeaconBlockHeader is passed because also need the slot in order to find out which period and which sync committee is used.

  4. Signature of the SyncCommittee (taken from the following block) is used to verify the SignData where the blockhash is part of the message and the Domain is calculated from the fork and the Genesis Validator Root.

This Proof is used for the following RPC-Methods:

EthTransactionProof

the main proof data for a single transaction.

The Type is defined in src/chains/eth/ssz/verify_proof_types.h.

class EthTransactionProof(Container):
    transaction              : Bytes[1073741824]  # the raw transaction payload
    transactionIndex         : Uint32             # the index of the transaction in the block
    blockNumber              : Uint64             # the number of the execution block containing the transaction
    blockHash                : Bytes32            # the blockHash of the execution block containing the transaction
    baseFeePerGas            : Uint64             # the baseFeePerGas
    proof                    : List [bytes32, 64] # the multi proof of the transaction, blockNumber and blockHash
    header                   : BeaconBlockHeader  # the header of the beacon block
    historic_proof           : Union [            # optional historic proof. If non null, the block is verified by this proof and the signature confirm the future block.
        None,                                     # no block-proof for latest
        EthHistoricBlockProof,                    # proof for a historic block using the state_root
        EthHeadersBlockProof]                     # proof block giving headers
    sync_committee_bits      : BitVector [512]    # the bits of the validators that signed the block
    sync_committee_signature : ByteVector [96]    # the signature of the sync committee

Referenced Types

EthAccessListData

Entry in the access list of a transaction or call.

The Type is defined in src/chains/eth/ssz/verify_data_types.h.

class EthAccessListData(Container):
    address     : Address
    storageKeys : List [bytes32, 256]

EthAuthorizationListData

Entry in the authorization list of a transaction or call.

The Type is defined in src/chains/eth/ssz/verify_data_types.h.

class EthAuthorizationListData(Container):
    address : Address # the codebase to be used for the authorization
    chainId : Uint32  # the chainId of the transaction
    nonce   : Uint64  # nonce of the transaction
    r       : Bytes32 # the r value of the transaction
    s       : Bytes32 # the s value of the transaction
    yParity : Uint8   # the yParity of the transaction

EthTxData

the transaction data as result of an eth_getTransactionByHash rpc-call. Supports all transaction types including Optimism Deposited Transactions (0x7E)

The Type is defined in src/chains/eth/ssz/verify_data_types.h.

class EthTxData(Container):
    _optmask              : OptMask[4]                           # the bitmask defining the fields to be included
    blockHash             : Bytes32                              # the blockHash of the execution block containing the transaction
    blockNumber           : Uint64                               # the number of the execution block containing the transaction
    hash                  : Bytes32                              # the blockHash of the execution block containing the transaction
    transactionIndex      : Uint32                               # the index of the transaction in the block
    type                  : Uint8                                # the type of the transaction
    nonce                 : Uint64                               # the nonce of the transaction
    input                 : Bytes[1073741824]                    # the raw transaction payload
    r                     : Bytes32                              # the r value of the transaction
    s                     : Bytes32                              # the s value of the transaction
    chainId               : Uint32                               # the s value of the transaction
    v                     : Uint8                                # the v value of the transaction
    gas                   : Uint64                               # the gas limnit
    from                  : Address                              # the sender of the transaction
    to                    : Bytes[20]                            # the target of the transaction
    value                 : Uint256                              # the value of the transaction
    gasPrice              : Uint64                               # the gas price of the transaction
    maxFeePerGas          : Uint64                               # the maxFeePerGas of the transaction
    maxPriorityFeePerGas  : Uint64                               # the maxPriorityFeePerGas of the transaction
    accessList            : List [EthAccessListData, 256]        # the access list of the transaction
    authorizationList     : List [EthAuthorizationListData, 256] # the access list of the transaction
    blobVersionedHashes   : List [bytes32, 16]                   # the blobVersionedHashes of the transaction
    yParity               : Uint8                                # the yParity of the transaction
    sourceHash            : Bytes32                              # unique identifier for deposit origin (OP Stack only)
    mint                  : Uint256                              # ETH value to mint on L2 (OP Stack only) - rendered as uint
    isSystemTx            : Boolean                              # system transaction flag as bytes (OP Stack only) - rendered as uint
    depositReceiptVersion : Uint8                                # deposit receipt version (OP Stack only) - rendered as uint

Referenced Types

Last updated