13 KiB
Igneum public testnet: identity, parameters and reset policy (ADOPTED 5 October 2026; genesis RE-CUT 7 October 2026; the GO object re-cut on the 0.3.23 line at 18 decimals by the project lead's word of 21:35 BST)
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 5 October genesis (docs/plans/testnet-go.md); nothing mines until the owner's go.
RE-CUT 7 October 2026 (the project lead's approvals of 09:3x UK, docs/plans/ledger-decisions.md "Decisions (7 October 2026, 09:3x UK)"):
one cut with 18 decimals (O-2.6, the 16-byte coinbase subsidy), EmissionSchedule::TESTNET_1, and every switch on from
genesis. The genesis hash and the consensus digest below are the re-cut's; the seeds still hold the 5 October chain at
height 0 and move to the re-cut binary only on the project lead's go (docs/plans/testnet-go.md, the cut-over runbook). Fork branch
testnet-genesis-2-node (release-0.3.18-node e69e8a39, the decimals branch df2fbd03, the vote-or-burn removal 420f9305).
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 |
| Coinbase payload subsidy field | 16 little-endian bytes, one IGN = 10^18 base units | the 18-decimal layout (O-2.6, docs/design/base-unit.md section 3); block 1 merges the genesis and reads this field at the network's unit |
| Hash | 01294fd322704dc28fbef0e7a5ef86d6ee260ac5efaf88891cdba661b5fd58ac |
RE-CUT 7 October 2026, computed on igneum-build-1 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 5 October hash 87617621... (8-byte subsidy layout, the chain the seeds hold at height 0 until the cut-over) and the proposals 52a3e6a9... and 494fc9a3... are void |
| Merkle root | bcd0e8fb1099aeb3cc1370b50e6dec9f615e204374b2097f25b2438e7d22f49f |
same (5 October: 44acfc40...) |
| Consensus digest | 63faee44f50eccd3d68c970efbc39edee2977a4f0fbf4baa833aa5ef5de3577a |
exchanged in the p2p handshake; a peer with another digest is refused. Pinned by igneum_testnet_identity; the whole object as override-file JSON is infra/seed-nodes/testnet-object.json (print_testnet_object). The 5 October digest b7d8c915... and the re-cut's interim digests 9390d235..., 80af8aa1... and 4fbb2152... are void. The devnet's c562d70e... is unchanged |
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 and v3 from genesis (difficulty_v3_activation_daa 0) |
dual-lane, v2 from DAA 33,000, v3 by the override file | 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, leave delay 3,600 |
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 |
| The DAA-second finality rule (C1) | from genesis (finality_daa_rule_activation_daa 0): a checkpoint every 30 s of chain time at any block rate |
by the override file | re-cut 7 October 2026 |
| The signed leave item (W7) | from genesis (finality_leave_activation_daa 0, delay 3,600 DAA s): a key that announces its departure is in no denominator an hour later |
never until the 95 percent signal | the project lead, 6 October 2026, question 4 |
| The signing bonus, no burn | from genesis (signing_bonus_activation_daa 0, signing_bonus_bps 1,000): a tenth of a silent producer's subsidy share moves to the proving pool; nothing is ever destroyed; vote-or-burn is out of the tree (420f9305) |
never | the project lead, 7 October 2026, row 2 |
| Consensus proof verification | from genesis (proving_consensus_verify_daa 0) under the shard program id 0x2b1a81cb...ef7a and the aggregator id 0x474678f3...3896 of proving/igneum-prove/elf/manifest.json (pinned 2026-10-05T16:20:38Z); a node whose embedded keys differ refuses to start; a Windows node verifies through the installed igneum-prove-host and refuses to start without it |
off | the project lead, 6 October 2026, question 3 |
| Program class | v4 from genesis, unconditional (program_class_v4_activation_daa 0, signal window 0) |
v4 by miner signal | fresh chain |
| The latency ladder | active from genesis at rung 0 (latency_ladder_activation_daa 0, window 86,400 DAA, seven windows at 90 percent to step): rungs 27, 35, 53 passes admissible; 88 inadmissible (quiet-core re-measure 7 October 2026, 08:46 UK: 10.85 ms cold with the SMT sibling loaded, over the 10 ms gate); 173 and 267 inadmissible |
never | the project lead, 7 October 2026, row 3 |
| Base unit | 18 decimals (base_unit_decimals 18): one IGN is 10^18 base units, the EVM's wei, the bridge is the identity |
8 (sompi) | the project lead, 6 October 2026, question 5, CONFIRMED 7 October 2026, 21:35 BST for the go object on the 0.3.23 line; docs/design/base-unit.md |
| Per-block subsidy on the EVM side | from genesis (subsidy_per_block_activation_daa 0): each merged block credited the subsidy of its own DAA, as the UTXO coinbase pays it |
at an upgrade height with 0.3.19 | the project lead, 7 October 2026, 09:5x UK |
| Genesis forward-compatibility (mission item 8) | from genesis: sig_scheme 0 (BLS12-381) with sig_scheme_activation_daa 0 (every vote item and key reveal carries the scheme byte; any other scheme refused until a program class the 95 percent signal moves to names it), finality_succession_activation_daa 0 (W5: a vote key hands its window weight and forfeit term to a successor once), the ladder's cache rung 512 MiB inadmissible until measured, behind its own switch (latency_ladder_cache_rung_activation_daa 0) |
never | the project lead, 7 October 2026, 10:1x UK; docs/design/genesis-forward.md |
| 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 | EmissionSchedule::TESTNET_1 at 18 decimals: 100 IGN a block at 1 bps, a monthly glide with a two-year half-life, a 90-day ramp from 10 percent, a tail of 1 percent of supply a year from the month the glide first pays under it (about year 11.4), no hard cap (docs/analysis/tail-emission.md) |
CURRENT: 31.69 IGN per block in year one, halving every two years, cap 4 billion |
the project lead, 7 October 2026, row 1; 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) | done: 9390d235... for the re-cut object |
| The seeds on the re-cut genesis | NOT DONE: the three seeds hold the 5 October chain at height 0; the cut-over (new binary, wiped data directory, the digest line read back on each) runs on the project lead's go, docs/plans/testnet-go.md |
| Terms on the download page | site/index.html#testnet-terms, on branch testnet-prep with this file |