ZENANET DocsBeta
RPC & Contracts

JSON-RPC Reference

Ethereum JSON-RPC and WebSocket methods on ZENANET, with parameters and request/response examples

ZENANET runs an Ethereum JSON-RPC server and a Cosmos SDK REST server side by side. Both expose the same chain state through different interfaces. This page catalogs the JSON-RPC and WebSocket side. Click any row to expand its parameters and examples. The Cosmos REST side is on the REST API Reference page.

FamilyMainnetTestnetNode port
Ethereum JSON-RPC (HTTP)https://evm.zena-ai.iohttps://evm-testnet.zena-ai.io (Temporarily unavailable)8545
Ethereum JSON-RPC (WebSocket)wss://evm.zena-ai.io/wswss://evm-testnet.zena-ai.io/ws (Temporarily unavailable)8546
Cosmos REST (gRPC-Gateway)https://api.zena-ai.iohttps://api-testnet.zena-ai.io1317
CometBFT RPChttps://rpc.zena-ai.io26657

Temporarily unavailable: The testnet EVM endpoints (https://evm-testnet.zena-ai.io, wss://evm-testnet.zena-ai.io/ws) are currently suspended. The addresses are kept for reference and will work again when the service resumes.

ItemValue
EVM Chain ID15150 (0x3b2e)
Base denomaznnt (18 decimals), display unit ZNNT
bech32 prefixzenanet1…
Native coin as ERC-20 (token pair)0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
Transfer(address,address,uint256) topic0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Which endpoint should I use?

What you want to doUseNotes
Look up a tx / receipt / logs by 0x hashevmeth_getTransactionByHash, eth_getTransactionReceipt
Full transfer history of one tokenevmeth_getLogs with address = token, in 10,000-block chunks
ERC-20 balance, name, symbol, decimalsevmeth_call
Blocks, native balance, gas, contract codeevmEverything a standard EVM explorer needs
Connect MetaMask / ethers / viem / FoundryevmChain ID 15150
Real-time subscriptionsevm (ws)eth_subscribe
All txs sent or received by one addressapimessage.sender, ethereum_tx.recipient. The EVM API has no per-address tx list
Look up a Cosmos tx by 64-char HEX hashapiMsgSend, staking, governance, IBC
All denoms for a zenanet1… address, IBC tokensapi/cosmos/bank/v1beta1/balances
Token pairs, base fee, module paramsapi/cosmos/evm/…
Staking, validators, governance, consensusapi or rpcNot exposed through the EVM interface

Explorer-style routes such as /transactions, /token-transfers, or /search belong to the Blockscout API v2, not to the node. They only exist once a Blockscout instance is indexing the node over JSON-RPC (including the debug namespace). Everything below is served by the node itself.

Transactions

EVM transactions use a 0x hash. Every EVM transaction is also wrapped in a Cosmos transaction (MsgEthereumTx), so it has a second, 64-character HEX hash. Cosmos-hash lookups live on the REST API Reference.

POSTeth_getTransactionByHashTransaction by hashevm.zena-ai.io

A mined transaction has blockNumber and blockHash filled in. A transaction still in the mempool is returned with those set to null. Unknown hashes return result: null.

Parameters

NameInDescription
hashrequiredparams[0]0x-prefixed 32-byte transaction hash

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getTransactionByHash",
  "params": ["0x<txhash>"]
}'

Response (main fields)

{
  "blockHash": "0x…", "blockNumber": "0x1a2b", "transactionIndex": "0x0",
  "hash": "0x…", "from": "0x…", "to": "0x…", "value": "0xde0b6b3a7640000",
  "gas": "0x5208", "gasPrice": "0x3b9aca00", "maxFeePerGas": "0x…", "maxPriorityFeePerGas": "0x…",
  "nonce": "0x7", "input": "0x", "type": "0x2", "chainId": "0x3b2e", "v": "0x0", "r": "0x…", "s": "0x…"
}
POSTeth_getTransactionReceiptReceipt: status, gas used, logsevm.zena-ai.io

status is 0x1 for success and 0x0 for a revert. Contract-creation transactions have contractAddress set. The logs array holds emitted events such as ERC-20 Transfer.

Parameters

NameInDescription
hashrequiredparams[0]Transaction hash

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getTransactionReceipt",
  "params": ["0x<txhash>"]
}'

Response (main fields)

