mirror of
https://github.com/bitcoin/bips.git
synced 2026-11-09 19:47:16 +00:00
BIP95: Change proposed Testnet 5 genesis block structure
This moves the anti-pre-mine commitment back into `pszTimestamp` and keeps it as ASCII text, rather than using it as a fake public key. The genesis transaction's output is replaced by an `OP_RETURN` to avoid confusion over spendability. Using the `OP_RETURN` output and `nVersion` rolling for additional nonce bits are explicitly allowed.
This commit is contained in:
1 parent
a0c977f375
commit
69ec29d518
1 file changed
+29
-27
+29
-27
@@ -9,7 +9,7 @@
|
|||||||
Assigned: 2026-06-22
|
Assigned: 2026-06-22
|
||||||
License: CC0-1.0
|
License: CC0-1.0
|
||||||
Discussion: 2026-06-02: https://groups.google.com/g/bitcoindev/c/kGUMTxOvdJA
|
Discussion: 2026-06-02: https://groups.google.com/g/bitcoindev/c/kGUMTxOvdJA
|
||||||
Version: 0.2.0
|
Version: 0.3.0
|
||||||
Requires: 54
|
Requires: 54
|
||||||
Replaces: 94
|
Replaces: 94
|
||||||
```
|
```
|
||||||
@@ -76,30 +76,35 @@ from block 1, as specified above.
|
|||||||
|
|
||||||
### Genesis Block
|
### Genesis Block
|
||||||
|
|
||||||
TODO: Mine the block. The values below are placeholders inherited from Testnet 4. They are
|
TODO: Mine the block. The values below are placeholders. They are
|
||||||
the genesis block's header fields together with the `Message` and `Pubkey` of its coinbase
|
the genesis block's header fields together with the `Message` and
|
||||||
transaction. Notes for the miner:
|
`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
|
- `scriptPubKey` is the script public key in the coinbase transaction's
|
||||||
recent Bitcoin mainnet block hash.[^pubkey-methodology]
|
output. It is `OP_RETURN` followed by a push of 8-bytes of extranonce
|
||||||
- `Message` is an arbitrary string in the coinbase input script, like the newspaper headline in
|
space, as it is unspendable in any event, and this avoids bike shedding
|
||||||
Bitcoin's mainnet genesis block. Testnet 4 used it to carry the anti-pre-mine commitment, but
|
over its content.
|
||||||
Testnet 5 places that in the `Pubkey` instead, so the `Message` should be left empty, which also
|
- `Message` is a string in the coinbase input script, and carries a
|
||||||
avoids bike shedding over its content.
|
recent Bitcoin mainnet block hash as an anti-pre-mine commitment,
|
||||||
- `Time stamp` time of mining or that of the block which hash is used in `Pubkey`
|
serving the same purpose as the newspaper headline in Bitcoin's mainnet
|
||||||
- `nBits`: `0x1a0fffff`, per the raised minimum difficulty.
|
genesis block.
|
||||||
- `Version: 1`
|
- `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>
|
> (Note, these values have the wrong nBits value (too low difficulty) and are pre-mined so are not suitable for use)
|
||||||
> * Pubkey: <code>000000000000000000000000000000000000000000000000000000000000000000</code>
|
>
|
||||||
> * Time stamp: 1714777860
|
> * Message: "2026-11-03 974343 00000000000000000000a86d6da2c1563d08668d9ec18cce58cb8c865d4a31c8"
|
||||||
> * Nonce: 393743547
|
> * scriptPubKey: <code>0x6a089763e96a00000000</code>
|
||||||
> * Difficulty: <code>0x1d00ffff</code>
|
> * Time stamp: 1793680278
|
||||||
> * Version: 1
|
> * Nonce: <code>0x73ba1699</code>
|
||||||
>
|
> * nBits: <code>0x1b07fff8</code>
|
||||||
> The resulting Genesis block hash is <code>00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043</code>, and the block hex is <code>0100000000000000000000000000000000000000000000000000000000000000000000004e7b2b9128fe0291db0693af2ae418b767e657cd407e80cb1434221eaea7a07a046f3566ffff001dbb0c78170101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5504ffff001d01044c4c30332f4d61792f323032342030303030303030303030303030303030303030303165626435386332343439373062336161396437383362623030313031316662653865613865393865303065ffffffff0100f2052a010000002321000000000000000000000000000000000000000000000000000000000000000000ac00000000</code>.
|
> * Version: <code>0x201c4000</code>
|
||||||
|
>
|
||||||
|
> The resulting Genesis block hash is <code>000000000001bd3ade1e24d07c1a3677d4868c34f2f1696fa419e3b9f061b1e0</code>, and the block hex is <code>00401c200000000000000000000000000000000000000000000000000000000000000000de48bbaa869592873fc4e5042f2931f9b42bb7e8ddeccd373df845d80983409b9663e96af8ff071b9916ba730101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5b04ffff001d01044c52323032362d31312d3033203937343334332030303030303030303030303030303030303030306138366436646132633135363364303836363864396563313863636535386362386338363564346133316338ffffffff0100f2052a010000000a6a089763e96a0000000000000000</code>.
|
||||||
|
|
||||||
### Message Start
|
### Message Start
|
||||||
|
|
||||||
@@ -173,13 +178,10 @@ This document is licensed under the Creative Commons CC0 1.0 Universal license.
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
* __0.3.0__ (2026-11-05):
|
||||||
|
* Move commitment back to scriptSig, and use `OP_RETURN` for output.
|
||||||
* __0.2.0__ (2026-11-05):
|
* __0.2.0__ (2026-11-05):
|
||||||
* Change default P2P port from 18335 to 18353
|
* Change default P2P port from 18335 to 18353
|
||||||
* __0.1.0__ (2026-06-02):
|
* __0.1.0__ (2026-06-02):
|
||||||
* Initial draft
|
* 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.
|
|
||||||
Reference in new issue
Block a user