igneum/docs/testnet/README.md
igneum-labs fd07ef569f Merge origin/testnet-prep (28f6ccc) into testnet-adopt: testnet identity, fee floors and pgas table adopted 5 October 2026, G13 signed build inputs, release-0.3.6 plan
Owner's decision, 5 October 2026: the proposed testnet identity (docs/testnet/README.md) and the proposed fee floors
and prover-gas table (docs/analysis/base-fee-floor.md, spec 05 section 5.10) are adopted as proposed. The three
documents now say "adopted 5 October 2026" with the sign-off noted and the per-network rule written in: the testnet
and the mainnet carry calibrated v1 from genesis; the devnet and the simnet keep the prototype set until the
fees_v1_activation_daa height switch (fork branch release-0.3.6) moves them.

Conflicts (generated site files): index.html keeps the 0.3.5 dev-fee sentence and testnet-prep's testnet-terms card;
litepaper.html keeps the 0.3.5 two-paragraph dev-fee text and testnet-prep's MetaMask paragraph; journey.json keeps
the 0.3.5 feed (newest 40); sitemap.xml keeps /miners and /wallet. Site rebuilt with node site/build.mjs.

Also: infra/fast-time/override-60x.json carries fees_v1_activation_daa 0 (the fork's fast-time test wants every
override field); docs/plans/release-0.3.6.md (the inputs push must run from this tree before the workflow verifies
the signature; the devnet rollout of the fee floor as a height switch; the morning order).

Checks: node site/build.mjs; link-check 324 links 0 broken; check-workflow-shell 0 findings; test-inputs-signing.sh
16 of 16 with the signer built from this tree; bash -n on the four shell files; the PowerShell parse rule at the
0.3.5 baseline (3 hits, unchanged).

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

7.8 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). 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