{
  "status": "0x1", "transactionHash": "0x…", "blockNumber": "0x1a2b",
  "from": "0x…", "to": "0x…", "contractAddress": null,
  "gasUsed": "0xcf08", "cumulativeGasUsed": "0xcf08", "effectiveGasPrice": "0x3b9aca00",
  "logs": [
    { "address": "0x<token>", "topics": ["0xddf252ad…", "0x000…from", "0x000…to"], "data": "0x…amount", "logIndex": "0x0" }
  ],
  "logsBloom": "0x…", "type": "0x2"
}
POSTeth_getTransactionLogsOnly the logs of one transaction (Cosmos EVM extension)evm.zena-ai.io

Returns just the logs array instead of the whole receipt. This method does not exist on standard Ethereum nodes.

Parameters

NameInDescription
hashrequiredparams[0]Transaction hash

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getTransactionLogs",
  "params": ["0x<txhash>"]
}'

Response (main fields)

[
  { "address": "0x<token>", "topics": ["0xddf252ad…", "0x000…", "0x000…"], "data": "0x…",
    "blockNumber": "0x1a2b", "transactionHash": "0x…", "logIndex": "0x0" }
]
POSTeth_getTransactionByBlockNumberAndIndexTransaction by block number and indexevm.zena-ai.io

Returns the n-th transaction of a block. eth_getTransactionByBlockHashAndIndex is the block-hash variant.

Parameters

NameInDescription
blockrequiredparams[0]Hex block number, or latest / earliest / pending / safe / finalized
indexrequiredparams[1]Hex transaction index within the block

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getTransactionByBlockNumberAndIndex",
  "params": ["0x1a2b", "0x0"]
}'

Response (main fields)

Same object as eth_getTransactionByHash.

POSTeth_getTransactionCountAccount nonce (number of sent transactions)evm.zena-ai.io

Parameters

NameInDescription
addressrequiredparams[0]0x address
blockrequiredparams[1]Block tag. Use pending to get the nonce for the next transaction

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getTransactionCount",
  "params": ["0x<address>", "pending"]
}'

Response (main fields)

"0x7"

Token Transfers and Logs

ERC-20 transfers are found through the Transfer event. The full history of one token is eth_getLogs with address set to the token. The list of transactions for one address is not available over JSON-RPC. Use the REST tx search for that. Plain EVM value transfers and Cosmos MsgSend emit no logs and are only visible there.

POSTeth_getLogsTransfer logs of a token (the core query)evm.zena-ai.io

Put the token contract in address and the Transfer signature in topics[0]. topics[1] is from and topics[2] is to. With default node settings a single call is capped at 10,000 blocks and 10,000 logs, so scan long histories in chunks.

Parameters

NameInDescription
addressfilterToken contract address. Accepts an array. The native coin is 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
fromBlock / toBlockfilterHex block numbers or tags. Range must be within 10,000 blocks
topicsfilter[Transfer signature, from (optional), to (optional)]. Addresses are left-padded to 32 bytes. null matches anything
blockHashfilterRestrict to one block. Mutually exclusive with fromBlock / toBlock

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getLogs",
  "params": [{
    "address": "0x<token_contract>",
    "fromBlock": "0x1000",
    "toBlock": "0x3000",
    "topics": [
      "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
      null,
      "0x000000000000000000000000<wallet_without_0x>"
    ]
  }]
}'

Response (main fields)

[
  {
    "address": "0x<token_contract>",
    "topics": ["0xddf252ad…", "0x000000000000000000000000<from>", "0x000000000000000000000000<to>"],
    "data": "0x0000000000000000000000000000000000000000000000000de0b6b3a7640000",
    "blockNumber": "0x1a2b", "transactionHash": "0x…", "transactionIndex": "0x0", "logIndex": "0x0", "removed": false
  }
]
POSTeth_call · ERC-20 viewsbalanceOf, name, symbol, decimals, totalSupplyevm.zena-ai.io

Calls ERC-20 view functions. data is the 4-byte selector followed by ABI-encoded arguments. The result is ABI-encoded hex.

Parameters

NameInDescription
torequiredparams[0].toToken contract
datarequiredparams[0].databalanceOf 0x70a08231 + padded address · name 0x06fdde03 · symbol 0x95d89b41 · decimals 0x313ce567 · totalSupply 0x18160ddd
blockparams[1]latest

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_call",
  "params": [{
    "to": "0x<token_contract>",
    "data": "0x70a08231000000000000000000000000<wallet_without_0x>"
  }, "latest"]
}'

