Commit Graph
36 Commits
Author SHA1 Message Date
Antoine Poinsot c47655654c bip-0054: move to complete 2026-05-22 13:53:51 -04:00
Antoine Poinsot 809ca9939a bip-0054: link to Bitcoin Core reference implementation rebased on latest version 2026-05-22 13:43:31 -04:00
Antoine Poinsot 6c61126d74 bip-0054: mention Luke's extranonce concern in rationale 2026-05-21 14:49:48 -04:00
Antoine Poinsot b75238ffb3 bip-0054: rephrase/dedup motivation and rationale for BIP 34 cleanup
The rationale was duplicating some of the motivation. The motivation had a sentence that read weird.
While rephrasing the sentence, take the opportunity to link to the now-proposed Utreexo BIP. Also
remove a duplicate link reference.
2026-05-21 14:49:40 -04:00
Antoine Poinsot ec24fd371c bip-0054: more correct worst case validation times
The sentence was misleading, with 'lower end devices' potentially applying to the whole range, and the range itself being understated.
2026-05-21 10:56:42 -04:00
Antoine Poinsot 19caed45a1 bip-0054: rephrase Timewarp motivation 2026-05-20 16:43:11 -04:00
Antoine Poinsot f1f1c36ff2 bip-0054: add a footnote with known workarounds for SPV verifiers 2026-05-19 09:59:50 -04:00
Antoine Poinsot 9e8e357b03 bip-0054: disambiguate use of "mitigation"
Jon pointed that i use "mitigation" to refer both to the items of this
BIP, and for the existing workarounds to make SPV verifiers safe in the
presence of 64-byte txs. This commit rephrases the latter usage.
2026-05-19 09:59:40 -04:00
Antoine Poinsot 47a2d72539 bip-0054: less redundancy in 64-byte rationale, move caching risk to footnote 2026-05-19 09:58:44 -04:00
Antoine Poinsot 8ae3af58e0 bip-0054: state explicitly fake inclusion proofs only concern SPV verifier 2026-05-15 10:51:01 -04:00
Antoine Poinsot 5c67f90fa8 bip-0054: clarify rationale for invalidating 64-byte txs
As Eric points out on the mailing list: 1. the rationale section should mention and address the
"seam" objection directly rather than burying it in a footnote; 2. the full node consensus split
issue should not be used as sole rationale for invalidating 64-byte txs (but it's fair to point out
it's fixed as a nice to have byproduct).

ML thread: https://gnusha.org/pi/bitcoindev/43996cb3-9133-4627-8944-5fe08427be68n@googlegroups.com/T/#md66e252f0748f4ef7569d5e15d42631e12b66c0b,
2026-05-14 09:09:56 -04:00
Antoine Poinsot 346f93844f bip-0054: spell out in more places that 64 bytes is for witness-stripped size 2026-05-12 07:06:15 -04:00
Antoine Poinsot fa608987ea bip54: add another transaction size test case
Ariard mentioned he would like to see a test case for a 64-byte transaction spending a Taproot
output with an annex. I took the opportunity to also make the output be an OP_RETURN with a 2-byte
push, as another semi-realistic transaction.
2026-03-16 10:21:04 -04:00
Antoine Poinsot 977300dad6 bip54: restructure timestamp test vectors into a tree
The test vectors were initially designed to maximally simple, which led to much redundancy. That was
probably too close to one extreme on the spectrum between simplicity and efficiency.

Here we shave off 20k lines by simply representing the header chains as a tree instead of list of
lists by duplicating all common headers.
2026-03-16 10:21:04 -04:00
Antoine Poinsot 4f94c5f01f bip54: make test vectors POSIX-compliant (newline at EOF)
This was pointed out during the Bitcoin Inquisition PR review
2026-03-13 16:50:48 -04:00
Antoine Poinsot 78126a5f0c bip54: move comment as first element in txsize test vectors
This is part of feedback received during the Bitcoin Inquisition PR review.
2026-03-13 16:50:33 -04:00
Antoine Poinsot ff39733e70 bip54: update sigops test vectors following Inquisition review
This is a batch update to the tests vectors for the limit on legacy signature-checking operations
introduced in BIP 54, following feedack received on the Bitcoin Inquisition PR and from Chris
Stewart's implementation in Bitcoin-S.
2026-03-13 16:50:32 -04:00
Antoine Poinsot 1f21139957 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.
2026-03-13 14:21:41 -04:00
Antoine Poinsot aef4d9e084 bip54: reword "potentially executed" language in sigops limit specification
The paragraph in its entirety is already unambiguous that all signature-checking operations
*present* in the Script (as opposed to *executed*) are counted. However i received feedback that the
"potentially executed" language in the first sentence of this paragraph may be confusing. This is
because it is in theory possible to have a more accurate upper bound by analyzing the possible
spending paths and use the maximum number of signature-checking operations in either to check
against the limit.

This commit rewords the first sentence to use the word "present" to be extra-clear before even
describing how the accounting is performed in later sentences.
2026-03-13 11:14:20 -04:00
Antoine Poinsot 175790ee7f BIP 370: remove redundant field inclusion comment in OUT_SCRIPT description
There are already "Requiring inclusion" / "Requiring exclusion" columns that specify that.
2026-03-04 10:15:46 -05:00
Antoine Poinsot a86abbe2c1 bip-0054: correct link typo in test vectors README 2025-11-25 18:18:01 -05:00
Antoine Poinsot 1076d90678 bip-0054: update forward compat section with Bitcoin Core v30
The BIP 54 sigops limit was made a standardness rules in Bitcoin Core 30.0.
2025-11-25 14:03:52 -05:00
Antoine Poinsot 0777a81367 bip-0054: document the test vectors 2025-10-27 04:10:26 -04:00
Antoine Poinsot 30b0084808 bip-0054: add test vectors for each mitigation
This introduces a set of test vectors for each of the 4 mitigations in the BIP. The sigops and
transaction size vectors were generated using the unit tests included with the Bitcoin Core
implementation of BIP54, available at https://github.com/darosior/bitcoin/tree/2509_inquisition_consensus_cleanup.
The timestamps and coinbases required mainnet blocks for maximum compatibility, and were generated
by two dedicated unit tests not included with the Bitcoin Core implementation above but available at
https://github.com/darosior/bitcoin/tree/bip54_miner.
2025-10-20 08:53:57 -04:00
Antoine Poinsot 89dfe03a64 bip-0054: add a reference implementation section 2025-10-20 08:53:51 -04:00
Antoine Poinsot 32bcfd6801 bip54: fix off-by-one in creation date 2025-09-03 16:55:29 -04:00
Antoine Poinsot 1ee43519dd Consensus Cleanup BIP draft 2025-04-28 14:30:31 -04:00
Antoine Poinsot 5dcb2d46c9 bip3: link to ownership transfer section for complete->closed transition
Reading from top to bottom, the passive voice "they become BIP's author or deputy" left me wondering
how it would concretely work in practice. Link to the transferring ownership section for
clarification.
2025-03-28 11:54:13 -04:00
Antoine Poinsot 617db7a0fe bip3: rename 'shareholder' to 'stakeholder'
Shareholder refers to an individual or a legal entity owning a share of a company's share capital.
Since the Bitcoin system is not a company, but different actors across the industry have a stake in
its operation, i think the word "stakeholder" better conveys the intended meaning of the original
author here.
2025-03-28 11:49:20 -04:00
Antoine Poinsot 1dee483436 Remove now unused reference to bip-0341 2025-03-10 16:20:42 -04:00
Antoine Poinsot 97a7edb0da bip-0348: correct reference to Tapscript unknown key types
Author confused bip-0341, which defines the Taproot construction, with bip-0342, which defines the
Tapscript scripting system. Unknown key types are defined in the latter, as part of the semantics of
the CHECKSIG{VERIFY} and CHECKSIGADD opcodes.
2025-03-10 16:16:36 -04:00
Antoine Poinsot a118ef42a6 bip8: mention in intro the forced activation is optional
Signed-off-by: Antoine Poinsot <darosior@protonmail.com>
2021-02-26 14:18:35 +01:00
Antoine Poinsot ca77342417 bip8: remove recommendation to force activation after a year
Signed-off-by: Antoine Poinsot <darosior@protonmail.com>
2021-02-26 13:33:36 +01:00
Antoine Poinsot 644610f7b8 bip-0141: clarify the sigop count calculation for CHECKMULTISIG
Since the sigOpCount calculation was copied from P2SH, and P2SH
restricts the use of CHECKMULTISIG with pushed integers the reference
implementation would not take into account the number of public keys for
17 to 20 keys (not representable with an OP_N) even for P2WSH.
Therefore it fallbacks to accounting for 20 sigops in this case, which
this sentence seemed to mismatch with.

Btcd and Libbitcoin use the same calculation as in Bitcoin Core.

Signed-off-by: Antoine Poinsot <darosior@protonmail.com>
2021-01-11 10:53:59 +01:00
Antoine Poinsot 4bc05ff903 bip-0032: remove the 'Implementations' section
Signed-off-by: Antoine Poinsot <darosior@protonmail.com>
2020-08-04 12:17:25 +02:00
darosior b4e6b0fac2 bip-0174: remove duplicated 'only' (typo) 2019-09-16 13:16:11 +02:00