Tracker issue for all execution-api JSON RPC issues.
Most of these are visible / discovered via hive tests, but some are additional ones discovered (and more are likely to be discovered as these get worked on).
Some are also just spec / test vector / hive PITAs
For latest hive results on rpc-compat: https://hive.ethpandaops.io/#/test/generic/1769753159-b9b9d40703a67f0737e0eb880873ff13
Recurring issues over several methods:
block tag not parsing hash
Some calls are named "...ByNumber" or "...ByHash"
These will parse either:
- latest/safe/finalized and number
- block hash
Other calls without this specific naming however are often supposed parse latest/safe/finalized + number + hash.
Several failures are due to nimbus not implementing the hash part.
null vs omit vs error vs [ ]
null vs omitting the fields:
Our current JSON flavor is set to NOT omit null fields (= Opt.none(T)). This is because this behavior is actually expected/specified in engine_api (see status-im/nim-json-rpc#238).
I think ideally Hive would just not see this as an error, but just as an alternative, correct response.
But we could also adjust our JSON-RPC flavor for eth_ and debug_ method namespace. For this we need #3914 so that we can define different flavors per api.
null vs error:
We often return an error when a block (header, etc) is not found. The tests (and spec) however expect a null for not found and error for actual errors.
null vs empty array
In some cases there is also an empty array returned instead of null and vice versa.
Unimplemented EIP-1898
This will hit several endpoints as it is currently not implemented. No issues on hive however as no test vectors exist.
Execution API JSON-RPC issues per method
debug_getRawBlock
debug_getRawHeader
debug_getRawReceipts
debug_getRawReceipts
debug_getRawTransaction
eth_blobBaseFee
eth_call
eth_createAccessList
additionalProperties seems to be not there in our implementation? But also not in the test vectors? Just in the spec, wth is this..?
eth_estimateGas
eth_feeHistory
eth_getBalance
eth_getBlockByHash / eth_getBlockByNumber
Several issues:
eth_getBlockReceipts
eth_getLogs
eth_getProof
eth_getStorageAt
eth_getTransactionByBlockHashAndIndex
Some same TransactionObject issues as in eth_getBlockByHash
eth_getTransactionByBlockNumberAndIndex
same issues as for eth_getTransactionByBlockHashAndIndex
eth_getTransactionByHash
same issues as for eth_getTransactionByBlockHashAndIndex
And:
And:
eth_getTransactionReceipt
eth_sendRawTransaction
eth_simulateV1
eth_maxPriorityFeePerGas
Not being tested in hive rpc-compat, so no failures there.
eth_getStorageValues
testing_buildBlockV1
Tracker issue for all execution-api JSON RPC issues.
Most of these are visible / discovered via hive tests, but some are additional ones discovered (and more are likely to be discovered as these get worked on).
Some are also just spec / test vector / hive PITAs
For latest hive results on
rpc-compat: https://hive.ethpandaops.io/#/test/generic/1769753159-b9b9d40703a67f0737e0eb880873ff13Recurring issues over several methods:
block tag not parsing hash
Some calls are named "...ByNumber" or "...ByHash"
These will parse either:
Other calls without this specific naming however are often supposed parse latest/safe/finalized + number + hash.
Several failures are due to nimbus not implementing the hash part.
null vs omit vs error vs [ ]
nullvs omitting the fields:Our current JSON flavor is set to NOT omit null fields (=
Opt.none(T)). This is because this behavior is actually expected/specified inengine_api(see status-im/nim-json-rpc#238).I think ideally Hive would just not see this as an error, but just as an alternative, correct response.
But we could also adjust our JSON-RPC flavor for
eth_anddebug_method namespace. For this we need #3914 so that we can define different flavors per api.nullvs error:We often return an error when a block (header, etc) is not found. The tests (and spec) however expect a
nullfor not found and error for actual errors.nullvs empty arrayIn some cases there is also an empty array returned instead of null and vice versa.
Unimplemented EIP-1898
This will hit several endpoints as it is currently not implemented. No issues on hive however as no test vectors exist.
Execution API JSON-RPC issues per method
debug_getRawBlock
debug_getRawHeader
debug_getRawReceipts
debug_getRawReceipts
debug_getRawTransaction
eth_blobBaseFee
eth_call
eth_createAccessList
nullfields -> all 3 fixed with null omitadditionalPropertiesseems to be not there in our implementation? But also not in the test vectors? Just in the spec, wth is this..?eth_estimateGas
eth_estimateGasestimating 22 million gas when the other els are estimating 164 thousand #3763eth_feeHistory
eth_getBalance
eth_getBlockByHash / eth_getBlockByNumber
Several issues:
blockTimestampfield: Add blockTimestamp field to tx object in json-rpc methods #4111eth_getBlockReceipts
eth_getLogs
invalid log index
Block not found error code: "code": -- -32000 ++ -32602,
This is however so inconsistent, for example for getReceipts a null value is expected here. Not sure if this specified at all.
Need to error on: ++ "message": "invalid argument 0: cannot specify both BlockHash and FromBlock/ToBlock, choose one or the other"
Need to error on: ++ "message": "invalid block range params" -> on invalid range
eth_getProof
eth_getStorageAt
32602error codeeth_getTransactionByBlockHashAndIndex
Some same
TransactionObjectissues as ineth_getBlockByHashblockTimestampfieldeth_getTransactionByBlockNumberAndIndex
same issues as for
eth_getTransactionByBlockHashAndIndexeth_getTransactionByHash
same issues as for
eth_getTransactionByBlockHashAndIndexAnd:
And:
blockTimestampfieldeth_getTransactionReceipt
eth_sendRawTransaction
txErrorBasicValidationerrors on calls that should pass in testseth_simulateV1
eth_maxPriorityFeePerGas
eth_maxPriorityFeePerGas#3505Not being tested in hive
rpc-compat, so no failures there.eth_getStorageValues
testing_buildBlockV1