#35861 Testnet 5 (BIP95)

ReviewabilityReviewsAgreementSize
#35861 fjahr Testnet 5 (BIP95)Waiting on author0Blocked317 + 6,426 tests
  • Introduce Testnet 5 to provide a public test network enforcing BIP 54 cleanup rules from genesis
  • Prevent testnet difficulty manipulation by eliminating the 20-minute minimum-difficulty rule
  • Review #35793 first
  • Conflicts with master, but review the logic now because the rebase is mechanical
  • No review verdicts recorded
  • Blocked by an unaddressed objection regarding network port configuration
  • Unaddressed objection: Tor port clashes with testnet3, no author reply (darosior)
  • 317 lines added or modified outside tests
  • 6,426 lines added or modified in tests
  • 129 lines removed in total
  • 59 files, 25 commits
Validation#24 of 53
P2 · new feature
  • P2 because it protects testnet users from difficulty manipulation attacks experienced on prior networks
  • Unblocks ecosystem testing of proposed BIP 54 consensus cleanup rules on a live network
  • Ranking pass: Moved down: value is contingent on BIP 54 (#35793) landing first
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.

Goal

This PR implements BIP 95 to introduce Testnet 5. It establishes chain parameters that enforce BIP 54 (Consensus Cleanup) starting from block 1, eliminates the 20-minute minimum-difficulty exception present in previous testnets, and raises the minimum difficulty threshold.

Problem: Testnet 4 and prior testnets suffer from difficulty manipulation caused by the 20-minute minimum-difficulty rule, and lack a live test network running the proposed BIP 54 consensus cleanup rules from genesis.

Reviewability

Paused · Waiting on author

Open objection from darosior with no author reply for 30 days; review would repeat what has been asked.

Waiting on (from the thread read):

  • author: response to darosior regarding the potential Tor port clash with testnet3 2026-10-02
  • author: address potential Tor port clash with testnet3 2026-10-02

Agreement

Blocked

objection that needs a change, nobody has replied (darosior)

Thread notes: darosior raised an inline concern about a Tor port clash with testnet3 (rc:4163729377); listed as an objection awaiting author response. / Initial record. darosior questioned whether the chosen port clashes with testnet3's Tor port.

Objections, suggestions, and questions:

ReviewerTypeHarm, request, or questionStatusMust beAuthor repliedQuote
darosior (member)objection, interfaceThe Tor port clashes with testnet3's Tor portopenchangedno2026-10-02: 'This clashes with testnet3's Tor port?'

Participants:

  • darosior (member, objection, 1 statements 2026-10-02 to 2026-10-02): raised a possible port clash with testnet3's Tor port

Dependencies

Depends on: #35793

Files

6481 lines under test/bench/ci.

  • src/test/data/bip54_timestamps.json +4134/-0
  • src/test/bip54_tests.cpp +1608/-0
  • test/functional/feature_bip54.py +417/-0
  • src/kernel/chainparams.cpp +142/-0
  • src/test/data/bip54_coinbases.json +80/-0
  • src/validation.cpp +54/-14
  • src/test/fuzz/bip54.cpp +54/-0
  • src/test/transaction_tests.cpp +26/-24
  • src/policy/policy.cpp +1/-36
  • src/consensus/tx_verify.cpp +31/-1
  • test/functional/data/invalid_txs.py +17/-3
  • src/consensus/consensus.h +16/-1
  • test/functional/mempool_sigoplimit.py +8/-9
  • src/test/util/transaction_utils.cpp +14/-0
  • test/functional/rpc_blockchain.py +13/-0
  • src/init.cpp +7/-5
  • test/functional/feature_block.py +9/-1
  • test/functional/mining_basic.py +5/-5
  • src/consensus/tx_verify.h +7/-1
  • test/functional/feature_taproot.py +5/-3
  • doc/release-notes-testnet5.md +7/-0
  • src/common/args.cpp +5/-2
  • src/test/fuzz/coins_view.cpp +6/-1
  • src/node/miner.cpp +3/-3
  • test/functional/test_framework/blocktools.py +4/-2
  • test/functional/wallet_migration.py +4/-2
  • src/bitcoin-cli.cpp +4/-1
  • src/chainparams.cpp +5/-0
  • src/chainparamsbase.cpp +4/-1
  • src/policy/policy.h +2/-3
  • src/test/pow_tests.cpp +5/-0
  • src/deploymentinfo.cpp +4/-0
  • src/external_signer.h +2/-2
  • src/util/chaintype.cpp +4/-0
  • test/functional/test_framework/script_util.py +2/-2
  • src/kernel/bitcoinkernel.cpp +3/-0
  • src/test/CMakeLists.txt +3/-0
  • src/test/util/transaction_utils.h +3/-0
  • test/functional/rpc_getblockstats.py +3/-0
  • doc/bips.md +2/-0
  • src/CMakeLists.txt +1/-1
  • src/chainparamsbase.h +1/-1
  • src/common/args.h +1/-1
  • src/kernel/chainparams.h +2/-0
  • src/test/argsman_tests.cpp +1/-1
  • src/test/versionbits_tests.cpp +1/-1
  • src/txmempool.cpp +1/-1
  • test/functional/mempool_accept.py +1/-1
  • src/consensus/params.h +1/-0
  • src/kernel/bitcoinkernel.h +1/-0
  • src/kernel/bitcoinkernel_wrapper.h +1/-0
  • src/qt/guiconstants.h +1/-0
  • src/qt/guiutil.cpp +1/-0
  • src/qt/networkstyle.cpp +1/-0
  • src/rpc/blockchain.cpp +1/-0
  • src/test/fuzz/CMakeLists.txt +1/-0
  • src/util/chaintype.h +1/-0
  • test/functional/test_framework/messages.py +1/-0
  • test/functional/test_runner.py +1/-0

Card

The short text the ranking pass compares across PRs.

PR #35861 implements BIP 95 to add Testnet 5, which eliminates the 20-minute minimum-difficulty exception seen in Testnet 4, raises minimum difficulty, and activates BIP 54 consensus cleanup rules from block 1. This provides developers and miners with a resilient testnet environment that also serves as a live proving ground for BIP 54. The PR rests on top of base PR #35793 and is currently in draft awaiting the merge of BIP 54, a mined genesis block, and seed infrastructure. It currently has no reviewer feedback, needs a rebase, and has failing CI.

Data

dossier JSON · extract JSON · model ledger, generated 2026-10-03T01:22, confidence high, input hash 12a84b9ac2225ee9
thread read through 2026-10-02 (1 statements), head 31ed5baf68
labels: Needs rebase, CI failed · draft

Categories

Validation

P2 · new feature (ranking pass: Moved down: value is contingent on BIP 54 (#35793) landing first)

Introduces Testnet 5 to eliminate the 20-minute minimum-difficulty rule exploited on earlier testnets and tests BIP 54 consensus cleanup rules from genesis.

Membership: Implements BIP 95 chain parameters and BIP 54 consensus cleanup rules across src/consensus/tx_verify.cpp and src/validation.cpp.

Factors: security/stability 1, bug 0, performance 0, user value 2, leverage 2