You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: bip-0003.md
+39-20Lines changed: 39 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,21 +30,19 @@ BIP types more clearly, and generalizes the BIP process to fit the community
30
30
31
31
### What is a BIP?
32
32
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
34
34
currency. Most BIPs provide a concise, self-contained, technical description of one new concept, feature, or standard.
35
35
Some BIPs describe processes, implementation guidelines, best practices, incident reports (e.g.,
36
36
[BIP 50](bip-0050.mediawiki)), or other information relevant to the Bitcoin community. However, any topics related to
37
37
the Bitcoin protocol, peer-to-peer network, and client software may be acceptable.
38
38
39
39
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.
44
42
45
43
The scope of the BIPs
46
44
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.
48
46
49
47
### BIP Ownership
50
48
@@ -103,7 +101,9 @@ following list and address each as appropriate.
103
101
implementers and users should deal with these incompatibilities.
104
102
* Reference Implementation — Where applicable, a reference implementation, test vectors, and documentation must be
105
103
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.
107
107
* Changelog — A section to track modifications to a BIP after reaching Complete status.
108
108
* Copyright — The BIP must be placed under an acceptable license (see [BIP Licensing](#bip-licensing) below).
109
109
@@ -157,7 +157,7 @@ appear in the following order. Headers marked with "\*" are optional. All other
157
157
discussion threads on other platforms. Entries take the format "yyyy-mm-dd: URL", e.g., `2009-01-09:
158
158
https://www.mail-archive.com/[email protected]/msg10142.html`, using the date and URL of the start of the
159
159
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.
161
161
* Requires — A list of existing BIPs the new proposal depends on. If multiple BIPs
162
162
are required, they should be listed in one line separated by a comma and space (e.g., "1, 2").
163
163
* 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.
231
231
After fleshing out the proposal further and ensuring that it is of high quality and properly formatted, the authors
232
232
should open a pull request to the [BIPs repository](https://github.com/bitcoin/bips). The document must adhere to the
233
233
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.
235
236
236
237
BIPs that (1) adhere to the formatting requirements, (2) are on-topic, and (3) have materially progressed beyond the
237
238
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
331
332
obvious that the new attempt directly continues work on the same idea, it may be reasonable to return the
332
333
Closed BIP to Draft status.
333
334
334
-
### Changelog
335
+
### Changelog Section and Version Header
335
336
336
337
To help implementers understand updates to a BIP, any changes after it has reached Complete must be tracked with version,
337
338
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:
463
464
The BIP Editors subscribe to the Bitcoin Development Mailing List and watch the [BIPs
464
465
repository](https://github.com/bitcoin/bips).
465
466
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
467
468
to:
468
469
469
470
* Novelty of the idea
@@ -481,22 +482,23 @@ repository](https://github.com/bitcoin/bips) where it may get further feedback.
481
482
482
483
For each new BIP pull request that comes in, an editor checks the following:
483
484
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
485
486
* 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
486
488
* Title accurately describes the content
487
489
* Proposal is of general interest and/or pertains to more than one Bitcoin project/implementation
488
490
* Document is properly formatted
489
491
* Licensing terms are acceptable
490
492
* Motivation, Rationale, and Backward Compatibility have been addressed
491
493
* 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
493
495
* The BIP is ready: it is comprehensible, technically feasible and sound, and all aspects are addressed as necessary
494
496
495
497
Editors do NOT evaluate whether the proposal is likely to be adopted.
496
498
497
499
Then, a BIP Editor will:
498
500
499
-
* Assign a BIP number and BIP type in the pull request
501
+
* Assign a BIP number in the pull request
500
502
* Ensure that the BIP is listed in the [README](README.mediawiki)
501
503
* Merge the pull request when it is ready
502
504
@@ -522,7 +524,7 @@ mentioned in the [Changelog](#changelog) section.
522
524
- The comment system is abolished.[^comments]
523
525
- A BIP in Draft or Complete status may no longer be closed solely on grounds of not making progress for three years.[^rejection]
524
526
- 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.
526
528
- Complete BIPs can only be moved to Closed by its authors and may remain in Complete indefinitely.
527
529
- A Changelog section is introduced to track significant changes to BIPs after they have reached the Complete status.
528
530
- 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
598
600
Existing BIPs retain their license terms unchanged.
599
601
The License and License-Code headers of BIPs are updated to express those terms using SPDX License Expressions.
600
602
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
+
601
623
## Copyright
602
624
603
625
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.
625
647
has frequently led to confusion, with authors using the date of opening the pull request, the date they started
626
648
writing their proposal, the date of number assignment (as prescribed), or various other dates. Aligning the name of
627
649
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.
631
650
[^standard-track]: **Why was the Specification type introduced?**
632
651
The definitions of Informational and Standards Track BIPs caused some confusion in the past. Due to Informational
633
652
BIPs being described as optional, Standards Track BIPs were sometimes misunderstood to be generally recommended.
@@ -641,13 +660,13 @@ feedback, and helpful comments.
641
660
only a handful of contributors commenting at all. This led to many situations in which one or two comments ended up
642
661
dominating the comment summary. While some of those comments may have been representative of broadly held opinions,
643
662
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.
645
664
[^layer]: **Why is the layer header now permitted for other BIP types?**
646
665
The layer header had already been used by many Informational BIPs, so the rule that it is only available to
647
666
Standards Track BIPs is dropped.
648
667
[^OtherImplementations]: **What is the issue with "Other Implementations" sections in BIPs?**
649
668
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’
651
670
authors no longer participating in the process. Many of these alternative implementations eventually became
652
671
unmaintained or were low-quality to begin with. Therefore, "Other Implementations" sections are heavily discouraged.
653
672
[^complete]: **Why was the Proposed status renamed to Complete?**
Copy file name to clipboardExpand all lines: bip-0053.mediawiki
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,11 +38,11 @@ This has been mitigated by Bitcoin Core's relay policy and the RPC interface sin
38
38
64-byte transactions introduce block malleability. Malicious peers can construct consensus valid and invalid 64-byte
39
39
transactions that have the same serialization as the concatenation of 2 hashes in the Merkle tree.
40
40
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>.
44
44
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>.
46
46
47
47
==== Block malleability with consensus INVALID transactions ====
48
48
@@ -84,7 +84,7 @@ are less constrained than the first 32 bytes) are constructed so that they colli
84
84
with the hash of some other fake, invalid transaction F. The attacker can fool the SPV client into believing that F
85
85
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
86
86
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>.
0 commit comments