mirror of
https://github.com/bitcoin/bips.git
synced 2026-04-20 16:28:39 +00:00
bip54: expand on rationale for non-final coinbase nSequence
Making sure that the coinbase is timelocked is a neat simplification in reasoning about duplicates, but it has caused some confusions. For instance here: https://gnusha.org/pi/bitcoindev/e758af9b-72fc-4fdd-8e07-e1126635780an@googlegroups.com/ Fix this by explicitly stating the implications.
This commit is contained in:
10
bip-0054.md
10
bip-0054.md
@@ -123,7 +123,10 @@ validation will need to be re-activated from block 1,983,702. A simple way to pr
|
||||
mandate that future coinbase transactions vary from coinbase transactions before [bip-0034][BIP34]
|
||||
activation. There are multiple ways of achieving this, but setting and enforcing the timelock for
|
||||
the coinbase transaction makes it so all coinbase transactions past Consensus Cleanup activation
|
||||
could not have been valid before this height and therefore cannot be a duplicate[^11].
|
||||
could not have been valid before this height and therefore cannot be a duplicate[^11]. This
|
||||
simplifies both reasoning and client implementation, since the [bip-0030][BIP30] check can be
|
||||
skipped entirely past Consensus Cleanup activation, regardless of the [bip-0034][BIP34] activation
|
||||
status[^12].
|
||||
|
||||
## Backward compatibility
|
||||
|
||||
@@ -218,6 +221,10 @@ bip-0034 height commitment and the corresponding future block height.
|
||||
coinbase transactions as not having duplicate past Consensus Cleanup activation would be consistent
|
||||
for any implementation which enforces `nLockTime` from the genesis block, which is the behaviour
|
||||
notably of Bitcoin Core but also of all other implementations the authors are aware of.
|
||||
[^12]: For instance Bitcoin Core only disables [bip-0030][BIP30] validation for a specific chain
|
||||
where [bip-0034][BIP34] violations have been manually inspected (see [here][Core validation.cpp
|
||||
BIP34]). Without the guarantee given by enforcing the timelock on coinbase transactions, this would
|
||||
have to be perpetuated for the Consensus Cleanup.
|
||||
|
||||
[BIP30]: https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki
|
||||
[BIP-XXXX]: https://github.com/TheBlueMatt/bips/blob/7f9670b643b7c943a0cc6d2197d3eabe661050c2/bip-XXXX.mediawiki
|
||||
@@ -242,3 +249,4 @@ notably of Bitcoin Core but also of all other implementations the authors are aw
|
||||
[Core 29.0]: https://bitcoincore.org/en/releases/29.0
|
||||
[inquisition-implem]: https://github.com/darosior/bitcoin/tree/2509_inquisition_consensus_cleanup
|
||||
[Core 30.0]: https://bitcoincore.org/en/releases/30.0
|
||||
[Core validation.cpp BIP34]: https://github.com/bitcoin/bitcoin/blob/390e7d61bd531505bb3d13f38316c282b85ed1dd/src/validation.cpp#L2401-L2459
|
||||
|
||||
Reference in New Issue
Block a user