igneum/docs/build/build.md
igneum-labs dda5dedf44 Site reset to Igneum 2.0, first pass: /bench and /journey gone, no testnet, no 0.x history, the Igneum 2.0 devnet, the positioning line
- build.mjs no longer writes bench.html, journey.html or journey.json; the three files are deleted; /bench -> /evidence and
  /journey -> /live redirects (permanent: false); nav, footer, sitemap, capture routes and the site-nav-check groups drop them;
  link-check resolves literal vercel.json redirects and lists every link that leans on one (evidence.html: /bench, another hand)
- every testnet card, column, row, notice and link removed from the pages this lane owns; release manifest: the testnet entry
  gone, network igneum-devnet-4 "Igneum 2.0 devnet", the Devnet 3 genesis, digest, vote domain and floor lines dropped
- "Devnet 3" leaves every owned page; the devnet state is one constant in build.mjs (DEVNET_STATE, 'starting' now: the nav
  pill and the homepage badge read "Igneum 2.0 devnet starting"; 'live' flips both and re-enables the nav's live read)
- no 0.x release history: screenshot alt texts say the current build, the miner page's "Current build:" keeps the data-rm
  spans without the node version; miner-bench.json keeps the current-program rows only, no Counter ASIC names, no versions;
  /miners drops the earlier-classes table, the history note and the miner-version column
- /income keeps the calculator; the testnet-era tier tables (docs/analysis/income-tiers.md) are not served
- the positioning line is the first line of the footer partial (every page), the homepage meta description's first sentence
  and the hero's sub-line; share metas (site/og/pages.mjs) carry no Devnet 3 or zkEVM
- ledger-text-check is red on two index.html pins (X2, X31: the testnet sentences), owned by the ledger hand

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

6.7 KiB

Build on Igneum

This file is the source of igneum.network/build. The site build renders it as the page. The other files in this directory are the walkthrough, the RPC list, the faucet, the verifier and the grants.

What is different

Every block is built to be proven. A chain block carries a zero-knowledge proof of its execution. The miners are the provers: the same cards that find blocks prove them, in shards. On the devnet a share of blocks carries a proof today; the live page shows the share and the lag, and the design target at launch is under a minute. Full nodes execute every block themselves, so a bad proof is a light-client problem and never a chain split.

A lock in minutes, not an hour of confirmations. Miners sign a checkpoint every 30 seconds. When two thirds of the mining weight of the last 30 days have signed, the checkpoint is locked. Weight is blocks mined, nothing else. The lock lands in about two minutes. The litepaper has the rule.

Nothing to stake. No validator set, no delegation, no slashing, no bonded class above the miners. Finality comes from mining weight alone. Nobody holds a key that the chain depends on.

The EVM you already know. Solidity deploys unchanged. Standard JSON-RPC, EIP-1559 transactions, the chain id in the signature, cancun as the EVM version. Gas has two dimensions on Igneum, execution and proving, and the node folds the second into the price it quotes, so eth_estimateGas and eth_gasPrice work as they do on Ethereum.

Networks

Igneum 2.0 devnet
Chain id 4464 (0x1170)
Network id igneum-devnet-4
RPC https://rpc.devnet.igneum.network (a node you run serves http://127.0.0.1:26790)
Coins no value, resets without notice
Symbol, decimals IGN, 18
Machine-readable /release.json: the chain id, the source commits and fingerprints, the mining class, the finality rule, the proof program ids, the fee schedule and the current version per platform, with a generated date

The devnet is where you build today. It is a developer network: it resets without notice and its coins have no value. Its public RPC takes the read methods, eth_sendRawTransaction and a wRPC websocket at /ws, at 20 requests a second per address. Read the chain id with eth_chainId rather than fixing it, since a transaction signed for the wrong id is refused.

Mainnet has not started and has no date. Its chain id, 4461 (0x116d), is reserved in the node.

Endpoints and tools

Your first contract in five minutes

With Foundry. Tested end to end on the devnet on a build box; the full walkthrough with the expected output is docs/build/first-contract.md.

curl -L https://foundry.paradigm.xyz | bash && foundryup
export RPC=https://rpc.devnet.igneum.network
cast wallet new                      # an address and a private key, for the devnet only

Paste the address into the faucet. Then:

export PK=0x...                      # the private key cast printed
cast balance $(cast wallet address $PK) --rpc-url $RPC --ether
forge init counter && cd counter
forge create src/Counter.sol:Counter --rpc-url $RPC --private-key $PK --broadcast

forge create prints Deployed to: 0x.... Call it:

cast send 0xDEPLOYED "increment()" --rpc-url $RPC --private-key $PK
cast call 0xDEPLOYED "number()(uint256)" --rpc-url $RPC

The call answers 1. Paste the transaction hash into the explorer. Hardhat, ethers and viem work the same way: chain id 4464, the RPC above.

The RPC the node serves

Read from a devnet node, not from a spec. web3_clientVersion answers igneumd/2.1.0/execution-layer-v3. The full list, served and not served, with the probe that produced it: docs/build/rpc.md.

  • Served. eth_chainId, eth_blockNumber, eth_getBalance, eth_getTransactionCount, eth_getCode, eth_getStorageAt, eth_getBlockByNumber, eth_getBlockByHash, eth_getTransactionByHash, eth_getTransactionReceipt, eth_getBlockReceipts, eth_getLogs, eth_call, eth_estimateGas, eth_gasPrice, eth_maxPriorityFeePerGas, eth_feeHistory, eth_sendRawTransaction, eth_syncing, eth_accounts, net_version, net_peerCount, net_listening, web3_clientVersion.
  • Igneum's own. igneum_getExecStatus, igneum_getProvingStatus, igneum_getShardPlan, igneum_getProofRecords, igneum_getTransactionStatus, igneum_estimateGas, igneum_getBudgets and the segment and proof calls. igneum_estimateGas returns both gas dimensions and whether a call exceeds the proving limit.
  • Not served. Filters and subscriptions (eth_newFilter, eth_subscribe), txpool_*, debug_*, trace_*, eth_sendTransaction, eth_sign, eth_getProof, the uncle calls. Poll eth_blockNumber and eth_getLogs. Sign on your side.

Verify a block in your browser

The site ships a light client. Your browser fetches the latest certified checkpoint from /api/checkpoint and verifies the BLS aggregate signature, the voter weights and the header chain itself, in the tab. Nothing is trusted from the server but the data. The example, in twelve lines, is docs/build/verify-a-block.md; the live run is verify/test.html, genuine and tampered cases side by side.

import { fetchCheckpoint, verify } from 'https://igneum.network/verify/verify.js';
const data = await fetchCheckpoint('https://igneum.network/api/checkpoint');
const r = verify(data);
console.log(r.verified, r.signers, 'of', r.voters, 'voters', r.ms, 'ms');

Where to ask

Devnet coins have no value. Nothing on this page is an offer to sell anything.