When using eth_getTransactionReceipt on very old transactions (pre EIP-658 / pre Byzantium), Erigon incorrectly omits the root field in the response, and makes up an unexpected status field.
The Ethereum JSON-RPC specification requires root to be present for pre-Byzantium transactions:
root : DATA 32 bytes of post-transaction stateroot (pre Byzantium)
status: QUANTITY either 1 (success) or 0 (failure)
Erigon seems to always reply with a status and without a root, irrespective of the corresponding original spec fork. This seems to be a regression since #2211, but it may have also been broken before.
It is important that the intermediate post-state root is provided for pre-Byzantium transactions; otherwise it is impossible to cryptographically verify that the JSON-RPC API response was not tampered with. The verification compares the provided receipt data against the block header's receipts_root. The technical background for the transition from root to status with Byzantium can be found here: https://eips.ethereum.org/EIPS/eip-658
System information
Cloudflare Ethereum Gateway
Cloudflare technical support referred to Erigon for support with this issue.
When using
eth_getTransactionReceipt
on very old transactions (pre EIP-658 / pre Byzantium), Erigon incorrectly omits theroot
field in the response, and makes up an unexpectedstatus
field.The Ethereum JSON-RPC specification requires
root
to be present for pre-Byzantium transactions:Erigon seems to always reply with a
status
and without aroot
, irrespective of the corresponding original spec fork. This seems to be a regression since #2211, but it may have also been broken before.It is important that the intermediate post-state
root
is provided for pre-Byzantium transactions; otherwise it is impossible to cryptographically verify that the JSON-RPC API response was not tampered with. The verification compares the provided receipt data against the block header'sreceipts_root
. The technical background for the transition fromroot
tostatus
with Byzantium can be found here: https://eips.ethereum.org/EIPS/eip-658System information
Cloudflare Ethereum Gateway Cloudflare technical support referred to Erigon for support with this issue.
Chain/Network: Mainnet
Expected behaviour
Infura response is correct and includes
root
:Actual behaviour
Cloudflare response lacks
root
and includesstatus
:Steps to reproduce the behaviour