1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-05-18 16:59:30 +00:00

Add BIP323: 24 nVersion bits for general purpose use (#2116)

This commit is contained in:
Matt Corallo
2026-05-12 23:06:55 +00:00
committed by GitHub
parent fd250df396
commit 622e47722c
3 changed files with 69 additions and 0 deletions

View File

@@ -1079,6 +1079,13 @@ users (see also: [https://en.bitcoin.it/wiki/Economic_majority economic majority
| Karl-Johan Alm | Karl-Johan Alm
| Specification | Specification
| Complete | Complete
|-
| [[bip-0323.mediawiki|323]]
|
| 24 nVersion bits for general purpose use
| Matt Corallo
| Specification
| Draft
|- style="background-color: #cfffcf" |- style="background-color: #cfffcf"
| [[bip-0324.mediawiki|324]] | [[bip-0324.mediawiki|324]]
| Peer Services | Peer Services

View File

@@ -6,6 +6,7 @@
Type: Specification Type: Specification
Assigned: 2018-03-01 Assigned: 2018-03-01
License: BSD-3-Clause OR CC0-1.0 License: BSD-3-Clause OR CC0-1.0
Proposed-Replacement: 323
</pre> </pre>
==Abstract== ==Abstract==

61
bip-0323.mediawiki Normal file
View File

@@ -0,0 +1,61 @@
<pre>
BIP: 323
Title: 24 nVersion bits for general purpose use
Authors: Matt Corallo <bips@bluematt.me>
Status: Draft
Type: Specification
Assigned: 2026-04-22
License: BSD-3-Clause OR CC0-1.0
Discussion: 2026-02-26: https://groups.google.com/g/bitcoindev/c/fCfbi8hy-AE/m/g85UXI4qAAAJ
Replaces: 320
</pre>
==Abstract==
24 bits are reserved in the nVersion field as extra nonce space for miners, providing for additional
hashrate with header-only mining without relying on rolling nTime more often than once per second.
==Motivation==
BIP 320 defined 16 bits of nVersion as nonce space for additional nonce space. It turns out that
this isn't enough, as some devices have started using 7 bits from nTime for extra nonce space (see
https://github.com/stratum-mining/sv2-spec/discussions/187). Given there's limited utility in 16
bits of nVersion space for signaling, instead here we offer 24 bits of nVersion space as extra
nonce space.
==Specification==
24 bits from the block header nVersion field, starting from 5 and ending at 28 inclusive
(0x1fffffe0), are reserved for nonce use and removed from BIP8 and BIP9 specifications. A mask of
0xe000001f should be applied to nVersion bits so bits 5-28 inclusive will be ignored for soft-fork
signalling and unknown soft-fork warnings.
==Rationale==
Headers-only mining avoids mining devices (either ASICs or the firmware) from having to concern
themselves with the vast space of consensus logic (handling transactions, merkle trees, etc). It is
widely deployed in ASICs, but requires a substantial number of jobs fed across an entire device,
keeping the ASIC controller busy. Providing additional nonce space for the ASICs to roll without
needing fresh work from the controller may simplify ASIC design somewhat, and has been apparently
adopted in some miners by using extra space in nTime as extra nonce space[1]. Doing so in nVersion
instead is preferable to using nTime.
[1] See, eg, https://github.com/bitcoin/bitcoin/pull/34779#issuecomment-4026385773 and
https://github.com/bitaxeorg/ESP-Miner/pull/1553#issuecomment-3936223444
==Backwards Compatibility==
Non-upgraded nodes will interpret the reserved bits of this proposal as signals for soft forks, and
may additionally activate the warning system for unknown soft forks.
At the time of writing no soft forks that are being actively signaled for are using any of the 24
bits reserved in this BIP. Future soft forks SHOULD NOT utilize those bits for activation signaling.
==Acknowledgements==
Timo Hanke and Sergio Lerner for originally proposing 15-bit extra nNonce2. Btc Drak for writing BIP
320.
==Copyright==
This document is dual licensed as BSD 3-clause, and Creative Commons CC0 1.0 Universal.