Skip to content
Testnet

Protocol · NIP-028

30-second blocks

From block 10, the testnet produces a block every 30 seconds instead of every 60. Confirmations arrive twice as fast, while the reward per block is halved and its schedule stretched, so the coins issued per day and the length of each reward step stay exactly as before. Mainnet keeps 60-second blocks; NIP-028 is not scheduled there.

Measured live

Is it really 30 seconds?

Figures from the public RPC and the explorer, refreshed every 30 seconds.

Last 100 blocks — Average spacing
Explorer average — Target 30 s
Block reward now —
Difficulty algorithm —

Before and after

What changed at block 10

Blocks 1–9From block 10
Target block time 60 s 30 s
Block reward 50,000 XNA 25,000 XNA
Reward step (−5%) Every 14,400 blocks Every 28,800 blocks
Time between reward steps ≈ 10 days ≈ 10 days
Coins issued per day ≈ 72,000,000 XNA ≈ 72,000,000 XNA
Maximum reorg depth 60 blocks 120 blocks
Reorg depth in time 60 minutes 60 minutes
Block version Any valid version Bit 0x40000000 required
Peers accepted Any supported protocol Protocol 70029 or newer

The reward follows 50,000 × 0.95n ÷ 2 XNA, where n counts the 28,800-block steps. Blocks 1–9 paid 50,000 XNA each, with the 60-second schedule.

Consensus

How the switch is enforced

  • Difficulty. Dark Gravity Wave averages the last 180 blocks against each block's own target spacing, so a window that straddles block 10 adjusts gradually instead of jumping.
  • Version bit. Every block from height 10 must set 0x40000000; blocks without it are rejected as bad-version-nip028. Miners on old software cannot extend the chain.
  • Peers. Once the tip reaches block 10, peers older than protocol 70029 are disconnected. The reset testnet goes further and announces 70030 from the first handshake.
  • Reorg cap. The deepest allowed reorganisation doubles to 120 blocks: still 60 minutes.

For developers

Block-based timelocks run twice as fast

Anything counted in blocks (OP_CHECKSEQUENCEVERIFY, height-based OP_CHECKLOCKTIMEVERIFY, coinbase maturity, confirmation targets) now passes in half the wall-clock time. Timelocks written as timestamps are unaffected.

WaitAt 60 sAt 30 s
6 confirmations 6 min 3 min
100 blocks 1 h 40 min 50 min
2,016 blocks ≈ 1.4 days ≈ 16.8 h
28,800 blocks 20 days 10 days

Check it yourself

Measure the spacing from the RPC

Shell
curl -s -X POST https://rpc-testnet.neurai.org/rpc \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"1.0","id":1,"method":"getchaintxstats","params":[1000]}'

# window_interval / window_block_count = average seconds per block

Where it is specified

The reset testnet's activation schedule, NIP-028 included, is described in doc/covenants.md. The code that applies it is in src/chainparams.cpp, src/pow.cpp and src/validation.cpp of the DePIN-Test branch.