6.7 KiB
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 |