Response (main fields)

"0x0000000000000000000000000000000000000000000000056bc75e2d63100000"

uint256, here 10^20 base units.

WSeth_subscribe · logsLive Transfer logs of one tokenevm.zena-ai.io/ws

Connect to wss://evm.zena-ai.io/ws. Browsers send an Origin header, and the node only accepts hosts listed in its ws-origins setting.

Parameters

NameInDescription
typerequiredparams[0]"logs"
filterparams[1]address and topics, same shape as eth_getLogs without a block range

Request

{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_subscribe",
  "params": ["logs", {
    "address": "0x<token_contract>",
    "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
  }]
}

Response (main fields)

// subscription id
{ "jsonrpc": "2.0", "id": 1, "result": "0xcd0c3e8af590364c09d0fa6a1210faf5" }
// then, for every matching log
{ "jsonrpc": "2.0", "method": "eth_subscription",
  "params": { "subscription": "0xcd0c…", "result": { "address": "0x…", "topics": ["…"], "data": "0x…", "transactionHash": "0x…" } } }

Blocks

POSTeth_blockNumberLatest block numberevm.zena-ai.io

No parameters.

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1, "method": "eth_blockNumber", "params": []
}'

Response (main fields)

"0x1a2b"
POSTeth_getBlockByNumberBlock by numberevm.zena-ai.io

Block tags latest, earliest, pending, safe, and finalized are all accepted. ZENANET has instant finality, so latest and finalized are the same block.

Parameters

NameInDescription
blockrequiredparams[0]Hex block number, or latest / earliest / pending / safe / finalized
fullTxrequiredparams[1]true returns full transaction objects, false returns hashes only

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getBlockByNumber",
  "params": ["0x1a2b", true]
}'

Response (main fields)

{
  "number": "0x1a2b", "hash": "0x…", "parentHash": "0x…", "timestamp": "0x66f1a2b3",
  "miner": "0x…", "gasLimit": "0x2625a00", "gasUsed": "0x5208", "baseFeePerGas": "0x3b9aca00",
  "size": "0x2f3", "transactions": [ { "hash": "0x…", "from": "0x…", "to": "0x…" } ], "logsBloom": "0x…"
}
POSTeth_getBlockByHashBlock by hashevm.zena-ai.io

Parameters

NameInDescription
hashrequiredparams[0]Block hash
fullTxrequiredparams[1]true / false

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getBlockByHash",
  "params": ["0x<blockhash>", false]
}'

Response (main fields)

Same object as eth_getBlockByNumber.

POSTeth_getBlockReceiptsAll receipts of a block in one callevm.zena-ai.io

Indexers and explorers use this to read a whole block without calling eth_getTransactionReceipt per transaction.

Parameters

NameInDescription
blockrequiredparams[0]Hex block number, a tag, or an object { "blockHash": "0x…" }

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getBlockReceipts",
  "params": ["0x1a2b"]
}'

Response (main fields)

An array of eth_getTransactionReceipt objects.

POSTeth_getBlockTransactionCountByNumberNumber of transactions in a blockevm.zena-ai.io

eth_getBlockTransactionCountByHash is the block-hash variant.

Parameters

NameInDescription
blockrequiredparams[0]Hex block number or tag

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getBlockTransactionCountByNumber",
  "params": ["latest"]
}'

Response (main fields)

"0x3"

Accounts and State

The same key is 0x… on the EVM side and zenanet1… on the Cosmos side. Convert with zenad debug addr <address>.

POSTeth_getBalanceNative coin balance (wei, 18 decimals)evm.zena-ai.io

Parameters

NameInDescription
addressrequiredparams[0]0x address
blockrequiredparams[1]latest or another block tag

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getBalance",
  "params": ["0x<address>", "latest"]
}'

Response (main fields)

"0xde0b6b3a7640000"

1 ZNNT. Divide by 10^18 for the display unit.

POSTeth_getCodeContract bytecodeevm.zena-ai.io

Returns 0x for an externally owned account. Use it to tell contracts from wallets.

Parameters

NameInDescription
addressrequiredparams[0]0x address
blockrequiredparams[1]latest

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getCode",
  "params": ["0x<address>", "latest"]
}'

Response (main fields)

"0x6080604052…"
POSTeth_getStorageAtStorage slot valueevm.zena-ai.io

Parameters

