Skip to main content
Version: 1.39.0

proof namespace

proof_call

Executes a call against the state at the given block (analogous to eth_call) and returns the call output together with the execution witness — flat lists of state-trie node RLP, loaded contract bytecode, accessed keys, and RLP-encoded block headers emitted in ascending block-number order (any block whose hash was read via the BLOCKHASH opcode comes first, and the executed-against header is always the last entry). The witness is sufficient for a stateless verifier to independently re-execute the call.

curl localhost:8545 \
-X POST \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 0,
"method": "proof_call",
"params": [tx, blockParameter]
}'

proof_getProofWithMeta

Returns the same payload as eth_getProof plus per-call diagnostics: nodeLookups (total trie-node fetches), cacheHits (of those, served from the in-process trie store cache), and maxDepth (deepest level reached in the account or any storage trie, in nibbles). Useful as a client-agnostic proxy for the work an EL does to serve a proof. The proof field has the same shape and content as eth_getProof's result; duplicate storageKeys are deduplicated, matching the existing eth_getProof behaviour.

curl localhost:8545 \
-X POST \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 0,
"method": "proof_getProofWithMeta",
"params": [accountAddress, storageKeys, blockParameter]
}'

proof_getTransactionByHash

Returns the same data as eth_getTransactionByHash plus a Merkle-Patricia proof of the transaction's inclusion in the block's transactionsRoot. When includeHeader is true, the RLP-encoded block header is also returned, allowing the proof to be verified against the block's transactionsRoot.

curl localhost:8545 \
-X POST \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 0,
"method": "proof_getTransactionByHash",
"params": [txHash, includeHeader]
}'

proof_getTransactionReceipt

Returns the same data as eth_getTransactionReceipt plus Merkle-Patricia proofs of the transaction's inclusion in the block's transactionsRoot and of the receipt's inclusion in the block's receiptsRoot. When includeHeader is true, the RLP-encoded block header is also returned, allowing proofs to be verified against the block's roots.

curl localhost:8545 \
-X POST \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 0,
"method": "proof_getTransactionReceipt",
"params": [txHash, includeHeader]
}'