1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-06-01 17:15:27 +00:00

4643 Commits

Author SHA1 Message Date
Jon Atack
e85e7ff2a7 Merge pull request #2185 from theStack/bip352-update-headers
BIP-352: sync "Version" header, add "Requires" header
2026-05-31 08:45:50 -07:00
Sebastian Falbesoner
46e7339e9c BIP-352: update "Version" header, add "Requires" header 2026-05-31 13:19:21 +02:00
Jon Atack
1495b684ff Merge pull request #2183 from evanlinjin/fix/174-explicitly-mention-proprietary-fields-as-unknown 2026-05-30 03:22:40 -07:00
志宇
a4668bb203 BIP174: Clarify proprietary fields are retained on finalization
Note that the Input Finalizer retains PSBT_IN_PROPRIETARY fields it does
not understand, treating them like unknown fields so it does not clear
proprietary data it cannot interpret.
2026-05-30 08:04:11 +00:00
Murch
790c777aeb Merge pull request #2178 from pythcoiner/bip_68
BIP68: fix wrong upper bound for nHeight
2026-05-29 16:22:11 -07:00
Murch
fae52468c9 Merge pull request #2182 from evanlinjin/fix/174-input-finalizer-clarification
BIP174: Mention sighash type requirement in Input Finalizer section
2026-05-29 12:00:38 -07:00
Jon Atack
b4241dc504 Merge pull request #2181 from ajtowns/202605-bip434-edits
BIP-434: Various rationale edits
2026-05-29 10:07:18 -07:00
志宇
9633048fc2 BIP174: Mention sighash type requirement in Input Finalizer section
This mirrors the existing PSBT_IN_SIGHASH_TYPE constraint from the
per-input field description. Added to the Input Finalizer section so it
is not missed.
2026-05-29 08:05:19 +00:00
Anthony Towns
18ff6bb77b BIP-434: Various rationale edits 2026-05-29 15:31:11 +10:00
Jon Atack
7f9434c9c8 Merge pull request #2093 from yyhrnk/fix/txfs-index-bounds
BIP-346: correct TxFieldSelector index upper bound
2026-05-28 12:15:54 -07:00
pythcoiner
6ac8c26870 BIP68: fix wrong upper bound for nHeight 2026-05-28 16:11:57 +02:00
Jeremy Rubin
76d434e5fc BIP449: OP_TWEAKADD (#1944)
* BIP: OP_TWEAKADD

* BIP TweakAdd: note on commutativity of tweaking and add test cases

* BIP TweakAdd: Invert Argument Order

* BIP Tweakadd: fix typo & add note on even-y tweaking

* BIP TweakAdd -- add mailing list discussion

* BIP TweakAdd: Add Alpen and MATT mentions

* BIP TweakAdd Formatting Edits

* BIP TWEAKADD remove conventions section

* BIP TWEAKADD formatting fix

* BIP TWEAKADD Move Vectors to end

* BIP TweakAdd: Condense compatibility section

* [BIP-0449] Updates post assignemnt

* [BIP-0449] Normalize Metadata

* Update bip-0449.md Link Text to point to OP of ML Thread
2026-05-23 07:03:53 -07:00
phrwlk
2d12e67b00 BIP-119: use self.stack[-1] in execute_bip_119 (#2043) 2026-05-22 17:22:38 -07:00
Murch
43a4941b37 Merge pull request #2172 from darosior/2605_bip54_complete
BIP 54: progress to Complete
2026-05-22 11:20:32 -07:00
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
Jon Atack
5b118aa337 Merge pull request #2171 from murchandamus/bip10-record-withdrawal
bip10: Record Withdrawal in Changelog
2026-05-21 12:51:38 -07:00
Murch
a766a6e127 Merge pull request #2170 from darosior/bip54_rationale_additions
BIP 54: improve and deduplicate parts of rationale and motivation
2026-05-21 12:06:24 -07: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
Murch
7571cd4489 bip10: Record Withdrawal in Changelog 2026-05-21 10:54:22 -07:00
Jon Atack
242f7d2605 Merge pull request #2167 from murchandamus/bip1-record-close-reason
bip1: Record close reason
2026-05-21 09:54:12 -07:00
Murch
6d95a22232 bip176: Advance to Complete (#2169) 2026-05-21 08:35:25 -07:00
Jon Atack
6a36c4d8b6 Merge pull request #2164 from murchandamus/bip38-deployed
bip38: Advance to Deployed
2026-05-21 08:25:41 -07: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
Jon Atack
4fb5a8afd0 Merge pull request #2166 from murchandamus/bip78-Deployed
bip78: Advance to Deployed
2026-05-21 07:44:53 -07:00
Murch
92d5ce5684 bip1: Record close reason
This commit forgoes introducing a version, as the BIP has been closed
for a decade and it is no longer necessary to update the readers
regarding specification changes of BIP1.
2026-05-20 17:41:21 -07:00
Murch
e872e76a3f bip78: Advance to Deployed
According to the BIP78 itself, there are multiple projects that have
implemented support for this proposal on mainnet:
https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#implementations
2026-05-20 15:49:09 -07:00
Murch
885c7062cd bip38: Advance to Deployed 2026-05-20 15:00:19 -07:00
Antoine Poinsot
19caed45a1 bip-0054: rephrase Timewarp motivation 2026-05-20 16:43:11 -04:00
Yuri S Villas Boas
d293ae1a10 BIP450: Formosa—Seed Encoding per Themed Mnemonic Stories (#2108)
* Formosa as BIP

Mnemonic *sentences* instead of words proposed as forwards- and backwards-compatible expansion to BIP39, itself as Bitcoin Improvement Proposal.

* Update bip.mediawiki

Co-authored-by: Mark "Murch" Erhardt <murch@murch.one>

* Update bip.mediawiki

Satisfying requirement of title in fewer than 50 characters.

* Formosa: address PR #2108 review feedback

Restructure the draft to follow BIP-3 conventions and resolve the issues
raised by reviewers in https://github.com/bitcoin/bips/pull/2108:

- Introduce explicit Specification section with a Terminology subsection
  that distinguishes 'word', 'category', 'theme', 'sentence' and
  'mnemonic' / 'mnemonic story', removing the ambiguity of using
  'sentence' at two different scales.
- Replace the unclear 'if the category is led by another category'
  wording with an explicit LED_BY field description and a step-by-step
  algorithm that covers both the leaderless and led cases.
- Reflow the theme-property list (previously a/b/c/d/e split by an
  intervening paragraph) into a single numbered list so it renders as a
  list rather than as code blocks.
- Add a dedicated Rationale section covering the 33-bit sentence size,
  themed sentences, free-form theme schema, the LED_BY mechanism, the
  re-encoding-through-BIP-39 design, and why custom themes are
  discouraged.
- Add a dedicated Backwards Compatibility section describing
  compatibility at the mnemonic, entropy, and seed levels.
- Add a worked Example section showing a 128-bit entropy being encoded
  into a 4-sentence mnemonic story under a small illustrative theme,
  including bit splitting, FILLING_ORDER vs NATURAL_ORDER, and the
  LED_BY lookup.
- Tighten the Abstract and Motivation; clarify that BIP-39 is itself a
  Formosa theme.

* Formosa: spell out abbreviated table labels

Reviewer on PR #2108 asked for no abbreviations in table labels. Replace:

- ENT / CS / S / MS column headers with 'Initial entropy bits',
  'Checksum bits', 'Total bits', 'Number of sentences', 'Mnemonic
  words (6-word theme)' and 'Mnemonic words (BIP-0039)'.
- 'List size / Bits / Chars to identify / Density (bits/char)' with
  'Wordlist size / Bits per word / Characters to identify / Density
  (bits per character)'.
- ADJ. with ADJECTIVE in the example bit-assignment diagram, and the
  surrounding narrative ENT/MS uses with the spelled-out forms.

The accompanying formulas now use the expanded names too, so the
algorithm description and the table column headers stay consistent.

* Formosa: rebuild Example on the real medieval_fantasy theme

Replace the previous hypothetical 5-category example with one that
mirrors the medieval_fantasy theme actually shipped at
https://github.com/Yuri-SVB/formosa/tree/master/src/mnemonic/themes,
including:

- the real 6 categories with their actual BIT_LENGTHs
  (VERB=5, SUBJECT=6, OBJECT=6, ADJECTIVE=5, WILDCARD=6, PLACE=5,
  summing to 33);
- the real FILLING_ORDER and NATURAL_ORDER;
- the real lead tree (VERB → SUBJECT; SUBJECT → OBJECT and WILDCARD;
  OBJECT → ADJECTIVE; WILDCARD → PLACE), showing that a single
  leader can have several dependent categories;
- a 33-bit block whose decoded indices (28, 32, 63, 27, 46, 29)
  pick existing words and existing sub-list entries: VERB[28]
  =unveil, SUBJECT_under_unveil[32]=king, OBJECT_under_king[63]
  =wine, ADJECTIVE_under_wine[27]=sweet, WILDCARD_under_king[46]
  =queen, PLACE_under_queen[29]=throne_room, yielding the sentence
  'king unveil sweet wine queen throne_room'.

This keeps the worked example faithful to the reference
implementation rather than to a fabricated theme, so that anyone can
reproduce the encoding by parsing medieval_fantasy.json.

* Formosa: explain LED_BY as a primitive next-word predictor

Add a paragraph to the LED_BY rationale clarifying that a Formosa theme
behaves as a primitive language model (next-word predictor): each LED_BY relation
skews the conditional distribution over the next word so that probability
mass falls only on the 2^BIT_LENGTH words compatible with the already-
chosen leader, and zero elsewhere. The theme designer plays the role of
training data, hand-curating which combinations are semantically coherent.
This framing makes explicit why themes produce sentences that 'sound right'
while still covering all 2^33 bit patterns of a sentence.

* Cite the companion project Mooncake (https://github.com/T3-Infosec/mooncake)
which builds on this property by rendering each Formosa category as an
on-screen table whose rows and columns are permuted per input session.

Combined with the randomized-indexation property,
an attacker watching only the screen still learns nothing without also
recovering the press sequence.

Add a Rationale paragraph explaining a further benefit of splitting the
vocabulary into several short wordlists (32-128 entries each): such tables
fit on a mobile-device screen and admit input via on-screen lookup, which
a single 2048-word list does not.

The randomized indexation:

- defeats pure key-logging (keystrokes alone don't reveal words; the
  attacker also needs the session permutation),
- raises the bar for shoulder surfing (same as key-logging: only keys
  AND session's permutation suffice. Either alone is uniformative).

This gives an operational, security-focused argument for the
many-small-lists design that complements the existing memorization and
information-density arguments.

Formosa: document Mooncake's volume-key input on mobile

Add a paragraph to the Mooncake rationale describing the proposed mobile
input mechanism: reuse of the volume-up / volume-down keys as a two-button
binary selector. Because every Formosa category is sized 2^BIT_LENGTH and
the on-screen table is laid out in rows, sub-rows and columns whose counts
are powers of two, narrowing to a single cell takes exactly BIT_LENGTH
presses (5 for a 32-entry category, 6 for 64, 7 for 128). The per-category
press count is invariant therefore uninformative, and equal to the bits of
entropy encoded, and the 'one bit per press' bound matches the existing
side-channel argument.

Add three concrete reasons why volume-key input on mobile resists visual

shoulder surfing better than an on-screen keyboard:

- Subtler input motions: a single finger pressing a side rocker, much
  harder to read from a distance than multi-finger taps on a glass
  keyboard.
- Easy occlusion with the second hand: both volume keys are on one edge
  of the device, so the free hand (or the holding hand's thumb) can
  cover them without obscuring the screen for the user.
- Pocket input via headphone volume buttons: because the protocol is
  purely binary, headphone volume controls are sufficient, letting the
  user keep the buttons in a pocket while operating it by feel and
  removing the input motion from the observer's field of view entirely.

* Update bip.mediawiki

Fixed typo from "dektop"  to "desktop"
Fixed agreement of number from "Those of a mobile device" to "Those of mobile devices"

* Update bip.mediawiki

Substituted triple hyphen for —

Co-authored-by: Murch <murch@murch.one>

* Update bip.mediawiki

Updated title to mention Formosa and be more self-explanatory.

Co-authored-by: Murch <murch@murch.one>

* renamed bip.mediawiki to bip-0450.mediawiki
added 450 to BIP number in preamble
added assigned date to 2023-05-02 (date of first mention in email group) in preamble
added correspondent entry on README.md table

* fixed assignment dated
shortened title

* BIP-450: fix CI lint failures (field order + README filename)

Two issues caused Build-Table-Checks and Diff-Checks to fail on PR #2108:

1. Preamble field order: scripts/buildtable.pl enforces @FieldOrder
   (...License, Discussion, ..., Requires...). The preamble had Requires
   before Discussion, causing buildtable.pl to die "Field order is
   incorrect", which fails Build-Table-Checks and cascades into
   Diff-Checks. Moved the Discussion block above Requires.

2. README table row referenced bip-0450.md, but the file is
   bip-0450.mediawiki. buildtable.pl emits the .mediawiki name, so the
   README row never matched the generated table and Diff-Checks failed.
   Corrected the link target to bip-0450.mediawiki.

Verified locally: buildtable.pl exits 0, diffcheck.sh reports "README
table matches expected table from BIP files", link-format-chk.sh passes.

* bip450: Add dates to discussion header
2026-05-20 12:51:22 -07:00
Jon Atack
16e81515be Merge pull request #2159 from darosior/2505_64b_clarifications_and_rationale
BIP 54: clarify 64-byte transactions item description and rationale
2026-05-19 15:57:51 -07:00
Jon Atack
53cc4e36e9 Merge pull request #2162 from scgbckbone/bip322_break_changes
BIP-322 nit fixes
2026-05-19 14:46:13 -07: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
scgbckbone
6a36f95565 nit fixes 2026-05-19 12:35:02 +02: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
Murch
6deafd07ff Merge pull request #2155 from guggero/bip-0322-follow-up
BIP-0322: polishing follow-up
2026-05-14 05:26:27 -07:00
Oli
46bfccd318 BIP-0322: grammar and readability touchup
Co-authored-by: Jon Atack <jon@atack.com>
2026-05-14 11:30:45 +02:00
Jon Atack
fa4e128f66 Merge pull request #2157 from arminsabouri/fix-bip322-link
Fix bip322 link in bip174 type registry
2026-05-13 10:26:07 -07:00
Armin Sabouri
e5863eb96d Fix bip322 link in bip174 type registry 2026-05-13 11:49:18 -04:00
Oli
352c66b783 BIP-0322: clarify sighash flag for P2TR 2026-05-13 12:49:05 +02:00
Oli
52b2e6d81b BIP-0322: link to later sections for clarity 2026-05-13 12:49:05 +02:00
Oli
ad0e02f746 BIP-0322: change role to author, add required BIPs 2026-05-13 12:49:04 +02:00
Matt Corallo
622e47722c Add BIP323: 24 nVersion bits for general purpose use (#2116) 2026-05-12 16:06:55 -07:00
Jon Atack
fd250df396 Merge pull request #2154 from omipheo/bip-0352-typing-return-annotations
BIP352: complete return type annotations in bitcoin_utils
2026-05-12 09:19:51 -07: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
omipheo
3b76c84d6f BIP352: complete return type annotations in bitcoin_utils
The serialization helpers in bip-0352/bitcoin_utils.py were partially
typed: ser_uint32, hash160, is_p2tr, is_p2wpkh, is_p2sh and is_p2pkh
already declare argument and return types, but the surrounding
from_hex / ser_uint256 / deser_uint256 / deser_txid / deser_compact_size
/ deser_string / deser_string_vector helpers omit them.

Annotate the missing return types (and fill in the obvious argument
types) so the file is consistent and so static analysis can flow types
through callers in reference.py. No behavior changes.
2026-05-08 07:39:17 +02:00