igneum/docs/testnet
igneum-labs 28f6cccbf7 testnet README: the genesis hash as test_genesis_hashes pins it on the fork branch
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 23:49:22 +00:00
..
README.md testnet README: the genesis hash as test_genesis_hashes pins it on the fork branch 2026-10-04 23:49:22 +00:00

Igneum public testnet: identity, parameters and reset policy (PROPOSED, 4 October 2026, night)

Every value in this file is PROPOSED. The project signs the parameters off in the morning; the genesis is not final until then, and a signed-off genesis is recomputed from the final values with the fork's print_genesis_hashes test. The code lives on the node fork's branch testnet-params (worktree vendor/igneum-node-testnet, forked from finality-fixes at 6aa69a45), unit-tested, not merged, not deployed.

1. Identity

Field Devnet (live today) Testnet (proposed) 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; proposed
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
Hash 52a3e6a9ddd79d603ff9e3a27487fb5d0ca5ca6f633fe20ca727e1faa355fc7e computed 4 October 2026 by print_genesis_hashes on the branch (pinned by test_genesis_hashes); changes with any field above
Merkle root 3060aab78494de3cbda68619c0132300aa486dc3153dbb78b50a430f053b3a84 same

3. Consensus parameters

Parameter Testnet (proposed) 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 (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 the same set on this branch; the live devnet runs the prototype (B_p 30 M, 1 gwei) 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 Proposed
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 waits for the morning
--netsuffix default 1 under --testnet one line in kaspad/src/args.rs, after the sign-off
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