Merge pull request #2347 from ajtowns/202611-bip95-bump

BIP95: Change proposed Testnet 5 genesis block structure
This commit is contained in:
Jon Atack authored and GitHub committed 2026-11-05 19:34:21 -06:00
commit c9547b9dad
1 file changed
+29 -27
+29 -27
View File
@@ -9,7 +9,7 @@
Assigned: 2026-06-22
License: CC0-1.0
Discussion: 2026-06-02: https://groups.google.com/g/bitcoindev/c/kGUMTxOvdJA
Version: 0.2.0
Version: 0.3.0
Requires: 54
Replaces: 94
```
@@ -76,30 +76,35 @@ from block 1, as specified above.
### Genesis Block
TODO: Mine the block. The values below are placeholders inherited from Testnet 4. They are
the genesis block's header fields together with the `Message` and `Pubkey` of its coinbase
transaction. Notes for the miner:
TODO: Mine the block. The values below are placeholders. They are
the genesis block's header fields together with the `Message` and
`scriptPubKey` of its coinbase transaction. Notes for the miner:
- `Pubkey` is the public key in the coinbase transaction's pay-to-public-key (P2PK) output. Use a
recent Bitcoin mainnet block hash.[^pubkey-methodology]
- `Message` is an arbitrary string in the coinbase input script, like the newspaper headline in
Bitcoin's mainnet genesis block. Testnet 4 used it to carry the anti-pre-mine commitment, but
Testnet 5 places that in the `Pubkey` instead, so the `Message` should be left empty, which also
avoids bike shedding over its content.
- `Time stamp` time of mining or that of the block which hash is used in `Pubkey`
- `nBits`: `0x1a0fffff`, per the raised minimum difficulty.
- `Version: 1`
- `scriptPubKey` is the script public key in the coinbase transaction's
output. It is `OP_RETURN` followed by a push of 8-bytes of extranonce
space, as it is unspendable in any event, and this avoids bike shedding
over its content.
- `Message` is a string in the coinbase input script, and carries a
recent Bitcoin mainnet block hash as an anti-pre-mine commitment,
serving the same purpose as the newspaper headline in Bitcoin's mainnet
genesis block.
- `Time stamp` is the time of mining or that of the block which hash is
used in `Message`
- `nBits` is `0x1a0fffff`, per the raised minimum difficulty.
- `Version` is used for version-rolling to meet the difficulty.
Testnet 4 placeholders:
Placeholders:
> * Message: <code>03/May/2024 000000000000000000001ebd58c244970b3aa9d783bb001011fbe8ea8e98e00e</code>
> * Pubkey: <code>000000000000000000000000000000000000000000000000000000000000000000</code>
> * Time stamp: 1714777860
> * Nonce: 393743547
> * Difficulty: <code>0x1d00ffff</code>
> * Version: 1
>
> The resulting Genesis block hash is <code>00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043</code>, and the block hex is <code>0100000000000000000000000000000000000000000000000000000000000000000000004e7b2b9128fe0291db0693af2ae418b767e657cd407e80cb1434221eaea7a07a046f3566ffff001dbb0c78170101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5504ffff001d01044c4c30332f4d61792f323032342030303030303030303030303030303030303030303165626435386332343439373062336161396437383362623030313031316662653865613865393865303065ffffffff0100f2052a010000002321000000000000000000000000000000000000000000000000000000000000000000ac00000000</code>.
> (Note, these values have the wrong nBits value (too low difficulty) and are pre-mined so are not suitable for use)
>
> * Message: "2026-11-03 974343 00000000000000000000a86d6da2c1563d08668d9ec18cce58cb8c865d4a31c8"
> * scriptPubKey: <code>0x6a089763e96a00000000</code>
> * Time stamp: 1793680278
> * Nonce: <code>0x73ba1699</code>
> * nBits: <code>0x1b07fff8</code>
> * Version: <code>0x201c4000</code>
>
> The resulting Genesis block hash is <code>000000000001bd3ade1e24d07c1a3677d4868c34f2f1696fa419e3b9f061b1e0</code>, and the block hex is <code>00401c200000000000000000000000000000000000000000000000000000000000000000de48bbaa869592873fc4e5042f2931f9b42bb7e8ddeccd373df845d80983409b9663e96af8ff071b9916ba730101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5b04ffff001d01044c52323032362d31312d3033203937343334332030303030303030303030303030303030303030306138366436646132633135363364303836363864396563313863636535386362386338363564346133316338ffffffff0100f2052a010000000a6a089763e96a0000000000000000</code>.
### Message Start
@@ -173,13 +178,10 @@ This document is licensed under the Creative Commons CC0 1.0 Universal license.
## Changelog
* __0.3.0__ (2026-11-05):
* Move commitment back to scriptSig, and use `OP_RETURN` for output.
* __0.2.0__ (2026-11-05):
* Change default P2P port from 18335 to 18353
* __0.1.0__ (2026-06-02):
* Initial draft
[^pubkey-methodology]: The `Pubkey` field is the public key placed in the coinbase transaction's
output as a pay-to-public-key (P2PK) script. Setting it to a recent Bitcoin mainnet block hash
serves two purposes: the resulting output is provably unspendable, and the referenced block hash
acts as an anti-pre-mine commitment, since the genesis block cannot have been created before that
mainnet block existed.