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
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
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
pythcoiner
5af62cba99
bip138: address review
2026-08-18 15:15:05 +00:00
pythcoiner
1ad6f11811
bip138: address review
2026-08-18 11:41:38 +00:00
pythcoiner
c21f642b83
bip138: address review
2026-08-18 08:38:49 +00:00
pythcoiner
0fbc187b99
bip138: address review
2026-08-16 06:30:55 +02:00
pythcoiner
65b4c38a02
bip138: address review
2026-07-16 08:32:47 -04:00
pythcoiner
1b1513ebaf
bip138: add acknowledgements
2026-07-16 08:30:15 -04:00
pythcoiner
e1b35253bc
bip138: add Requires header
2026-07-16 08:30:00 -04:00
pythcoiner
5d441163be
bip138: address review
2026-07-16 08:06:52 -04:00
pythcoiner
d041c01f2f
bip138: add a backward compatibility section
2026-07-16 02:38:01 -04:00
pythcoiner
f79d0862b8
bip138: address review
2026-07-16 02:19:27 -04:00
pythcoiner
1a157a6418
bip-138 saturate the decoy bucket at the count limit
2026-07-15 02:32:55 -04:00
pythcoiner
86e10c907e
bip-138 recommend sorting and deduplicating derivation paths
2026-07-15 01:31:30 -04:00
pythcoiner
c1170d4634
bip-138 require warning about excluded key expressions
2026-07-15 00:28:36 -04:00
pythcoiner
317b8fdb2f
bip-138 reference the CHACHA20-POLY1305 rationale footnote
2026-07-15 00:28:26 -04:00
pythcoiner
1de39be4e3
bip-138 document why content LENGTH is mandatory
2026-07-15 00:26:20 -04:00
pythcoiner
9f1be26e2f
bip-138 recommend sorting and deduplicating individual secrets
2026-07-15 00:26:20 -04:00
pythcoiner
1e776e7a72
bip-138 pad individual secrets with decoys
2026-07-15 00:00:09 -04:00
pythcoiner
fb52eaab03
bip-138 document common derivation paths to try automatically
2026-07-15 00:00:08 -04:00
pythcoiner
1358003bc8
bip-138 add string content type
2026-07-14 23:55:04 -04:00
pythcoiner
86f5c28f7c
bip-138 treat content type 0x00 as the end of content items
2026-07-14 23:55:04 -04:00
pythcoiner
56deb75d62
bip-138: allow multiple content items per payload
2026-06-30 10:59:17 -04:00
pythcoiner
99217c680f
bip-138: reference BIP-0139 for wallet backup metadata
2026-06-18 11:47:17 -04:00
pythcoiner
c6b04e23df
bip-138: BIP380 content is a bare descriptor or a JSON document
2026-06-18 11:47:17 -04:00
pythcoiner
d115620881
bip-138: make BIP380 backup content JSON-only
2026-06-18 11:47:17 -04:00
pythcoiner
810b4df73e
bip-138: specify BIP388 wallet policy backup content
2026-06-18 11:46:44 -04:00
pythcoiner
9e2a585a9a
bip-138: specify BIP380 descriptor backup content
2026-06-18 03:44:25 -04:00
pythcoiner
b7ba2840a9
bip-138: clarify CONTENT is a single TLV and forbid all-zero nonce
2026-06-18 03:02:17 -04:00
pythcoiner
72d8a9533f
bip-0138: use assigned BIP number 138 for magic and domain separation tags
2026-06-18 01:51:17 -04:00
pythcoiner
7707cf2935
bip-0138: make PLAINTEXT LENGTH mandatory and add optional payload padding
2026-06-18 01:51:15 -04:00
Murch
e9858e8bbe
Assign BIP138
2026-05-11 13:09:20 -07:00