igneum/docs/testnet/README.md
igneum-labs 19358aa292 Merge fee-switch into release-0.3.9: the prover mirrors both fee tables and fees_v1_activation_daa (new pinned guest), the devnet runbook for H = 210,000
Conflicts: proving/igneum-prove/export/src/main.rs (the two use lines: master's ensure kept, fee-switch's FeeParams and FeeSchedule taken, SHARD_PROVING_GAS_BUDGET gone), docs/bench-log.md (both entries), docs/testnet/README.md (both sentences), site/index.html and site/journey.json (master's, then node site/build.mjs: 518 links, 0 broken).
2026-10-05 16:28:21 +00:00

8.3 KiB

Igneum public testnet: identity, parameters and reset policy (ADOPTED 5 October 2026)

Every value in this file was proposed on the night of 4 October 2026 and ADOPTED by the owner on 5 October 2026, as proposed (sign-off recorded in docs/plans/release-0.3.6.md). The genesis below is the one the proposal computed; its values did not change at the sign-off, so the hash stands. The code was written on the node fork's branch testnet-params (worktree vendor/igneum-node-testnet, forked from finality-fixes at 6aa69a45) and merged on 5 October 2026 into the fork's release-0.3.6 (worktree vendor/igneum-node-036), with one change the sign-off added: the devnet and the simnet keep the prototype fee set until a height switch (fees_v1_activation_daa) or a fees object in the override file moves them; the testnet and the mainnet carry calibrated v1 from genesis (section 3). The devnet's switch is DAA score 210,000 (5 October 2026, docs/plans/fee-switch-devnet.md). The three seed nodes went up on 5 October 2026 from the final genesis below (docs/plans/testnet-go.md); nothing mines until the owner's go.

1. Identity

Field Devnet (live today) Testnet (adopted) Where
Network id (handshake string, data directory) igneum-devnet igneum-testnet-1 consensus/core/src/network.rs, NetworkId::to_prefixed
Network type and suffix Devnet, none Testnet, suffix 1 config/params.rs, From<NetworkId>: only suffix 1 resolves; any other suffix is refused
EVM chain id 4463 4462 consensus/core/src/evm.rs, evm_chain_id (mainnet 4461)
Address prefix igneumdev igneumtest crypto/addresses
gRPC port 26610 26810 network.rs, default_rpc_port
P2P port 26611 26811 network.rs, default_p2p_port (a later suffix takes the next port)
wRPC Borsh, JSON 27610, 28610 27810, 28810 network.rs
EVM JSON-RPC port 26790 26890 igneum/exec/src/config.rs, default_evm_rpc_port
DNS seeders none seed1.testnet.igneum.network, seed2.testnet.igneum.network, seed3.testnet.igneum.network (A records on deSEC, infra/seed-nodes/dns.sh; Nuremberg, Ashburn, Singapore) TESTNET_PARAMS.dns_seeders
Override file (--override-params-file) allowed refused, as on mainnet kaspad/src/daemon.rs
IGNEUM_POW_* environment ignored by the node from this branch (G12: the params' schedule is installed on every start) ignored kaspad/src/daemon.rs

Start a node on it: igneumd --testnet (the flag --testnet is "Use the Igneum test network"; --netsuffix defaults to 1 in kaspad/src/args.rs since 5 October 2026, so --netsuffix=1 is implied). The public JSON-RPC is https://rpc.testnet.igneum.network (seed1, nginx with TLS and a rate limit, an allowlist of eth_* and igneum_* read methods plus eth_sendRawTransaction; infra/seed-nodes/rpc/).

2. Genesis

Field Value Note
Timestamp 1,791,158,400,000 ms = 2026-10-05T00:00:00Z (0x1a1095c3400) frozen; adopted 5 October 2026
Bits 0x1d100000 (2^28 expected hashes per block) the devnet's launch difficulty, sized for a few hundred MH/s; the DAA takes over after 150 samples (600 blocks); re-size to the announced launch fleet
Nonce, DAA score 0, 0
UTXO commitment empty
Coinbase payload message igneum-testnet-1 | 2026-10-05 | coins here have no value | resets are announced after the OP-FALSE script, as the devnet's igneum-devnet. FINAL 5 October 2026 (fork branch testnet-infra, 1c19441d): the proposal's "proposed, not final" was dropped before the first public node started, as docs/plans/release-0.3.6.md section 6 required. The message never changes again on igneum-testnet-1
Hash 87617621714af1bf33bd17f291f90a7e0bff760a669bba53083ea8c0f7cbd840 computed 5 October 2026 by print_genesis_hashes (two runs: the merkle root first, then the header hash over it), pinned by test_genesis_hashes and igneum_testnet_identity; the three seeds started from it at height 0 the same day. The proposal's hash 52a3e6a9... is void
Merkle root 44acfc40b1c6647011510f3c39ddb7606f979df92ad26a2914de56e44610efad same

3. Consensus parameters

Parameter Testnet (adopted) Devnet today Why
Block rate 1 per second 1 per second spec 02
Difficulty rule Igneum dual-lane, v2 from genesis dual-lane, v2 from DAA 33,000 a fresh chain has no pre-switch history
Finality parameters FinalityParams::MAINNET: 30-day weight window (2,592,000 DAA), dust 100, presence 240, 8 aggregators, 30-day equivocation ban, min DAA 2,592,000, certificate fold 6 DEVNET: 2-hour window, dust 5, presence 20, fold 3 the testnet runs the rule the mainnet will run; the first lock needs 30 days of weight, which is the point of a testnet
Finality rule v3 from genesis from the override file fresh chain
Proving v0 payouts from genesis from the override file fresh chain
PoW schedule epoch 3,600 DAA, lead 600, day 86,400,000 ms (the defaults) same
Coinbase payload limit 16,384 (the finality section) same
Fees FeeParams::CALIBRATED_V1 from genesis (fees_v1_activation_daa 0; docs/analysis/base-fee-floor.md): B_p 120,000 pgas, S_p 30,000, intrinsic 300, modexp 10 + 1 per 10 bytes, floors 100 gwei per gas and 10,000 gwei per pgas FeeParams::PROTOTYPE (B_p 30 M, 1 gwei), kept on the 0.3.6 node so the live chain does not change rules between builds; moves to v1 by the fees_v1_activation_daa height switch in the override file (docs/plans/release-0.3.6.md, section 5) spec 05 section 5.10
Emission the mainnet schedule: 31.69 IGN per block in year one, halving every two years, cap 4 billion same the testnet coins have no value whatever the schedule says

Everything else (mass limits, GHOSTDAG k, merge depth, pruning) is the devnet's set, unchanged.

4. Reset policy

Rule Adopted 5 October 2026
Coins Testnet IGN has no value, cannot be bought, sold or redeemed, and is not a claim on anything at mainnet. Mainnet starts from an empty genesis. No airdrop, no points, no promise tied to a testnet balance
When the chain resets When a consensus rule changes (the lottery hash, the difficulty rule, finality, the fee table, the execution rules) and a height switch is not the right tool; or when the chain is broken beyond a height switch
Notice At least N = 7 days ahead, on igneum.network (the download page and the live page), in the app through the update manifest's note, and in the engineering log. A reset without notice is a bug report, not a policy
What carries over Nothing. Balances, contracts, nonces and history start again. Addresses stay valid (an address is a key)
Identity after a reset A consensus-changing reset takes the next suffix (igneum-testnet-2, chain id unchanged at 4462, P2P port 26812), so a node on the old rules never completes a handshake with the new chain
The devnet Keeps resetting without notice; it is a developer network. Its chain id 4463 stays separate
Who decides The project, by the sign-off that this file records; the parameters the genesis rules leave to miners (B_p, the floors) move by 60% signalling once the testnet has miners (spec 5.5)

5. What stands between this file and a public testnet

Item State
Sign-off of every value above done: adopted by the owner on 5 October 2026, as proposed
--netsuffix default 1 under --testnet done 5 October 2026 (fork testnet-infra 1c19441d)
Seed nodes and the DNS seeder list done 5 October 2026: three Hetzner seeds (infra/seed-nodes/seeds-testnet.tsv), the three names in TESTNET_PARAMS.dns_seeders; docs/plans/testnet-go.md
The public RPC and explorer the RPC is https://rpc.testnet.igneum.network (5 October 2026); the explorer is not built
The prover's table mirror and fixtures docs/analysis/base-fee-floor.md section 4
The app's testnet build branch testnet-app (5 October 2026): the packaged file's network, peers, public_rpc; the testnet's ports, seeds and node directory in app/igneum-app/src/config.rs; the release engineer cuts 0.4.0 from it at go
The params digest in the handshake (X18) separate work, before the testnet
Terms on the download page site/index.html#testnet-terms, on branch testnet-prep with this file