mirror of
https://github.com/bitcoin/bips.git
synced 2026-04-20 16:28:39 +00:00
Merge pull request #2122 from darosior/2603_bip54_improvements
BIP 54 test vectors improvements following review in Inquisition
This commit is contained in:
12
bip-0054.md
12
bip-0054.md
@@ -64,7 +64,7 @@ Given a block at height `N`:
|
||||
or equal to the value of the timestamp of the block at height `N-2015` (T<sub>N</sub> ≥
|
||||
T<sub>N−2015</sub>).
|
||||
|
||||
A limit is set on the number of potentially executed signature operations in validating a
|
||||
A limit is set on the number of signature operations present in the scripts used to validate a
|
||||
transaction. It applies to all transactions in the block except the coinbase transaction[^1]. For
|
||||
each input in the transaction, count the number of `CHECKSIG` and `CHECKMULTISIG` in the input
|
||||
scriptSig and previous output's scriptPubKey, including the P2SH redeemScript. If the total summed
|
||||
@@ -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
|
||||
|
||||
@@ -76,4 +76,5 @@
|
||||
"valid": false,
|
||||
"comment": "Block at height 4 with coinbase's nLockTime set to block's nTime minus 1 and maximum non-final nSequence."
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -1,62 +1,67 @@
|
||||
[
|
||||
{
|
||||
"comment": "A 63-byte legacy transaction.",
|
||||
"tx": "0200000001827da3d85a6547d6b03662d2cb86982d655a6f390547285a3bf9ec9f28e0c8831500000000ffffffff0100000000000000000300515200000000",
|
||||
"valid": true,
|
||||
"comment": "A 63-byte legacy transaction."
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"comment": "A 61-byte legacy transaction with a witness.",
|
||||
"tx": "02000000000101827da3d85a6547d6b03662d2cb86982d655a6f390547285a3bf9ec9f28e0c8831500000000ffffffff01000000000000000000010000000000",
|
||||
"valid": true,
|
||||
"comment": "A 61-byte legacy transaction with a witness."
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"comment": "A 64-byte legacy transaction (4 bytes in spk).",
|
||||
"tx": "0200000001827da3d85a6547d6b03662d2cb86982d655a6f390547285a3bf9ec9f28e0c8831500000000ffffffff010000000000000000040051525400000000",
|
||||
"valid": false,
|
||||
"comment": "A 64-byte legacy transaction (4 bytes in spk)."
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"comment": "A 64-byte legacy transaction (4 bytes in scriptsig).",
|
||||
"tx": "0200000001827da3d85a6547d6b03662d2cb86982d655a6f390547285a3bf9ec9f28e0c883150000000403424242ffffffff010040075af07507000000000000",
|
||||
"valid": false,
|
||||
"comment": "A 64-byte legacy transaction (4 bytes in scriptsig)."
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"comment": "A 65-byte legacy transaction.",
|
||||
"tx": "0200000001827da3d85a6547d6b03662d2cb86982d655a6f390547285a3bf9ec9f28e0c8831500000000ffffffff01000000000000000005005152545800000000",
|
||||
"valid": true,
|
||||
"comment": "A 65-byte legacy transaction."
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"comment": "A 64-byte Segwit transaction.",
|
||||
"tx": "02000000000101827da3d85a6547d6b03662d2cb86982d655a6f390547285a3bf9ec9f28e0c8831500000000ffffffff01000000000000000004005152540108213245576281941200000000",
|
||||
"valid": false,
|
||||
"comment": "A 64-byte Segwit transaction."
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"comment": "A 64-byte Segwit transaction (1 p2tr input, 1 p2a output).",
|
||||
"tx": "02000000000101827da3d85a6547d6b03662d2cb86982d655a6f390547285a3bf9ec9f28e0c8831500000000ffffffff0100000000000000000451024e7301415a78b5a14a2527feb02c08b8124e74c3b9bcc1bd3dba1fbfa87f1c930f28a46fea2bf375105dfd835e212c9127aad4976c46ef86be02edbb681e6f38f9a9e06f0100000000",
|
||||
"valid": false,
|
||||
"comment": "A 64-byte Segwit transaction (1 p2tr input, 1 p2a output)."
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"comment": "A 64-byte Segwit transaction (1 p2tr input with annex, 1 OP_RETURN output).",
|
||||
"tx": "02000000000101827da3d85a6547d6b03662d2cb86982d655a6f390547285a3bf9ec9f28e0c8831500000000ffffffff010000000000000000046a02ab0102415a78b5a14a2527feb02c08b8124e74c3b9bcc1bd3dba1fbfa87f1c930f28a46fea2bf375105dfd835e212c9127aad4976c46ef86be02edbb681e6f38f9a9e06f01064242ffab212100000000",
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"comment": "Historical 64-byte transaction 892f44a49de6f5b212cdbea514d09e692d9fed5d897f37bcef14bd0eedebf193",
|
||||
"tx": "0200000001deb98691723fa71260ffca6ea0a7bc0a63b0a8a366e1b585caad47fb269a2ce401000000030251b201000000010000000000000000016a00000000",
|
||||
"valid": false,
|
||||
"comment": "Historical 64-byte transaction 892f44a49de6f5b212cdbea514d09e692d9fed5d897f37bcef14bd0eedebf193"
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"comment": "Historical 64-byte transaction bbf71454857438c6dfd64c0d92a7c5360a8d8d57c9202f5806449e5b0d26b848",
|
||||
"tx": "01000000010d0afe3d74062ee60c0ec55579d691d8c8af5c04eb97b777157a21a8c5fb143d00000000035101b100000000010000000000000000016a01000000",
|
||||
"valid": false,
|
||||
"comment": "Historical 64-byte transaction bbf71454857438c6dfd64c0d92a7c5360a8d8d57c9202f5806449e5b0d26b848"
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"comment": "Historical 64-byte transaction 6713d61a83e3d095582211ea8d6db452ac7561e863decba7c4046fb9f6d88aa0",
|
||||
"tx": "02000000011658a33df410379bb512206659910c9fbd0e50bfb732f7be9936558ff036919401000000035101b201000000010000000000000000016a00000000",
|
||||
"valid": false,
|
||||
"comment": "Historical 64-byte transaction 6713d61a83e3d095582211ea8d6db452ac7561e863decba7c4046fb9f6d88aa0"
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"comment": "Historical 64-byte transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612",
|
||||
"tx": "02000000011a7a4cf262fb7e53e2e6e0b2ef8b763f6ee97d8681ca968d1938418d56e6c38700000000035101b201000000010000000000000000016a00000000",
|
||||
"valid": false,
|
||||
"comment": "Historical 64-byte transaction 7f2efc6546011ad3227b2da678be0d30c7f4b08e2ce57b5edadd437f9e27a612"
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"comment": "Historical 64-byte transaction 5302e01dc4b7e34314a34c7c3347107e612b9524be684d388cd4d2ca35ff1ec9",
|
||||
"tx": "01000000019222bbb054bb9f94571dfe769af5866835f2a97e883959fa757de4064bed8bca01000000035101b100000000010000000000000000016a01000000",
|
||||
"valid": false,
|
||||
"comment": "Historical 64-byte transaction 5302e01dc4b7e34314a34c7c3347107e612b9524be684d388cd4d2ca35ff1ec9"
|
||||
"valid": false
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user