{ "proposal": { "title": "Add Specs: Ethereum", "description": "Adding new specification support for relaying Ethereum data on Lava", "specs": [ { "index": "ETH1", "name": "ethereum mainnet", "enabled": true, "reliability_threshold": 268435455, "data_reliability_enabled": true, "block_distance_for_finalized_data": 8, "blocks_in_finalization_proof": 3, "average_block_time": 13000, "allowed_block_lag_for_qos_sync": 2, "shares": 1, "min_stake_provider": { "denom": "ulava", "amount": "47500000000" }, "api_collections": [ { "enabled": true, "collection_data": { "api_interface": "jsonrpc", "internal_path": "", "type": "POST", "add_on": "" }, "apis": [ { "name": "eth_accounts", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_blockNumber", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_call", "block_parsing": { "parser_arg": [ "1" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_chainId", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_coinbase", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_compileLLL", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_createAccessList", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_estimateGas", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 100, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_feeHistory", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_gasPrice", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0, "timeout_ms": 1000 }, { "name": "eth_getBalance", "block_parsing": { "parser_arg": [ "1" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getBlockByHash", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getBlockByNumber", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getBlockReceipts", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getBlockTransactionCountByHash", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getBlockTransactionCountByNumber", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getCode", "block_parsing": { "parser_arg": [ "1" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getCompilers", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getFilterChanges", "block_parsing": { "parser_arg": [ "1" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getFilterLogs", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 60, "enabled": true, "category": { "deterministic": false, "local": true, "subscription": true, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getLogs", "block_parsing": { "parser_arg": [ "0", "toBlock" ], "parser_func": "PARSE_CANONICAL" }, "compute_units": 80, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getProof", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getStorageAt", "block_parsing": { "parser_arg": [ "2" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getTransactionByBlockHashAndIndex", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getTransactionByBlockNumberAndIndex", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getTransactionByHash", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getTransactionCount", "block_parsing": { "parser_arg": [ "1" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getTransactionReceipt", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getUncleByBlockHashAndIndex", "block_parsing": { "parser_arg": [ "" ], "parser_func": "EMPTY" }, "compute_units": 15, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getUncleByBlockNumberAndIndex", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 15, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getUncleCountByBlockHash", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getUncleCountByBlockNumber", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_getWork", "block_parsing": { "parser_arg": [ "" ], "parser_func": "EMPTY" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_hashrate", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_maxPriorityFeePerGas", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_mining", "block_parsing": { "parser_arg": [ "" ], "parser_func": "EMPTY" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_newBlockFilter", "block_parsing": { "parser_arg": [ "" ], "parser_func": "EMPTY" }, "compute_units": 20, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_newFilter", "block_parsing": { "parser_arg": [ "0", "toBlock" ], "parser_func": "PARSE_CANONICAL" }, "compute_units": 20, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_newPendingTransactionFilter", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 20, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_protocolVersion", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_sendRawTransaction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 1, "hanging_api": true }, "extra_compute_units": 0 }, { "name": "eth_sendTransaction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 1, "hanging_api": true }, "extra_compute_units": 0 }, { "name": "eth_sign", "block_parsing": { "parser_arg": [ "" ], "parser_func": "EMPTY" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_signTransaction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_subscribe", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": true, "subscription": true, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_syncing", "block_parsing": { "parser_arg": [ "" ], "parser_func": "EMPTY" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_uninstallFilter", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": true, "subscription": true, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "eth_unsubscribe", "block_parsing": { "parser_arg": [ "" ], "parser_func": "EMPTY" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": true, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "net_listening", "block_parsing": { "parser_arg": [ "" ], "parser_func": "EMPTY" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "net_peerCount", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "net_version", "block_parsing": { "parser_arg": [ "" ], "parser_func": "EMPTY" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "rpc_modules", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 1, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "web3_clientVersion", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 20, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "web3_sha3", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 15, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 } ], "headers": [], "inheritance_apis": [], "parse_directives": [ { "function_template": "{\"jsonrpc\":\"2.0\",\"method\":\"eth_blockNumber\",\"params\":[],\"id\":1}", "function_tag": "GET_BLOCKNUM", "result_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "api_name": "eth_blockNumber" }, { "function_tag": "GET_BLOCK_BY_NUM", "function_template": "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBlockByNumber\",\"params\":[\"0x%x\", false],\"id\":1}", "result_parsing": { "parser_arg": [ "0", "hash" ], "parser_func": "PARSE_CANONICAL", "encoding": "hex" }, "api_name": "eth_getBlockByNumber" }, { "function_template": "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBlockByNumber\",\"params\":[\"earliest\", false],\"id\":1}", "function_tag": "GET_EARLIEST_BLOCK", "result_parsing": { "parser_arg": [ "0", "number" ], "parser_func": "PARSE_CANONICAL", "encoding": "hex" }, "api_name": "eth_getBlockByNumber" } ], "verifications": [ { "name": "chain-id", "parse_directive": { "function_template": "{\"jsonrpc\":\"2.0\",\"method\":\"eth_chainId\",\"params\":[],\"id\":1}", "function_tag": "VERIFICATION", "result_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG", "encoding": "hex" }, "api_name": "eth_chainId" }, "values": [ { "expected_value": "0x1" } ] }, { "name": "pruning", "parse_directive": { "function_tag": "GET_EARLIEST_BLOCK" }, "values": [ { "latest_distance": 6646 }, { "extension": "archive", "expected_value": "0x0" } ] }, { "name": "trustless-rpc", "parse_directive": { "function_template": "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getCode\",\"params\":[\"0x0000000000000000000000000000000000000000\",\"latest\"],\"id\":1}", "function_tag": "VERIFICATION", "result_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG", "encoding": "hex" }, "api_name": "eth_getCode" }, "values": [ { "expected_value": "*" } ] } ], "extensions": [ { "name": "archive", "cu_multiplier": 5, "rule": { "block": 6554 } } ] }, { "enabled": true, "collection_data": { "api_interface": "jsonrpc", "internal_path": "", "type": "POST", "add_on": "debug" }, "apis": [ { "name": "debug_getBadBlocks", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 200, "enabled": true, "category": { "deterministic": false, "local": true, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_getRawBlock", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 50, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_getRawHeader", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 50, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_getRawReceipts", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 50, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_getRawTransaction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 50, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_storageRangeAt", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 200, "enabled": true, "category": { "deterministic": true, "local": true, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_traceBlock", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 20, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_traceBlockByHash", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 100, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_traceBlockByNumber", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 100, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_traceCall", "block_parsing": { "parser_arg": [ "1" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 100, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "debug_traceTransaction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 100, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 } ], "verifications": [ { "name": "enabled", "parse_directive": { "function_template": "{\"jsonrpc\":\"2.0\",\"method\":\"debug_getRawHeader\",\"params\":[\"latest\"],\"id\":1}", "function_tag": "VERIFICATION", "result_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG", "encoding": "hex" }, "api_name": "debug_getRawHeader" }, "values": [ { "expected_value": "*" } ] } ], "extensions": [ { "name": "archive", "cu_multiplier": 5, "rule": { "block": 6554 } } ] } ] }, { "index": "SEP1", "name": "ethereum testnet sepolia", "enabled": true, "imports": [ "ETH1" ], "reliability_threshold": 268435455, "data_reliability_enabled": true, "block_distance_for_finalized_data": 7, "blocks_in_finalization_proof": 3, "average_block_time": 13000, "allowed_block_lag_for_qos_sync": 2, "min_stake_provider": { "denom": "ulava", "amount": "47500000000" }, "api_collections": [ { "enabled": true, "collection_data": { "api_interface": "jsonrpc", "internal_path": "", "type": "POST", "add_on": "" }, "apis": [], "headers": [], "inheritance_apis": [], "parse_directives": [], "verifications": [ { "name": "chain-id", "values": [ { "expected_value": "0xaa36a7" } ] } ] } ] }, { "index": "HOL1", "name": "ethereum testnet holesky", "enabled": true, "imports": [ "ETH1" ], "reliability_threshold": 268435455, "data_reliability_enabled": true, "block_distance_for_finalized_data": 7, "blocks_in_finalization_proof": 3, "average_block_time": 13000, "allowed_block_lag_for_qos_sync": 2, "min_stake_provider": { "denom": "ulava", "amount": "47500000000" }, "api_collections": [ { "enabled": true, "collection_data": { "api_interface": "jsonrpc", "internal_path": "", "type": "POST", "add_on": "" }, "apis": [], "headers": [], "inheritance_apis": [], "parse_directives": [], "verifications": [ { "name": "chain-id", "values": [ { "expected_value": "0x4268" } ] } ] } ] } ] }, "deposit": "10000000ulava" }