NameInDescription
addressrequiredparams[0]Contract address
slotrequiredparams[1]Hex storage slot
blockrequiredparams[2]latest

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getStorageAt",
  "params": ["0x<contract>", "0x0", "latest"]
}'

Response (main fields)

"0x0000000000000000000000000000000000000000000000000000000000000000"

Chain and Fees

POSTeth_chainIdEVM chain IDevm.zena-ai.io

No parameters.

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1, "method": "eth_chainId", "params": []
}'

Response (main fields)

"0x3b2e"

Decimal 15150.

POSTeth_gasPriceSuggested gas price (base fee + tip)evm.zena-ai.io

No parameters.

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1, "method": "eth_gasPrice", "params": []
}'

Response (main fields)

"0x3b9aca00"
POSTeth_maxPriorityFeePerGasSuggested priority fee (tip)evm.zena-ai.io

No parameters.

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1, "method": "eth_maxPriorityFeePerGas", "params": []
}'

Response (main fields)

"0x0"
POSTeth_feeHistoryBase fee and tip history of recent blocksevm.zena-ai.io

Parameters

NameInDescription
blockCountrequiredparams[0]Hex number of blocks. At most 100 with default node settings
newestBlockrequiredparams[1]latest or a block number
rewardPercentilesparams[2]Array such as [25, 50, 75]

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_feeHistory",
  "params": ["0xa", "latest", [25, 75]]
}'

Response (main fields)

{ "oldestBlock": "0x1a21", "baseFeePerGas": ["0x3b9aca00", "0x3b9aca00"], "gasUsedRatio": [0.01, 0.02], "reward": [["0x0", "0x0"]] }
POSTeth_syncingSync statusevm.zena-ai.io

No parameters. false means the node is fully synced.

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1, "method": "eth_syncing", "params": []
}'

Response (main fields)

false

Execution and Sending

POSTeth_callRead-only contract callevm.zena-ai.io

Does not change state. With default node settings the gas cap is 25,000,000 and the timeout is 5 seconds.

Parameters

NameInDescription
txrequiredparams[0]{ to, data, from (optional), value (optional) }
blockparams[1]latest

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_call",
  "params": [{ "to": "0x<contract>", "data": "0x<calldata>" }, "latest"]
}'

Response (main fields)

"0x…"

ABI-encoded return value.

POSTeth_estimateGasGas estimateevm.zena-ai.io

Parameters

NameInDescription
txrequiredparams[0]{ from, to, data, value }

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_estimateGas",
  "params": [{ "from": "0x<from>", "to": "0x<to>", "value": "0xde0b6b3a7640000" }]
}'

Response (main fields)

"0x5208"
POSTeth_sendRawTransactionBroadcast a signed transactionevm.zena-ai.io

Sends a transaction signed on the client. The result is the transaction hash. Check the outcome with eth_getTransactionReceipt.

Parameters

NameInDescription
rawTxrequiredparams[0]0x-prefixed signed RLP bytes

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_sendRawTransaction",
  "params": ["0x02f8…"]
}'

Response (main fields)

"0x<txhash>"
POSTeth_createAccessListBuild an EIP-2930 access listevm.zena-ai.io

Parameters

NameInDescription
txrequiredparams[0]{ from, to, data }
blockparams[1]latest

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_createAccessList",
  "params": [{ "to": "0x<contract>", "data": "0x…" }, "latest"]
}'

Response (main fields)

{ "accessList": [ { "address": "0x…", "storageKeys": ["0x…"] } ], "gasUsed": "0x…" }

Real-time and Filters

WebSocket subscriptions use wss://evm.zena-ai.io/ws. For HTTP polling, create a filter with eth_newFilter and poll eth_getFilterChanges. A node keeps at most 200 filters, and idle filters expire.

WSeth_subscribe · newHeadsNew block headersevm.zena-ai.io/ws

Parameters

NameInDescription
typerequiredparams[0]"newHeads"

Request

