igneum-prove-core carries the node's fees.rs (PgasTable, FeeParams PROTOTYPE and CALIBRATED_V1, FeeSchedule::at); the shard input and every fixture carry the schedule and the block's DAA score; the executor reads the set at that score, raises the base fees to its floors and meters with its intrinsic, B_p and modexp entry, as the node's execute_segment does. The 328-byte statement is unchanged: the node's native veto pins the schedule (a new layout would be a consensus change for every node). Exporter: schedule and daaScore from the dump (gen.mjs writes them), per-segment switch on replay, S_p from the set. Fixtures from one simnet chain across the switch at DAA 800: fees-switch-prototype (block 51), fees-v1-shards2 (351), fees-v1-shards3 (355); 358 segments replayed, every state root the node's. Host tests on both sides. Guest re-pinned: shard 0x2b1a81cb..., aggregator 0x474678f3...; pinned-guests-check passes. Node fork 2b6d23ef unchanged (igneum-exec tests 11 passed). Digest for the override with fees_v1_activation_daa 210000: ab8847da538dead1dc10e046dfaadab3c1c35928e3748810c4e050d4a886087a. Runbook docs/plans/fee-switch-devnet.md; infra/devnet/restart-hand-nodes.sh and restart-seed.sh take the override object (the hand nodes and the seed run 20139145 today and must move to 2b6d23ef first). One line on the live page, spec 5.11, the testnet README, the floor analysis, the bench log and the journey. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| README.md | ||
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). Nothing is deployed; the testnet has no seed nodes yet (section 5).
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 | none (the list is filled when the seed nodes exist, docs/plans/seed-nodes.md) |
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 --netsuffix 1 (the flag --testnet is "Use the Igneum test network";
--netsuffix defaults to 10 in kaspad/src/args.rs and must be set to 1 until the default is changed, which is
one line and waits for the sign-off).
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 | proposed, not final | coins here have no value | resets are announced |
after the OP-FALSE script, as the devnet's igneum-devnet. The words "proposed, not final" are the proposal's and are part of the hashed genesis; the sign-off adopted the genesis as computed. Changing the message is one print_genesis_hashes run and a new hash, and must happen before the first public node starts, never after (docs/plans/release-0.3.6.md, section 6) |
| Hash | 52a3e6a9ddd79d603ff9e3a27487fb5d0ca5ca6f633fe20ca727e1faa355fc7e |
computed 4 October 2026 by print_genesis_hashes on the branch (pinned by test_genesis_hashes, re-run green on release-0.3.6 on 5 October 2026); changes with any field above |
| Merkle root | 3060aab78494de3cbda68619c0132300aa486dc3153dbb78b50a430f053b3a84 |
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 |
one line in kaspad/src/args.rs, still to do (not in the 0.3.6 merge; --netsuffix 1 must be passed until then) |
| Seed nodes and the DNS seeder list | docs/plans/seed-nodes.md; the list in TESTNET_PARAMS is empty on purpose |
| The public RPC and explorer | site/wallet.html carries a placeholder RPC URL until they exist |
| The prover's table mirror and fixtures | docs/analysis/base-fee-floor.md section 4 |
| The app's testnet build | the app's packaged config names the network; igneum-testnet-1 needs the network and ports there (app/igneum-app/src/config.rs, Runtime.network) |
| 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 |