Skip to content

Commit 8e42568

Browse files
authored
Merge branch 'master' into bip93-fix-threshold
2 parents 3123cea + 1e663c2 commit 8e42568

15 files changed

+26253
-86
lines changed

bip-0003.md

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,19 @@ BIP types more clearly, and generalizes the BIP process to fit the community
3030

3131
### What is a BIP?
3232

33-
BIPs are improvement proposals for Bitcoin[^capitalization]. The main topic is information and technologies that support and expand the utility of the bitcoin
33+
BIPs are improvement proposals for Bitcoin. The main topic is information and technologies that support and expand the utility of the Bitcoin
3434
currency. Most BIPs provide a concise, self-contained, technical description of one new concept, feature, or standard.
3535
Some BIPs describe processes, implementation guidelines, best practices, incident reports (e.g.,
3636
[BIP 50](bip-0050.mediawiki)), or other information relevant to the Bitcoin community. However, any topics related to
3737
the Bitcoin protocol, peer-to-peer network, and client software may be acceptable.
3838

3939
BIPs are intended to be a means for proposing new protocol features, coordinating client standards, and
40-
documenting design decisions that have gone into implementations. A BIP may be submitted by anyone,
41-
provided it is the original work of its authors and the content is of high quality, e.g. does not waste
42-
the community's time. No content may be generated by AI/LLMs and authors must proactively disclose
43-
up-front any use of AI/LLMs.
40+
documenting design decisions that have gone into implementations. BIPs may be submitted by anyone, provided the
41+
content is of high quality, e.g., does not waste the community’s time.
4442

4543
The scope of the BIPs
4644
repository is limited to BIPs that do not oppose the fundamental principle that Bitcoin constitutes a peer-to-peer
47-
electronic cash system for the bitcoin currency.
45+
electronic cash system for the Bitcoin currency.
4846

4947
### BIP Ownership
5048

