JSON-RPC Compatibility
Conflux eSpace implements the Web3 JSON-RPC protocol.
Check out the following video to get a quick overview of this topic:
- JSON-RPC Compatibility Video
Methods
| Method | Status | Note |
|---|---|---|
| web3_clientVersion | ✅ | |
| net_version | ✅ | |
| eth_protocolVersion | ✅ | |
| eth_chainId | ✅ | |
| eth_gasPrice | ✅ | |
| eth_blockNumber | ✅ | |
| eth_getBalance | ✅ | |
| eth_getStorageAt | ✅ | |
| eth_getCode | ✅ | |
| eth_getTransactionCount | ✅ | |
| eth_sendRawTransaction | ✅ | |
| eth_submitTransaction | ✅ | |
| eth_call | ✅ | |
| eth_estimateGas | ✅ | |
| eth_getTransactionByHash | ✅ | |
| eth_getTransactionReceipt | ✅ | |
| eth_getLogs | ✅ | The max gap between fromBlock and toBlock is limited to 1000 |
| eth_getBlockByHash | ✅ | |
| eth_getBlockByNumber | ✅ | |
| eth_getBlockTransactionCountByHash | ✅ | |
| eth_getBlockTransactionCountByNumber | ✅ | |
| eth_getTransactionByBlockHashAndIndex | ✅ | |
| eth_getTransactionByBlockNumberAndIndex | ✅ | |
| eth_syncing | ✅ | |
| eth_hashrate | ✅ | |
| eth_coinbase | ✅ | |
| eth_mining | ✅ | |
| eth_maxPriorityFeePerGas | ✅ | |
| eth_accounts | ✅ | |
| eth_submitHashrate | ✅ | |
| eth_getUncleByBlockHashAndIndex | ✅ | |
| eth_getUncleByBlockNumberAndIndex | ✅ | |
| eth_getUncleCountByBlockHash | ✅ | |
| eth_getUncleCountByBlockNumber | ✅ | |
| parity_getBlockReceipts | ✅ | |
| eth_pendingTransactions | 🚧 | |
| web3_sha3 | 🚧 | |
| trace_block | ✅ | Parity RPC |
| trace_filter | ✅ | Parity RPC |
| trace_transaction | ✅ | Parity RPC |
| eth_feeHistory | ✅ | Supported at v2.4.0 |
| eth_getFilterChanges | ✅ | Supported at v2.1.1 |
| eth_getFilterLogs | ✅ | Supported at v2.1.1 |
| eth_newBlockFilter | ✅ | Supported at v2.1.1 |
| eth_newFilter | ✅ | Supported at v2.1.1 |
| eth_newPendingTransactionFilter | ✅ | Supported at v2.1.1 |
| eth_uninstallFilter | ✅ | Supported at v2.1.1 |
| debug_traceTransaction | ✅ | Supported at v2.4.0 |
| debug_traceBlockByHash | ✅ | Supported at v2.4.0 |
| debug_traceBlockByNumber | ✅ | Supported at v2.4.0 |
| net_listening | ❌ | |
| net_peerCount | ❌ | |
| eth_compileLLL | ❌ | |
| eth_compileSerpent | ❌ | |
| eth_compileSolidity | ❌ | |
| eth_getCompilers | ❌ | |
| eth_getProof | ❌ | EIP-1186 |
| eth_getWork | ❌ | |
| db_* | ❌ | |
| shh_* | ❌ | |
Legend: ❌ = not supported. 🚧 = work in progress. ✅ = supported.
Notes
eth_sendRawTransactionsupports legacy(EIP-155), type-1(EIP-2930) and type-2(EIP-1559) transactions. Type-3 transactions (EIP-4844) transactions are not supported yet.- Methods not listed here are also not supported.
- There is no concept of uncle (aka ommer) blocks. The
eth_getUncleByBlockHashAndIndexandeth_getUncleByBlockNumberAndIndexmethods always returnnull. Theeth_getUncleCountByBlockHashandeth_getUncleCountByBlockNumbermethods return zero for valid block IDs andnullfor invalid block IDs. Additionally, uncle-related block metadata such assha3Unclesis sha3 of empty hash array. - The nonstandard Geth tracing APIs are not supported at present
- The nonstandard Parity tracing APIs are in progress
extra burntGasFee field of transaction receipts
The implementation of 1559 in Conflux eSpace differs slightly from Ethereum. The base fee of the transaction is not entirely burned; instead, it is partially burned according to a certain ratio, with the remaining part still serving as the miner's revenue. An additional field burntGasFee is added to the transaction receipt (e.g. got from eth_getTransactionReceipt RPC) to record the amount of fees that is burned.
For more information, please refer to CIP-137.
pending tag
Only eth_getTransactionCount method has supported pending tag. Other method will treat pending tag as latest
- eth_getTransactionCount ✅
- eth_getBalance
- eth_getCode
- eth_getStorageAt
- eth_call
Note: filter related methods also not support pending tag
Data verifiability
Below fields can not guarantee the verifiability
Block
- hash
- stateRoot
- receiptsRoot
- transactionsRoot
- totalDifficulty
Receipt
- logsBloom
pub/sub
Starting from v2.1.0 newHeads and logs is supported