diff --git a/bip-0095.md b/bip-0095.md index 9feeda50..a47f9b7a 100644 --- a/bip-0095.md +++ b/bip-0095.md @@ -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: 03/May/2024 000000000000000000001ebd58c244970b3aa9d783bb001011fbe8ea8e98e00e -> * Pubkey: 000000000000000000000000000000000000000000000000000000000000000000 -> * Time stamp: 1714777860 -> * Nonce: 393743547 -> * Difficulty: 0x1d00ffff -> * Version: 1 -> -> The resulting Genesis block hash is 00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043, and the block hex is 0100000000000000000000000000000000000000000000000000000000000000000000004e7b2b9128fe0291db0693af2ae418b767e657cd407e80cb1434221eaea7a07a046f3566ffff001dbb0c78170101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5504ffff001d01044c4c30332f4d61792f323032342030303030303030303030303030303030303030303165626435386332343439373062336161396437383362623030313031316662653865613865393865303065ffffffff0100f2052a010000002321000000000000000000000000000000000000000000000000000000000000000000ac00000000. +> (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: 0x6a089763e96a00000000 +> * Time stamp: 1793680278 +> * Nonce: 0x73ba1699 +> * nBits: 0x1b07fff8 +> * Version: 0x201c4000 +> +> The resulting Genesis block hash is 000000000001bd3ade1e24d07c1a3677d4868c34f2f1696fa419e3b9f061b1e0, and the block hex is 00401c200000000000000000000000000000000000000000000000000000000000000000de48bbaa869592873fc4e5042f2931f9b42bb7e8ddeccd373df845d80983409b9663e96af8ff071b9916ba730101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5b04ffff001d01044c52323032362d31312d3033203937343334332030303030303030303030303030303030303030306138366436646132633135363364303836363864396563313863636535386362386338363564346133316338ffffffff0100f2052a010000000a6a089763e96a0000000000000000. ### 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.