{ "jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["newHeads"] }

Response (main fields)

{ "jsonrpc": "2.0", "method": "eth_subscription",
  "params": { "subscription": "0x…", "result": { "number": "0x1a2c", "hash": "0x…", "timestamp": "0x…" } } }
WSeth_subscribe · newPendingTransactionsHashes of transactions entering the mempoolevm.zena-ai.io/ws

Parameters

NameInDescription
typerequiredparams[0]"newPendingTransactions"

Request

{ "jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["newPendingTransactions"] }

Response (main fields)

{ "method": "eth_subscription", "params": { "subscription": "0x…", "result": "0x<txhash>" } }
WSeth_unsubscribeCancel a subscriptionevm.zena-ai.io/ws

Parameters

NameInDescription
idrequiredparams[0]Subscription id

Request

{ "jsonrpc": "2.0", "id": 2, "method": "eth_unsubscribe", "params": ["0xcd0c3e8af590364c09d0fa6a1210faf5"] }

Response (main fields)

true
POSTeth_newFilterCreate a log filter for HTTP pollingevm.zena-ai.io

Parameters

NameInDescription
filterrequiredparams[0]{ address, topics, fromBlock, toBlock }, same as eth_getLogs

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_newFilter",
  "params": [{
    "address": "0x<token_contract>",
    "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
  }]
}'

Response (main fields)

"0x1"
POSTeth_getFilterChangesNew logs since the last pollevm.zena-ai.io

Returns only what changed since the previous call. A filter created with eth_newBlockFilter returns block hashes instead.

Parameters

NameInDescription
idrequiredparams[0]Filter id

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_getFilterChanges",
  "params": ["0x1"]
}'

Response (main fields)

An array of log objects, same shape as eth_getLogs.

POSTeth_uninstallFilterRemove a filterevm.zena-ai.io

Parameters

NameInDescription
idrequiredparams[0]Filter id

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "eth_uninstallFilter",
  "params": ["0x1"]
}'

Response (main fields)

true

Debug and Mempool

These namespaces are only available when the node operator adds debug and txpool to json-rpc.api in app.toml. Public nodes usually keep them closed.

POSTdebug_traceTransactionExecution trace including internal callsevm.zena-ai.io

With callTracer the result is the tree of internal transactions. Explorer features like Blockscout's internal-transactions list are built from this output.

Parameters

NameInDescription
hashrequiredparams[0]Transaction hash
configparams[1]{ "tracer": "callTracer" } and other tracer options

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "debug_traceTransaction",
  "params": ["0x<txhash>", { "tracer": "callTracer" }]
}'

Response (main fields)

{ "type": "CALL", "from": "0x…", "to": "0x…", "value": "0x0", "gas": "0x…", "gasUsed": "0x…", "input": "0x…",
  "calls": [ { "type": "CALL", "from": "0x…", "to": "0x…", "input": "0x…" } ] }
POSTdebug_traceBlockByNumberTrace every transaction in a blockevm.zena-ai.io

Parameters

NameInDescription
blockrequiredparams[0]Hex block number
configparams[1]Tracer options

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1,
  "method": "debug_traceBlockByNumber",
  "params": ["0x1a2b", { "tracer": "callTracer" }]
}'

Response (main fields)

[ { "txHash": "0x…", "result": { "type": "CALL", "from": "0x…", "to": "0x…" } } ]
POSTtxpool_statusPending and queued counts in the mempoolevm.zena-ai.io

No parameters.

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1, "method": "txpool_status", "params": []
}'

Response (main fields)

{ "pending": "0x2", "queued": "0x0" }
POSTtxpool_contentEvery transaction in the mempoolevm.zena-ai.io

No parameters.

Request

curl -s https://evm.zena-ai.io -H 'Content-Type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1, "method": "txpool_content", "params": []
}'

Response (main fields)

{ "pending": { "0x<from>": { "7": { "hash": "0x…", "to": "0x…", "value": "0x…" } } }, "queued": {} }

Query Limits (node defaults)

SettingDefaultMeaning
block-range-cap10,000Max block range for one eth_getLogs call
logs-cap10,000Max logs returned per call
filter-cap200Max concurrently installed filters
fee-history-cap100Max blocks per eth_feeHistory call
gas-cap25,000,000Gas limit for eth_call and eth_estimateGas
evm-timeout5sTimeout for eth_call

Running Your Own Node

[json-rpc]
enable = true
api = "eth,net,web3,txpool,debug"   # default is eth,net,web3
enable-indexer = true               # recommended for fast lookups by tx hash
ws-origins = ["127.0.0.1", "localhost", "app.example.com"]

[api]
enable = true
enabled-unsafe-cors = true          # only if browsers call REST :1317 directly

With enable-indexer off, eth_getTransactionByHash falls back to a CometBFT tx_search on every call. This gets slower as the chain grows, so always enable it on public RPC nodes.

On this page