@@ -103,7 +101,9 @@ following list and address each as appropriate.
103101
implementers and users should deal with these incompatibilities.
104102
* Reference Implementation — Where applicable, a reference implementation, test vectors, and documentation must be
105103
finished before the BIP can be given the status "Complete". Test vectors must be provided in the BIP or
106-
as auxiliary files (see [Auxiliary Files](#auxiliary-files)) under an acceptable license. The reference implementation can be provided in the BIP, as an auxiliary file, or per reference to a pull request that is expected to remain available permanently.
104+
as auxiliary files (see [Auxiliary Files](#auxiliary-files)) under an acceptable license. The reference implementation
105+
can be provided in the BIP, as an auxiliary file, or per linking another code reference that is expected to remain
106+
available permanently such as a pull request, a dedicated branch, a new repository, or similar.
107107
* Changelog — A section to track modifications to a BIP after reaching Complete status.
108108
* Copyright — The BIP must be placed under an acceptable license (see [BIP Licensing](#bip-licensing) below).
109109

@@ -157,7 +157,7 @@ appear in the following order. Headers marked with "\*" are optional. All other
157157
discussion threads on other platforms. Entries take the format "yyyy-mm-dd: URL", e.g., `2009-01-09:
158158
https://www.mail-archive.com/[email protected]/msg10142.html`, using the date and URL of the start of the
159159
conversation. Multiple discussions should be listed on separate lines.
160-
* Version — The current version number of this BIP. See the [Changelog](#changelog) section below.
160+
* Version — The current version number of this BIP. See the [Changelog](#changelog-section-and-version-header) section below.
161161
* Requires — A list of existing BIPs the new proposal depends on. If multiple BIPs
162162
are required, they should be listed in one line separated by a comma and space (e.g., "1, 2").
163163
* Replaces[^proposes-to-replace] — BIP authors may put the numbers of one or more prior BIPs in the Replaces header to recommend that their
@@ -231,7 +231,8 @@ specification above.
231231
After fleshing out the proposal further and ensuring that it is of high quality and properly formatted, the authors
232232
should open a pull request to the [BIPs repository](https://github.com/bitcoin/bips). The document must adhere to the
233233
formatting requirements specified above and should be provided as a file named with a working title of the form
234-
"bip-title.[md|mediawiki]". The authors must not self-assign a number to their proposal.
234+
"bip-title.[md|mediawiki]". Only BIP Editors may assign BIP numbers. Until one has done so, authors should refer to their
235+
BIP by name only.
235236

236237
BIPs that (1) adhere to the formatting requirements, (2) are on-topic, and (3) have materially progressed beyond the
237238
ideation phase, e.g., by generating substantial public discussion and commentary from diverse contributors, by
@@ -331,7 +332,7 @@ if the prior attempt had been assigned a number, the new BIP will generally be a
331332
obvious that the new attempt directly continues work on the same idea, it may be reasonable to return the
332333
Closed BIP to Draft status.
333334

334-
### Changelog
335+
### Changelog Section and Version Header
335336

336337
To help implementers understand updates to a BIP, any changes after it has reached Complete must be tracked with version,
337338
date, and description in a Changelog section sorted by most recent version first. The version number is inspired by semantic versioning (MAJOR.MINOR.PATCH).
@@ -463,7 +464,7 @@ The current BIP Editors are:
463464
The BIP Editors subscribe to the Bitcoin Development Mailing List and watch the [BIPs
464465
repository](https://github.com/bitcoin/bips).
465466

466-
When either a new BIP idea or an early draft is submitted to the mailing list, BIP Editors and other community members should comment in regard
467+
When either a new BIP idea or an early draft is submitted to the mailing list, BIP Editors or other community members should comment in regard
467468
to:
468469

469470
* Novelty of the idea
@@ -481,22 +482,23 @@ repository](https://github.com/bitcoin/bips) where it may get further feedback.
481482

482483
For each new BIP pull request that comes in, an editor checks the following:
483484

484-
* The idea has been previously proposed by one of the authors to the Bitcoin Development Mailing List and discussed there
485+
* The idea has been previously proposed to the Bitcoin Development Mailing List and discussed there
485486
* The described idea is on-topic for the repository
487+
* A draft of the BIP by one of the authors has been previously discussed on the Bitcoin Development Mailing List
486488
* Title accurately describes the content
487489
* Proposal is of general interest and/or pertains to more than one Bitcoin project/implementation
488490
* Document is properly formatted
489491
* Licensing terms are acceptable
490492
* Motivation, Rationale, and Backward Compatibility have been addressed
491493
* Specification provides sufficient detail for implementation
492-
* The defined Layer header must be correctly assigned for the given specification
494+
* The defined Layer and Type headers must be correctly assigned for the given specification
493495
* The BIP is ready: it is comprehensible, technically feasible and sound, and all aspects are addressed as necessary
494496

495497
Editors do NOT evaluate whether the proposal is likely to be adopted.
496498

497499
Then, a BIP Editor will:
498500

499-
* Assign a BIP number and BIP type in the pull request
501+
* Assign a BIP number in the pull request
500502
* Ensure that the BIP is listed in the [README](README.mediawiki)
501503
* Merge the pull request when it is ready
502504

@@ -522,7 +524,7 @@ mentioned in the [Changelog](#changelog) section.
522524
- The comment system is abolished.[^comments]
523525
- A BIP in Draft or Complete status may no longer be closed solely on grounds of not making progress for three years.[^rejection]
524526
- A BIP in Draft status may be updated to Closed status if it appears to have stopped making progress for at least a
525-
year and its authors do not assert within four weeks of being contacted that they are still working on it.
527+
year and its authors do not assert within four weeks of being contacted that they intend to continue working on it.
526528
- Complete BIPs can only be moved to Closed by its authors and may remain in Complete indefinitely.
527529
- A Changelog section is introduced to track significant changes to BIPs after they have reached the Complete status.
528530
- Process BIPs are living documents that do not ossify and may be modified indefinitely.
@@ -598,6 +600,26 @@ The Superseded-By header is replaced with the Proposed-Replacement header in all
598600
Existing BIPs retain their license terms unchanged.
599601
The License and License-Code headers of BIPs are updated to express those terms using SPDX License Expressions.
600602

603+
## Changelog
604+
605+
* __1.4.0__ (2025-12-09):
606+
* Revert AI guidance, add Changelog section, broaden reference implementation formats, move Type header responsibility to authors, other editorial changes
607+
* __1.3.1__ (2025-11-10):
608+
* Reiterate that numbers are assigned by BIP Editors in pull requests
609+
* __1.3.0__ (2025-10-22):
610+
* Restrict use of AI/LLM tools, require original work.
611+
* __1.2.1__ (2025-09-19):
612+
* Clarify that idea should be discussed on dedicated mailing list thread
613+
* __1.2.0__ (2025-09-19):
614+
* Rename Created header to Assigned to clarify that it holds the date of number assignment
615+
* __1.1.0__ (2025-07-18):
616+
* Switch to SPDX License Expressions, drop License-Code header, and make editorial changes to BIP Licensing section.
617+
* __1.0.1__ (2025-06-27):
618+
* Improve description of acceptance, purpose of the BIPs repository, when Draft BIPs can be closed due to not
619+
making progress, and make other minor improvements to phrasing.
620+
* __1.0.0__ (2025-03-18):
621+
* Complete planned work and move to Proposed.
622+
601623
## Copyright
602624

603625
This BIP is licensed under the [BSD-2-Clause License](https://opensource.org/licenses/BSD-2-Clause). Some content was
@@ -625,9 +647,6 @@ feedback, and helpful comments.
625647
has frequently led to confusion, with authors using the date of opening the pull request, the date they started
626648
writing their proposal, the date of number assignment (as prescribed), or various other dates. Aligning the name of
627649
the header and the text in the preamble template with the descriptions will reduce the confusion.
628-
[^capitalization]: **When is Bitcoin capitalized and when is it lowercased?**
629-
This document uses capitalized Bitcoin to refer to the system, network and abstract concept, and only uses lowercase
630-
bitcoin to refer to units of the bitcoin currency.
631650
[^standard-track]: **Why was the Specification type introduced?**
632651
The definitions of Informational and Standards Track BIPs caused some confusion in the past. Due to Informational
633652
BIPs being described as optional, Standards Track BIPs were sometimes misunderstood to be generally recommended.
@@ -641,13 +660,13 @@ feedback, and helpful comments.
641660
only a handful of contributors commenting at all. This led to many situations in which one or two comments ended up
642661
dominating the comment summary. While some of those comments may have been representative of broadly held opinions,
643662
it also overstated the importance of individual comments directly in the Preamble of BIPs. As collecting feedback in
644-
this accessible fashion failed, the new process puts the onus back on the audience to make their own evaluation.
663+
this accessible fashion failed, the new process puts the burden back on the audience to make their own evaluation.
645664
[^layer]: **Why is the layer header now permitted for other BIP types?**
646665
The layer header had already been used by many Informational BIPs, so the rule that it is only available to
647666
Standards Track BIPs is dropped.
648667
[^OtherImplementations]: **What is the issue with "Other Implementations" sections in BIPs?**
649668
In the past, some BIPs had "Other Implementations" sections that caused frequent change requests to existing BIPs.
650-
This put an onus on the BIP authors, and frequently led to lingering pull requests due to the corresponding BIPs’
669+
This put a burden on the BIP authors and BIP Editors, and frequently led to lingering pull requests due to the corresponding BIPs’
651670
authors no longer participating in the process. Many of these alternative implementations eventually became
652671
unmaintained or were low-quality to begin with. Therefore, "Other Implementations" sections are heavily discouraged.
653672
[^complete]: **Why was the Proposed status renamed to Complete?**

bip-0053.mediawiki

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ This has been mitigated by Bitcoin Core's relay policy and the RPC interface sin
3838
64-byte transactions introduce block malleability. Malicious peers can construct consensus valid and invalid 64-byte
3939
transactions that have the same serialization as the concatenation of 2 hashes in the Merkle tree.
4040

41-
Assume we have a valid Bitcoin block with 2 transactions in it that have transaction ids of T<sub>0</sub> and T<sub>1</sub>.
42-
The Merkle root for this block is H(T<sub>0</sub>||T<sub>1</sub>).
43-
A malicious user could find a 64-byte transaction T<sub>m</sub> that serializes to T<sub>0</sub>||T<sub>1</sub>.
41+
Assume we have a valid Bitcoin block with 2 transactions in it with Txid<sub>0</sub> and Txid<sub>1</sub>.
42+
The Merkle root for this block is H(Txid<sub>0</sub>||Txid<sub>1</sub>).
43+
A malicious user could find a 64-byte transaction T<sub>m</sub> that serializes to Txid<sub>0</sub>||Txid<sub>1</sub>.
4444
Next that user relays the block containing the malicious T<sub>m</sub> rather than the
45-
valid Bitcoin transactions that correspond with T<sub>0</sub> and T<sub>1</sub>.
45+
valid Bitcoin transactions that correspond to Txid<sub>0</sub> and Txid<sub>1</sub>.
4646

4747
==== Block malleability with consensus INVALID transactions ====
4848

@@ -84,7 +84,7 @@ are less constrained than the first 32 bytes) are constructed so that they colli
8484
with the hash of some other fake, invalid transaction F. The attacker can fool the SPV client into believing that F
8585
was included in a Bitcoin block rather than T with 81 bits<ref>[[bip-0053/2-BitcoinMerkle.pdf|An attacker who can do 81 bits of work (followed by another 40 bits of work, to
8686
construct the funding transaction whose coins will be spent by this one) is able
87-
to fool an SPV client in this way.]]</ref> of work. This also reduces implementation complexity for SPV wallets<ref>[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/43 The steps needed to make sure a Merkle proof for a transaction is secure.]</ref>.
87+
to fool an SPV client in this way.]]</ref> of work. Disallowing 64-byte transactions reduces implementation complexity for SPV wallets<ref>[https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/43 The steps needed to make sure a Merkle proof for a 64-byte transaction is secure.]</ref>.
8888

8989
==Rationale==
9090

bip-0054.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,8 @@ the grace period used in this proposal, miners should use the `curtime` or `mint
143143
according to this proposal. Note this is not a new requirement: using a timestamp lower than the
144144
`mintime` field from the `getblocktemplate` result already leads to creating an invalid block.
145145

146-
Bitcoin Core as of version 29.0 may relay and create a block template including a transaction that
147-
violates the signature operations limit introduced in this BIP. A newer version of Bitcoin Core
148-
that makes this type of transaction non-standard should be widely adopted before this soft fork is
149-
considered for activation.
146+
Bitcoin Core version [30.0][Core 30.0] and later will not generate a block template including a
147+
transaction that violates the signature operations limit introduced in this BIP.
150148

151149
Bitcoin Core version [0.16.1][Core 0.16.1] and later will neither relay nor create block templates
152150
that include 64-byte transactions.
@@ -156,14 +154,24 @@ knowledge, there does not exist an open source reference broadly in use today fo
156154
We encourage mining pools to update their software to craft coinbase transactions that are
157155
forward-compatible with the changes proposed in this BIP.
158156

157+
## Reference implementation
158+
159+
An implementation of BIP54 for Bitcoin Core is available [here][inquisition-implem].
160+
161+
## Test vectors
162+
163+
Documented test vectors are available [here](./bip-0054/test_vectors/) for all mitigations
164+
introduced in this BIP.
165+
159166
## Acknowledgements
160167

161168
This document builds upon an [earlier proposal][BIP-XXXX] by Matt Corallo.
162169

163170
The authors would like to thank everyone involved in researching the most appropriate mitigation for
164171
each of these bugs. We would like to thank in particular Anthony Towns and Sjors Provoost for their
165172
direct contributions to this proposal, as well as @0xb10c and Brian Groll for providing the authors
166-
with data to analyze the proposed mitigations.
173+
with data to analyze the proposed mitigations. Thanks to Chris Stewart for digging up historical
174+
violations to the new transaction size rule, which are partially reused in this BIP's test vectors.
167175

168176
## Copyright
169177

@@ -234,3 +242,5 @@ notably of Bitcoin Core but also of all other implementations the authors are aw
234242
[Delving duplicable]: https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/4
235243
[Core 0.16.1]: https://bitcoincore.org/en/releases/0.16.1
236244
[Core 29.0]: https://bitcoincore.org/en/releases/29.0
245+
[inquisition-implem]: https://github.com/darosior/bitcoin/tree/2509_inquisition_consensus_cleanup
246+
[Core 30.0]: https://bitcoincore.org/en/releases/30.0

0 commit comments

Comments
 (0)