Commit Graph
4940 Commits
Author SHA1 Message Date
Jon Atack a763725aa4 Merge pull request #2345 from MrHodlX/bip373-output-vector
BIP373: replace the duplicated x-only output participant vector
2026-11-04 09:15:00 -06:00
MrHodlX e315654e75 BIP373: replace the duplicated x-only output participant vector 2026-11-04 08:43:47 -05:00
Jon Atack 61ff3f1361 Merge pull request #2311 from jonatack/2026-09-bip375-reference-implementation
bip375: replace stale TODO with reference implementation
2026-11-03 21:42:17 -06:00
Jon Atack ea875b262c Merge pull request #2343 from achow101/375-deputize
375: Add deputy
2026-11-03 21:38:48 -06:00
Jon Atack d5ca385c8e Merge pull request #2212 from fjahr/cisa
BIP460: CISA for Taproot Key Path Spends
2026-11-03 21:33:06 -06:00
Ava Chow e4e02e14cf 375: Deputize macgyver 2026-11-03 19:28:09 -08:00
Fabian Jahr 3886890d7e bip-0460: Add entry to the README index 2026-11-04 11:01:32 +09:00
Fabian Jahr 6ee9ac116e bip-0460: Add CISA for Taproot key path spends 2026-11-04 11:00:26 +09:00
Fabian Jahr 55167425a1 bip-0460: Add vendored BIP 459 reference code 2026-11-04 11:00:26 +09:00
Fabian Jahr 4a801194d5 bip-0460: Add vendored BIP 458 reference code 2026-11-04 11:00:26 +09:00
Fabian Jahr 2106e90394 bip-0460: Add vendored secp256k1lab library 2026-11-04 11:00:25 +09:00
Liam Gilligan 5bbeeae962 BIP461: add test vectors and reference implementation (#2328)
All vectors were tested against libsecp256k1, and
all verification vectors were checked against OpenSSL.
A check was also added to the `verify` specification
to reject pubkeys with x or y coordinates greater than
or equal to `p`.
2026-11-03 14:23:55 -08:00
Jon Atack 21bfd24d6e Merge pull request #2210 from fjahr/fullagg
BIP459: DahLIAS fully aggregated signatures for secp256k1
2026-11-03 12:18:06 -06:00
Fabian Jahr 960e863e57 BIP459: Add entry to the README index 2026-11-03 21:40:46 +09:00
Fabian Jahr f3d1668891 BIP459: Add DahLIAS fully aggregated signatures for secp256k1 2026-11-03 21:39:57 +09:00
Fabian Jahr bd478d5087 BIP459: Add vendored secp256k1lab library
Add a vendored copy of the secp256k1lab library (master branch, commit
a265da139aea27386085a2a8760f8698e1bda64e) that the full-aggregation
reference implementation and test vector scripts depend on.
2026-11-03 21:39:56 +09:00
Jon Atack ada341963a Merge pull request #2205 from fjahr/halfagg
BIP458: Half-Aggregation of BIP 340 Signatures
2026-11-02 10:59:00 -06:00
Fabian Jahr fe7836100e bip-0458: Add entry to the README index 2026-11-01 07:56:15 +01:00
Fabian Jahr 2d439430b1 bip-0458: Add half-aggregation of BIP 340 signatures 2026-11-01 07:56:15 +01:00
Jon Atack 5aadddb511 Merge pull request #2337 from Eunovo/bip352-key-spend-annex-vector
BIP352: add taproot key-path spend with annex vector
2026-10-26 20:41:58 -06:00
Jon Atack f428b62526 Merge pull request #2335 from ViniciusCestarii/bip-374-new-test-vectors
bip374: add new test vectors checking for boundaries
2026-10-26 20:39:29 -06:00
Novo f827c44063 BIP352: add changelog for 1.1.2
Add key-spend with annex test vector log
2026-10-26 14:30:46 +01:00
ViniciusCestarii afaa856630 bip374: add new test vectors checking for boundaries 2026-10-26 07:17:45 -03:00
Novo 3c68d3f3a1 BIP352: add taproot key-path spend with annex vector
Add a BIP-352 test vector where a taproot input is spent via the key path with an annex (2-item witness). The annex must be stripped before deciding between key-path and script-path spends, so the input is still eligible and all expected values match the plain key-path case.

The annex is 0x50 followed by the BIP341 NUMS point H, so an implementation that fails to strip it reads it as a control block with the NUMS internal key and wrongly skips the input.
2026-10-25 17:20:33 +01:00
pythcoiner 100ba872c8 Add BIP139: Wallet Metadata Backup Format (#2130)
* bip139: wallet metadata format

* bip139: add the Version header to the preamble

* bip139: keep a single psbts field and fix the spend status link

* bip139: fold the version section and bip field into the version value

* bip139: capitalize Bitcoin Core and clarify the change_descriptor note

* bip139: replace the three account birth time fields with birth_block

* bip139: drop descriptor_id and change_descriptor_id

* bip139: drop field aliases, keeping name and labels

* bip139: restrict descriptor and change_descriptor to a string

* bip139: make version, type, descriptor, key, txid, outpoint and tweak mandatory

* bip139: move field definitions to a companion registry

* bip139: add the wallet survey behind these decisions

* bip139: replace the wallet description field with a backup note

* bip139: add the backup date field

* bip139: add the account gap_limit field

* bip139: add the multi_bip380 account type

* bip139: give the bip352_labels range an explicit encoding

* bip139: add a general coin object

* bip139: move signers above the account

* bip139: add signer modality and device records

* bip139: add bip85 application and index

* bip139: add Bitkey to the wallet survey

* bip139: state how to derive birth_block from a creation date

* bip139: define the timestamp format once

* bip139: rename the transaction time field to block_time

* bip139: keep last_height on the account only

* bip139: state that type names the descriptor language

* bip139: drop output_type, the descriptor already states it

* bip139: replace the account active flag with a status enum

* bip139: add mutinynet and scope a backup to one network

* bip139: record that the label gap belongs to BIP-329

* bip139: record that proprietary needs no change

* bip139: make the survey annex-ready

* bip139: record that mainnet mnemonics stay out of scope

* bip139: reword the mnemonic evidence heading

* bip139: correct the birth_block evidence, Sparrow stores a height

* bip139: type and descriptor fit every surveyed wallet

* bip139: correct the addr descriptor solvability note

* bip139: re-assess every partial score against fillability

* bip139: store psbts once at wallet level, reference them per account

* bip139: store transactions once at wallet level, reference them per account

* bip139: txid is the transaction map key, not a field

* bip139: refresh the matrix after the fillability re-assessment

* bip139: electrum holds no bip39 mnemonic at all

* bip139: sp_output.label has no constituency

* bip139: collapse the survey to a two-value scale

* bip139: drop the obsolete partial-score analysis

* bip139: size the matrix field column from the data

* bip139: cut the survey down to the table and its results

* bip139: recompute liana compat against the current draft

* bip139: correct the liana breaking-change count

* bip139: make network mandatory

* bip139: network no longer breaks liana on import

* bip139: render wallet fields as a wrapped table

* bip139: render account fields as a wrapped table

* bip139: render every field section as a wrapped table

* bip139: the registry is part of the bip, not a reference to it

* bip139: drop the registration process from the registry intro

* bip139: put field rationale in the cell, not below the table

* bip139: keep code spans whole when wrapping cells

* bip139: render field tables as preformatted blocks

* bip139: drop link definitions the tables no longer use

* bip139: use a bordered grid for the field tables

* bip139: give birth_block an estimation formula and drop the enum underscore

* bip139: merge silent payment outputs into the coin object

* bip139: restore spend_status and give the sp label scalar a home

* bip139: register the transaction fee field

* bip139: rebuild the survey matrix against the current field set

* bip139: drop survey findings the draft now addresses

* bip139: bar passphrase-protected seeds from bip39_mnemonic

* bip139: record the missing-field decisions in the survey

* bip139: cut the survey down to its revision list and matrix

* bip139: reword the survey as a wallet to field mapping

* bip139: reference the wallet support annex from the spec

* bip139: list the mandatory fields in the registry tables

* bip139: point the spec at the registry as the complete field list

* bip139: spell out mandatory and optional in the registry req column

* bip139: mark only the optional fields in the registry tables

* bip139: retitle and reframe the BIP around moving between wallets

* bip139: call the artefact an export throughout

* bip139: scope the mnemonic advice to exports kept as backups

* bip139: say that most metadata cannot be recovered from the chain

* bip139: clarify account and signer metadata fields

* bip139: cut the registry cells back to the field description

* bip139: reword the registry field descriptions

* bip139: give the device record its own registry table

* bip139: keep an unknown enum value from failing the import

* bip139: define the device transports field

* bip139: point the devices row at the device object

* bip139: backup -> export in README

* bip139: clarify export fields and remove survey annex

* bip139: Drop Version header in absence of Changelog
2026-10-24 08:11:13 -07:00
Jon Atack 93f161194f Merge pull request #2338 from fengxueweilai/my_feature
scripts: isolate diffcheck temporary files
2026-10-23 17:14:06 -06:00
Jon Atack 1fec65e55b Merge pull request #2336 from fametrano/bip322-taproot-upgradeable
BIP-0322: name taproot upgrade mechanisms in the upgradeable rules
2026-10-23 14:49:47 -06:00
Ferdinando Ametrano 99ece780c8 BIP-0322: name taproot upgrade mechanisms in the upgradeable rules
The upgradeable rules list the to_sign version, NOPs reserved for
upgrades and segwit versions above 1. BIP341 and BIP342 also reserve
unknown leaf versions, OP_SUCCESSx, unknown public key types and the
annex for upgrades. A verifier that follows the BIP322 text calls a
signature using any of them valid. Name them, so that these give the
inconclusive state like the other upgrade mechanisms.

Bump the version to 2.1.0 and add a changelog entry.
Add 342 to Requires.
2026-10-23 17:05:38 +02:00
fengxueweilai 9b1a7ef537 fix(scripts): isolate diffcheck temporary files
Signed-off-by: fengxueweilai <fengxueweilai@outlook.com>
2026-10-23 17:49:57 +08:00
Jon Atack c0c5aea41e Merge pull request #2334 from ViniciusCestarii/bip-0374-wording-nits 2026-10-21 22:14:03 -06:00
ViniciusCestarii af1e6e27c7 bip374: clarify DLEQ verification wording 2026-10-20 14:03:39 -03:00
Fabian Jahr 1eb496599c bip-0458: Add vendored secp256k1lab library
Add a vendored copy of the secp256k1lab library (master branch, commit
a265da139aea27386085a2a8760f8698e1bda64e) that the half-aggregation
reference implementation and test vector scripts depend on.
2026-10-20 17:53:54 +02:00
ViniciusCestarii e80c8549a1 bip374: justify G as input with a better reasoning 2026-10-20 10:13:45 -03:00
Murch 130b8e0fa7 Merge pull request #2332 from jonatack/2026-10-bip3-update-discussion-headers-to-bip3
bip3: update discussion headers to bip3 format
2026-10-19 14:21:00 -07:00
Jon AtackandAnthony Towns ef5b6ba9d0 bip3: update discussion headers to bip3 format
Co-Authored-By: Anthony Towns <aj@erisian.com.au>
2026-10-19 15:09:00 -06:00
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 7d92f13b83 bip375: replace TODO with reference implementation 2026-09-27 23:32:27 -06: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