1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-10-19 19:29:18 +00:00

4904 Commits

Author SHA1 Message Date
Antoine Poinsot
927b6de991 Address some wording nits in BIP 54 (#2313) 2026-10-02 06:27:57 -07:00
Jon Atack
3a10b5b5f0 Merge pull request #2308 from FlashWayne/bip54-vectors-readme 2026-09-28 08:24:34 -07:00
FlashW
b58f8ef865 bip54: describe the tree format of the timestamp test vectors
Since 977300d timestamps.json is a single JSON object whose children are
nested recursively in extensions arrays, with valid and comment only on the
leaves, but the README still described a flat array of objects with a
header_chain entry.
2026-09-28 18:56:05 +04:00
Jon Atack
4f979daf78 Merge pull request #2286 from wangjingshuiku/master
BIP375: validate PSBT_OUT_SP_V0_LABEL length
2026-09-27 10:55:17 -07:00
Jon Atack
124324eef1 BIP375: add 0.1.2 changelog for LABEL length validation 2026-09-27 11:51:59 -06:00
Jon Atack
02bebeb5ef Merge pull request #2306 from 0xShadowX/bip98-example-proof
bip98: fix the third SKIP hash in the example proof
2026-09-25 11:50:40 -07:00
Jon Atack
f4353baf2c Merge pull request #2304 from Bruce039/bip375-sync-dleq
bip375: sync vendored DLEQ code with BIP-374
2026-09-25 11:10:59 -07:00
Jon Atack
3adfd07791 Merge pull request #2302 from ViniciusCestarii/bip-0352-overview
bip352: fix up undefined index in Overview section
2026-09-25 09:04:51 -07:00
Murch
03cc8540e7 Merge pull request #2305 from 0xShadowX/psbt-registry-p2c-tweak
bip174: add PSBT_IN_P2C_TWEAK to the type registry
2026-09-25 07:33:48 -07:00
Shadow
b48abb1624 bip98: fix the third SKIP hash in the example proof
The example says the skipped hashes are 0x00..., 0x66... and 0x22...,
and traversal-example.dot has 0x22... as the SKIP branch of D, but the
base64 proof ended with 32 bytes of 0x44, which is one of the VERIFY
hashes. Re-encode the proof with 0x22... as the last hash. The length
(101 bytes) and the tree serialization are unchanged.
2026-09-25 16:01:55 +04:00
Shadow
7fb28fa640 bip174: add PSBT_IN_P2C_TWEAK to the type registry
BIP-372 defines PSBT_IN_P2C_TWEAK = 0x19, but the per-input table in the
type registry goes from 0x18 straight to 0x1a.
2026-09-25 15:58:30 +04:00
Bruce0X
7999f8aa1c bip375: sync vendored DLEQ code with BIP-374
bip-0375/deps/dleq.py is adapted from the BIP-374 reference code but
predates the change that treats the challenge e as a scalar (#2262).
Reduce the challenge hash mod n and reject proofs with e >= n, so the
copy used by the BIP-375 validator matches the current BIP-374
reference.
2026-09-25 15:55:49 +04:00
Murch
8c4d9e258b Merge pull request #2300 from Sjors/2026/09/bip138-recipients
bip138: clarify key selection and apply exclusions across expressions
2026-09-24 20:19:29 -07:00
Sjors Provoost
346008db89 bip138: record recipients clarifications in changelog 2026-09-24 20:13:08 -07:00
Sjors Provoost
299442b7de bip138: exclude roots exposed by another expression
A root selected through a derived xpub can also appear bare or as a
literal key. Once a spend reveals it, anyone could decrypt the backup.
Exclude such cases.
2026-09-24 20:11:31 -07:00
Sjors Provoost
bde776ecb8 bip138: collect and deduplicate recipient keys across the backup 2026-09-24 20:11:28 -07:00
Sjors Provoost
11a3be7458 bip138: clarify MuSig participant eligibility
MuSig aggregation hides participant keys, so account xpubs do not need
individual trailing derivation.

Specify that encryption uses participant roots rather than the aggregate key.

Add MuSig2 test vectors: one for a bare aggregate and one for aggregate
derivation.
2026-09-24 20:11:20 -07:00
Sjors Provoost
5fc05e2b17 bip138: generalize key-selection test vectors
Rename keys_types.json to recipient_keys.json and generalize the format
to support multiple descriptors and multiple recipient keys:

- "key": a single key-expression string becomes "descriptors": an array
  of complete descriptor strings.
- "expected": an x-only key string becomes "expected_keys": an array
  containing that key; null remains null.

Convert the nine existing cases by wrapping each key expression in tr(),
except the uncompressed literal uses pk(), since tr() does not accept it.
Each case has one descriptor.
2026-09-24 20:09:33 -07:00
ViniciusCestarii
a99b3d36a7 bip352: fix notation inconsistencies in overview 2026-09-24 19:02:02 -03:00
Murch
d1d2042c85 Merge pull request #2299 from Sjors/2026/09/bip138-encoding
bip138: binary encoding clarifications
2026-09-24 14:54:12 -07:00
Sjors Provoost
62dc1c4e8f bip138: record encoding clarifications in changelog 2026-09-24 14:48:22 -07:00
Sjors Provoost
bf64a12098 bip138: clarify rejection of empty payloads
Clarify that an empty payload contains zero content items. Add a
vector that rejects a payload consisting only of the 0x00 terminator.
2026-09-24 14:47:16 -07:00
Sjors Provoost
aa098559bf bip138: clarify that 0x00 ends payload parsing
Specify that parsing stops immediately. Add a vector with an item followed
by a terminator and ignored bytes.

Clarify that TYPE 0x00 also doesn't require TYPE_LENGTH.
2026-09-24 14:47:14 -07:00
Sjors Provoost
0f8c26b7c2 bip138: specify empty associated data
Make the associated-data input explicit in the encryption and decryption
formulas and specify that it is empty, as used by the existing vectors.
2026-09-24 14:47:10 -07:00
Jon Atack
7c7cb232c2 Merge pull request #2298 from Sjors/2026/09/bip138-metadata
bip138: clarify receive-only descriptor set, 0 birth time, and BIP32 range
2026-09-24 12:18:39 -07:00
Jon Atack
e8987d3e76 Merge pull request #2277 from fametrano/psbt-finalizer-clearing
BIP370: add Input Finalizer section; BIP371: remove finalizer clause from an output field
2026-09-23 16:44:15 -07:00
Ferdinando Ametrano
8629462a94 bip-0371: drop the finalizer clause from PSBT_OUT_TAP_BIP32_DERIVATION
The six taproot input fields say "Finalizers should remove this field
after PSBT_IN_FINAL_SCRIPTWITNESS is constructed", and so does the
output field PSBT_OUT_TAP_BIP32_DERIVATION. An output has no
PSBT_IN_FINAL_SCRIPTWITNESS, the clause names no input, and its two
neighbours in the output table carry no such clause. Drop it; Bitcoin
Core does not clear output fields on finalization.
2026-09-23 22:59:15 +02:00
Ferdinando Ametrano
1e431879af bip-0370: say what the Input Finalizer keeps in a version 2 input
BIP 174 tells the Input Finalizer to clear all other data except the
UTXO and unknown fields from a finalized input. It was written when the
unsigned transaction was a global field. PSBTv2 moves the data that
defines the input into the input map, and a finalizer that follows the
sentence literally removes it: without PSBT_IN_PREVIOUS_TXID or
PSBT_IN_OUTPUT_INDEX the result is invalid, and without
PSBT_IN_SEQUENCE and the locktime fields the Transaction Extractor
builds a different transaction.

BIP 370 amends Creator, Updater, Signer and Transaction Extractor for
PSBTv2, adds the Constructor, and says nothing about the Input
Finalizer. Add the section: the five fields are kept. Bitcoin Core
does this today: at 19b0ff2fa0, PSBTInput::Serialize in src/psbt.h
writes them for every PSBTv2 input, finalized or not.
2026-09-23 22:59:14 +02:00
Murch
fc1b9f40ea Merge pull request #2275 from Sjors/2026/09/psbt-sighash
bip174: add combiner test vector for PSBT_IN_SIGHASH_TYPE
2026-09-23 10:25:00 -07:00
Murch
722d01e5e0 174: consistently indent test vectors 2026-09-23 10:22:22 -07:00
Sjors Provoost
8c1314949e bip138: record metadata clarifications in changelog
Record this branch's clarifications and test vectors under draft document
version 0.1.1. Keep the initial-publication entry in the shared first commit.
2026-09-23 13:59:05 +02:00
Sjors Provoost
ffa6bf4944 bip138: clarify zero and omitted birth times
Explain that zero and omission both mean the birth time is unknown.
Recommend scanning from the wallet birthday if known, otherwise from
genesis.
2026-09-23 13:59:05 +02:00
Sjors Provoost
399ea2a091 bip138: clarify derivation ranges using BIP32
Identify range bounds as BIP32 non-hardened child indexes, ordered from
start to end.
2026-09-23 13:59:05 +02:00
Sjors Provoost
51995cc228 bip138: clarify receive-only descriptor sets
Make change_descriptor explicitly optional for non-multipath descriptors.
Add a receive-only document vector with no change descriptor or optional
metadata; the existing vectors cover a receive/change pair and multipath.
2026-09-23 13:55:04 +02:00
Sjors Provoost
bf63783c10 bip138: introduce changelog at version 0.1.0
Record the initial published draft using the BIP3 document-version
and changelog convention.
2026-09-23 13:27:10 +02:00
Sjors Provoost
bc3b6c1842 bip174: record combiner test vectors in changelog 2026-09-23 12:46:16 +02:00
Sjors Provoost
a17e953782 bip174: record commutativity clarification in changelog 2026-09-23 12:46:03 +02:00
Murch
848dce9a6d Merge pull request #2292 from danielabrozzoni/update_descriptor_bips_to_spec
bip379 to bip390: Update to Specification type
2026-09-22 13:22:13 -07:00
Murch
9ea984930e Merge pull request #2276 from bitsagarob/patch-1
BIP376: keep PSBT_IN_WITNESS_UTXO after finalization
2026-09-22 13:10:20 -07:00
Jon Atack
acdce4d50c Merge pull request #2279 from fametrano/bip352-guard-optional-expected
bip-0352: do not require the optional expected argument
2026-09-21 22:04:59 -07:00
Murch
989df0e893 Merge pull request #1951 from pythcoiner/encrypted_descriptor
BIP138: Compact Encryption Scheme for Non-seed Wallet Data
2026-09-21 13:18:48 -07:00
Jon Atack
9cf75150d2 Merge pull request #2262 from theStack/bip374_treat-e-as-scalar
BIP-374: treat challenge hash result `e` as scalar
2026-09-20 20:21:15 -07:00
Jon Atack
ae34fea045 Merge pull request #2273 from let-the-dreamers-rise/bip360-refimpl-depth-bound-and-raises
bip360: bound merkle depth at 128 and replace validation asserts in ref-impl
2026-09-20 20:14:22 -07:00
Ferdinando Ametrano
8754690b72 bip-0352: do not require the optional expected argument
create_outputs and scanning declare expected with a default of None but
dereference it unconditionally (expected.get(...)), so calling either
without it raises AttributeError, although the parameter is documented
optional. Guard the expected-value checks with `if expected is not None:`.

The self-test, which always passes expected, is unaffected.
2026-09-19 15:03:27 +02:00
Murch
e71448c81f Merge pull request #2296 from murchandamus/2026-09-update-typos-flow
ci: Update typos action to use main branch
2026-09-18 12:02:05 -07:00
Murch
92f4b86430 ci: Update typos action to use main branch
The typos repository switched from the `master` branch to `main`.
2026-09-18 11:54:55 -07:00
Murch
658fe07449 Merge pull request #2259 from ViniciusCestarii/pseudocode-bip-324
bip324: fix handshake pseudocode errors
2026-09-18 11:49:14 -07:00
Daniela Brozzoni
2a20ce4e8e bip390: Update to Specification type 2026-09-17 15:31:24 +02:00
Daniela Brozzoni
c2c39e02f3 bip389: Update to Specification type 2026-09-17 15:31:24 +02:00
Daniela Brozzoni
3ac7c77174 bip387: Update to Specification type 2026-09-17 15:31:24 +02:00