igneum/docs/build/rpc.md
igneum-labs cb2b8a2578 Builder programme (8 October 2026): /build, /grants, the Devnet 3 faucet on build-1, docs/build as the source
- site/build.html and site/grants.html rendered by site/build.mjs from docs/build/build.md and docs/build/grants.md (the gate's site-only copy keeps the committed pages, as for /bench); site-relative links in the markdown renderer
- the nav's fourth group, Build (/build, /faucet, /grants), in the partial, the sheet, the footer, the sitemap and tools/ci/site-nav-check.mjs; the faucet leaves the Mine panel
- site/faucet.html is the Devnet 3 faucet: 10 IGN per address per day, 500 a day, chain id 4463, no value, resets without notice; the page posts to https://faucet.igneum.network/api/faucet and shows the balance
- infra/build-server/faucet: faucet.mjs (zero dependencies, signs with site/lib/eth.mjs, limiter self-test known-failed first, 100 IGN cap on the amount), the unit, faucet.sh install/status; live on build-1 behind Caddy since 10:16Z, funded 2,000 IGN by the fleet's funder at 10:01Z; first drip 0x8620e9d8 at 10:17Z
- docs/build: README, first-contract.md with its test script and the PASS line (24 s end to end through the public RPC and faucet, Foundry 1.8.5, Counter deployed at block 27055), rpc.md read from the node (75 methods probed, served and not served), faucet.md, verify-a-block.md, grants.md
- .forgejo/issue_template/grant.md: the grant application template on git.igneum.network

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 10:24:07 +00:00

5.2 KiB

The JSON-RPC a Devnet 3 node serves

Read from the node, not from a spec: every method below was sent to a Devnet 3 node on 8 October 2026 (web3_clientVersion answered igneumd/2.1.0/execution-layer-v3, eth_chainId 0x116f, block 26,666) and sorted by what came back. A method the node does not know answers JSON-RPC error -32601. The probe is at the end; run it against your own node to refresh this file.

Transport: HTTP POST, JSON-RPC 2.0, one request per call, no batches tested. The public endpoint is https://rpc.devnet.igneum.network; a node you run serves http://127.0.0.1:26790. The DAG side of the node (blocks, the mempool, the vote table) speaks the Kaspa-style gRPC and wRPC on their own ports; the explorer and the observer use those, a contract developer needs only what is here.

Served: the Ethereum set

Method Note
web3_clientVersion igneumd/<version>/execution-layer-v3
net_version the chain id as a decimal string, "4463"
net_listening, net_peerCount
eth_chainId 0x116f (4463) on Devnet 3; 0x1170 after its class v5 floor
eth_blockNumber the executed chain tip
eth_syncing false when the executor is at the tip
eth_mining false from the RPC's point of view: mining is the miner's, not the node's
eth_accounts always []: the node holds no keys
eth_protocolVersion 0x41
eth_gasPrice, eth_maxPriorityFeePerGas, eth_feeHistory EIP-1559 pricing; the proving dimension is folded into the quoted price
eth_getBalance, eth_getTransactionCount, eth_getCode, eth_getStorageAt by block tag or number
eth_getBlockByNumber, eth_getBlockByHash the EVM view of a chain block; null for an unknown hash
eth_getBlockTransactionCountByNumber
eth_getTransactionByHash, eth_getTransactionByBlockNumberAndIndex
eth_getTransactionReceipt, eth_getBlockReceipts
eth_getLogs by block range, address and topics
eth_call, eth_estimateGas as on Ethereum
eth_sendRawTransaction a signed EIP-155, EIP-1559 or legacy envelope; the chain id must match

Served: Igneum's own

Method What the answer carries (from the probe)
igneum_getExecStatus the executed tip, a continuity break if any, what the executor is blocked on
igneum_getProvingStatus whether proving is active, its activation height, assignees per shard, the dust rule
igneum_getShardPlan a block's shard plan: the DAA score, eligible keys, the epoch seed, the assignments
igneum_getProofRecords the proof records a block carries and claims
igneum_getTransactionStatus per transaction: in the mempool, included in, executed, locked
igneum_estimateGas both gas dimensions, the base fee, and exceedsProvingLimit
igneum_getBudgets the proving budgets: backlog depth, the base fee, chain blocks
igneum_getAssignedShards the shards assigned to this node's prover
igneum_getSegment, igneum_getSegmentRecords, igneum_getSegmentStatement a segment's executed blocks, records and statement
igneum_getSegmentProofBytes, igneum_getProofBytes the proof bytes for a key hash (keyHash is required)
igneum_exportSegments a range of segments with their accounts
igneum_exportExecSnapshot writes a snapshot to a path on the node's own disk
igneum_submitProofRecord, igneum_submitSegmentRecord the prover's submissions; a record is required

Not served

Each of these answered -32601 on 8 October 2026. Where a tool wants one, the note says what to do instead.

Method Instead
eth_newFilter, eth_newBlockFilter, eth_newPendingTransactionFilter, eth_getFilterChanges, eth_getFilterLogs, eth_uninstallFilter poll eth_blockNumber and eth_getLogs
eth_subscribe, eth_unsubscribe no WebSocket subscriptions; poll
eth_sendTransaction, eth_sign, eth_signTransaction the node holds no keys; sign on your side and use eth_sendRawTransaction
eth_getProof not yet
eth_getTransactionByBlockHashAndIndex, eth_getBlockTransactionCountByHash use the by-number forms
eth_getUncleByBlockHashAndIndex, eth_getUncleByBlockNumberAndIndex, eth_getUncleCountByBlockHash, eth_getUncleCountByBlockNumber there are no uncles; the DAG's merged blocks are not EVM blocks
eth_createAccessList, eth_simulateV1, eth_blobBaseFee not yet; no blobs
eth_coinbase, eth_hashrate the miner's, not the node's
txpool_content, txpool_status igneum_getTransactionStatus for one transaction
debug_traceTransaction, debug_traceBlockByNumber, trace_block no tracing yet
web3_sha3 hash on your side

The probe

Every method with a harmless argument; the verdict is served, not-found (-32601) or error (the node knows the method and refused the argument, which counts as served).

URL=http://127.0.0.1:26790
call() { curl -s -X POST -H 'content-type: application/json' \
  --data "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"$1\",\"params\":${2:-[]}}" "$URL"; }
for m in web3_clientVersion eth_chainId eth_blockNumber eth_newFilter eth_subscribe; do
  printf '%-32s %s\n' "$m" "$(call $m | cut -c1-80)"
done

Devnet 3 resets without notice and its coins have no value.