1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-04-20 16:28:39 +00:00
Commit Graph

4510 Commits

Author SHA1 Message Date
macgyver13
897455dab7 BIP-375: skip ineligible inputs when combining ecdh shares
add fake ecdh share and dleq proof to P2SH input for valid test: two inputs using per-input ECDH shares - only eligible inputs contribute shares (P2SH excluded)

remove unused return string from is_input_eligible
2026-04-05 20:52:23 -04:00
macgyver13
6295a70405 BIP-375: clarify eligible inputs restriction in Computing the Output Scripts text 2026-04-05 19:55:53 -04:00
macgyver13
9536c863cf BIP-375: clarify eligible input restriction in Signer text 2026-04-05 19:55:53 -04:00
macgyver13
7b4f1d6b4e BIP-375: address review feedback
correctly label witness_utxo vs non_witness_utxo key in supplementary inputs

Summary of test vector changes:
removed test: 
- psbt structure: empty PSBT_OUT_SCRIPT field when sending to non-sp output
modified test:
- ecdh coverage: only one ineligible P2SH multisig input when PSBT_OUT_SCRIPT set for sp output
- can finalize: one P2PKH input single-signer
- can finalize: two inputs using per-input ECDH shares - only eligible inputs contribute shares (P2SH excluded)
added test: 
- can finalize: two inputs using global ECDH share - only eligible inputs contribute shares (P2SH excluded)
2026-04-05 19:55:53 -04:00
macgyver13
cf7a16a5f9 BIP-375: update documentation
Update Test Vectors section
Add README.md to explain validation tooling and dependencies
2026-04-04 09:17:46 -04:00
macgyver13
fb105b7e51 BIP-375: add output scripts validation
Add support for computing bip352 output scripts
Extract ECDH shares and public key from PSBT and aggregate both if necessary
Refactor validate_ecdh_coverage to use collect_input_ecdh_and_pubkey
2026-04-04 09:17:46 -04:00
macgyver13
ab30224051 BIP-375: add input eligibility validation
Verify segwit version >1 not used if silent payment outputs present (bip352)
Verify SIGHASH_ALL requirement
2026-04-04 09:17:46 -04:00
macgyver13
6a91f88030 BIP-375: add ecdh coverage validation
Add deps/dleq.py (Adapted from bip-0374/reference.py)
Extract pubkey from PSBT inputs 
- PSBT_IN_BIP32_DERIVATION
- PSBT_IN_WITNESS_UTXO for P2TR
Add script type helpers
- bip352 input eligibility helpers
2026-04-04 09:17:46 -04:00
macgyver13
66053ae879 BIP-375: add test_runner and validate PSBT structure
Implement psbt structure checks
Add test_runner.py for processing test vectors
2026-04-04 09:17:46 -04:00
macgyver13
fc9918d8c0 BIP-375: add BIP375PSBT extension classes
BIP375PSBT (a PSBT subclass that deserializes into BIP375PSBTMap instances)
BIP375PSBTMap (a PSBTMap subclass with BIP-375 field access helpers)
2026-04-04 09:17:46 -04:00
macgyver13
8b46bd63b5 BIP-375: add test vector file 2026-04-04 09:17:46 -04:00
macgyver13
e70510193f Merge commit '96000a36c22f6528e834c54f0d115db675198e57' as 'bip-0375/deps/secp256k1lab' 2026-03-23 17:42:04 -04:00
macgyver13
eedb7f9a31 Squashed 'bip-0375/deps/secp256k1lab/' content from commit 44dc4bd
git-subtree-dir: bip-0375/deps/secp256k1lab
git-subtree-split: 44dc4bd893b8f03e621585e3bf255253e0e0fbfb
2026-03-23 17:42:04 -04:00
macgyver13
a8aa5ed548 BIP-375: Add bitcoin test framework as dependency - deps/bitcoin_test 2026-03-23 17:42:04 -04:00
Gregory Sanders
2778442c21 Add BIP446: OP_TEMPLATEHASH, BIP448: Taproot-native (Re)bindable Transactions (#1974)
Co-authored-by: Antoine Poinsot <darosior@protonmail.com>
2026-03-17 13:01:23 -07:00
Oren
351ceef274 BIP-128: exact specification for the checksum calculation (#2121) 2026-03-16 11:25:46 -07:00
Mark "Murch" Erhardt
b382728379 Merge pull request #2087 from theStack/bip352-vendor-secp256k1lab
BIP-352: vendor secp256k1lab and use it for reference implementation
2026-03-06 14:39:56 -05:00
Sebastian Falbesoner
249bdef156 BIP-352: mention secp256k1lab in BIP text
also fix a small grammar nit (s/are provided/is provided/)
2026-03-06 15:19:09 +01:00
Jon Atack
c0644a054f BIP32: edits by ddustin for clarity (picks up PR785) (#1903)
Co-authored-by: Dusty Daemon <dustinpaystaxes@gmail.com>
Co-authored-by: Pieter Wuille <pieter@wuille.net>
Co-authored-by: Murch <murch@murch.one>
2026-03-05 14:29:32 -05:00
Jon Atack
1656f62a44 Merge pull request #1943 from prestoalvarez/patch-1
BIP69: examples file fixes and update to python3
2026-03-05 10:52:14 -08:00
craigraw
41f9957630 BIP392: Silent Payment Output Script Descriptors (#2047)
* Add sp() output descriptor format for BIP352 Silent Payments

* Update headers and remove space after comma in descriptors

* Add label ranges with examples

* Update with assigned number and adjust preamble for BIP3

* BIP392: Add table entry to README

* Add two argument key expression form and remove birthday and label arguments

* Add BIP392 sp() descriptor to BIP380 script expressions table

* Add sp() descriptor to BIP390 allowed expressions and add musig() example to BIP392

* Add changelog and version header to BIP390
2026-03-05 11:02:52 -05:00
Luke Dashjr
b3ab91fa46 Merge remote-tracking branch 'origin-pull/2115/head' 2026-03-05 03:38:54 +00:00
Dathon Ohm
44b72212f2 BIP-110: Update deployment section with EXPIRED state; add GBT subsection to specification 2026-03-04 21:22:52 -06:00
Dathon Ohm
ddd5db9a63 BIP-110: Clarify rule 2 witness stack element exclusions 2026-03-04 21:01:23 -06:00
moonsettler
f61d4b8ba3 BIP442: OP_PAIRCOMMIT (#1699)
* Add: PAIRCOMMIT

* New revision with Brandon Black

* Fix: Authors and spelling merklize

* Fix: header

* Rework based on feedback from PR 1699

commit ae69991b77830021c34e31d1a65ac6987e2ca1ba
Author: moonsettler <moonsettler@protonmail.com>
Date:   Tue Sep 23 02:23:43 2025 +0200

    Update references

commit 6adcb4e559cd2b67553fa57d193474906c138721
Author: moonsettler <moonsettler@protonmail.com>
Date:   Tue Sep 23 02:15:14 2025 +0200

    General computation simplify wording

commit 2f911cb4ab4b938697e39cb34974fa6fc12bf3b2
Author: moonsettler <moonsettler@protonmail.com>
Date:   Tue Sep 23 01:36:41 2025 +0200

    Rework based on feedback from PR 1699

* More readeable scripts & fix footnotes

* Format and readability improvements

* Update general computation section

* THIKCS cost compare

* Reference BIP-446

* Standard -> Specification

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

* Update header to BIP-3 compatible

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

* Add: Post-History

* Update Cost comparison table

* Post-History -> Discussion

Co-authored-by: Mark "Murch" Erhardt <murch@murch.one>
2026-03-03 14:38:26 -05:00
Sebastian Falbesoner
f2ffa99a4a BIP-352: take use of vendored secp256k1lab for reference implementation
This allows to remove secp256k1.py and replace the secp256k1-specific
parts in the reference implementation. Replacement guide:

    * ECKey -> Scalar
    * ECKey.set(seckey_bytes) -> Scalar.from_bytes_checked(seckey_bytes)
    * seckey.get_pubkey() -> seckey * G
    * seckey.get_bytes() -> seckey.to_bytes()
    * seckey.add(tweak_bytes) -> seckey + Scalar.from_bytes_checked(tweak_bytes)
    * seckey.negate() -> seckey = -seckey
    * seckey.sign_schnorr -> schnorr_sign(..., seckey.to_bytes(), ...)

    * ECPubKey -> GE
    * ECPubKey.set(pubkey_bytes) -> GE.from_bytes_{xonly,compressed}(pubkey_bytes)
    * pubkey.get_y() % 2 == 0 -> pubkey.has_even_y()
    * pubkey.get_bytes(False) -> pubkey.to_bytes_compressed()
    * pubkey.get_bytes() -> pubkey.to_bytes_xonly()
    * not pubkey.valid -> pubkey.infinity
    * pubkey.verify_schnorr -> schnorr_verify(..., pubkey.to_bytes_xonly(), ...)

    * TaggedHash -> tagged_hash
    * hashlib.sha256(preimage).digest() -> hash_sha256(preimage)
2026-03-02 19:17:21 +01:00
Sebastian Falbesoner
511bb99dc4 Merge commit '53b590e190f798131a10a16194261243abdf6b4d' as 'bip-0352/secp256k1lab' 2026-03-02 19:16:00 +01:00
Sebastian Falbesoner
53b590e190 Squashed 'bip-0352/secp256k1lab/' content from commit 44dc4bd
git-subtree-dir: bip-0352/secp256k1lab
git-subtree-split: 44dc4bd893b8f03e621585e3bf255253e0e0fbfb
2026-03-02 19:16:00 +01:00
Casey Rodarmor
6eb7cb38fb Merge pull request #2110 from casey/fix-readme-link
Fix mailing list link in readme
2026-03-02 11:56:42 -05:00
Mark "Murch" Erhardt
6eb01f01bc Merge pull request #2106 from theStack/bip352_limit_max-k-PR
BIP-352: introduce per-group recipient limit K_max (=2323)
2026-03-02 11:54:09 -05:00
Ethan Heilman
9fb88a11b7 bip347: Complete OP_CAT (#2090)
* OP_CAT to BIP 0003 format, add usecase

* draft --> complete

* Update bip-0347.mediawiki

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

* BIP347: Update table entry to complete

* Fix breaking test

* Add test vectors

---------

Co-authored-by: Mark "Murch" Erhardt <murch@murch.one>
2026-03-02 10:34:26 -05:00
Sebastian Falbesoner
b4bc0a88b7 BIP-352: add test vector for exceeding K_max limit [receiver side]
Test case: even though there are 2324 outputs targeted to the recipient,
only 2323 are found due to the introduced K_max limit. Any
implementation following the new BIP protocol rule wouldn't create such
a transaction in the first place, but an attacker might do.

Can be tested by
`$ ./bip-0352/reference.py ./bip-0352/send_and_receive_test_vectors.json`
2026-03-02 13:31:46 +01:00
Sebastian Falbesoner
9830fad214 BIP-352: add test vector for exceeding K_max limit [sender side]
Test case: as the (only) recipient group contains 2324 addresses and
thus exceeds the K_max limit by one, sending fails.

Can be tested by
`$ ./bip-0352/reference.py ./bip-0352/send_and_receive_test_vectors.json`
2026-03-02 13:27:28 +01:00
Sebastian Falbesoner
f14132fc77 BIP-352: test vectors: allow to check found output count for receiving
Introduce an optional "n_outputs" field as alternative to the detailed
"outputs" objects (the field was already specified, but not used so
far). Also update the documentation of the fields.
2026-03-02 13:26:31 +01:00
Sebastian Falbesoner
3aa17caaa3 BIP-352: test vectors: allow specifying repeated recipients for sending
Introduce an optional "count" field for recipient objects.
Also update the documentation of the fields.
2026-03-02 13:26:31 +01:00
Sebastian Falbesoner
f665c2c142 BIP-352: introduce per-group recipient limit K_max (=2323)
In theory this is a backwards incompatible protocol change.
Practically, no existing Silent Payments wallets out there supports
sending to such a high quantity of recipients (not even in terms of
_total_ number of recipients), so the K_max limit should be safe to
introduce, without any negative effects in the wallet ecosystem.
2026-03-02 13:26:25 +01:00
Jon Atack
ced24101c7 Merge pull request #2065 from lisenokdonbassenok/fix/bip310-min-bit-count-param 2026-02-28 05:41:50 -08:00
rkrux
0f307780aa BIP-174: port public key terminology from BIP 373 (#2085)
The changes are ported from PR 1705 so that the same public key
terminology is reflected in BIP 174 as well. Please refer this
other PR for more details.
2026-02-27 17:16:00 -08:00
Jon Atack
95465e0b4f BIP20,21: add Superseded-By and Replaces headers (#1984) 2026-02-27 15:43:46 -08:00
Jon Atack
0780663be1 BIP129: Add Requires header (#2019) 2026-02-27 15:18:38 -08:00
MoNyAvA
e76f0439b3 BIP-383: remove extra stray </tt> (#2061) 2026-02-27 15:03:55 -08:00
Mohammad Eglil
53dac1ba29 bip-0044: add Requires header for BIP32 and BIP43 (#2072) 2026-02-27 14:52:53 -08:00
MoNyAvA
edb6856d25 BIP-117: add missing BIP8 reference (#2080) 2026-02-27 14:40:25 -08:00
Oren
9ff061f8b9 BIP128: Timelock-Recovery Storage Format (#2068)
* new bip: timelock recovery storage format

* Comparison with Script-Based Wallets

* Type is Specification

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

* Change Authors to a single Author

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

* Replace OP_VAULT mention with OP_CHECKCONTRACTVERIFY

* Only the Alert Transaction needs to be non-malleable

* Adding discussion link

* limiting the transactions weight

This is important in order to prevent users from creating
recovery-plans that are hard to propagate.

* Explain anchor-addresses

* fix typo

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

* add surname initial to author name

* Explain unintentional initiation of rrecovery-plan.

* limit alert_inputs length to 2439

* updating bip number to 128

* rename to bip-0128.mediawiki

* BIP 128: Timelock-Recovery storage format

* fix field order, change title to uppercase

* Making plugin_version optional

Relevant only in wallets where
the feature is implemented
via a plugin.

* Removing mainnet

Irrelevant. Obviously a monitoring
service for mainnet should
verify that the addresses
are on mainnet.
2026-02-27 12:24:33 -08:00
Mark "Murch" Erhardt
bd56416786 Merge pull request #2107 from murchandamus/2026-02-bip352-add-thestack
BIP352: Add Sebastian Falbesoner as Author
2026-02-25 10:22:21 -08:00
Murch
9e407af625 BIP352: Add Sebastian Falbesoner as Author 2026-02-24 12:55:34 -08:00
YoCheng
97781eae4d BIP85: fix typo in byte value (#2100) 2026-02-13 11:18:59 -08:00
Hunter Beast
eae7d9fc57 BIP360: Pay to Merkle Root (P2MR) (#1670)
Review comments and assistance by:
  Armin Sabouri <armins88@gmail.com>
  D++ <82842780+dplusplus1024@users.noreply.github.com>
  Jameson Lopp <jameson.lopp@gmail.com>
  jbride <jbride2001@yahoo.com>
  Joey Yandle <xoloki@gmail.com>
  Jon Atack <jon@atack.com>
  Jonas Nick <jonasd.nick@gmail.com>
  Kyle Crews <kylecrews@Kyles-Mac-Studio.local>
  Mark "Murch" Erhardt <murch@murch.one>
  notmike-5 <notmike-5@users.noreply.github.com>
  Vojtěch Strnad <43024885+vostrnad@users.noreply.github.com>

Co-authored-by: Ethan Heilman <ethan.r.heilman@gmail.com>
Co-authored-by: Isabel Foxen Duke <110147802+Isabelfoxenduke@users.noreply.github.com>
2026-02-11 13:01:47 -08:00
Dathon Ohm
ed7af6ae7e BIP 110: Reduced Data Temporary Softfork (#2017)
* Reduced Data Temporary Softfork

* BIP-RDTS: update and expand according to PR feedback

* BIP-RDTS: minor updates to wording to address feedback

* Address PR comments: update Reference Implementation and Deployment

* Address PR comments: Clarify deployment name and bit

* Address PR comments: Update BIP number, creation date, and README entry

* Address @murchandamus X comment: Add activation threshold

* Address PR comments: Update to BIP-3; clarify rationale and deployment

* Address PR comments: Clarify scriptPubKey limit rationale and LOCKED_IN behavior
2026-02-06 16:28:07 -08:00
Paul Miller
10c7888885 Escape pipe character in markdown table (#2095) 2026-02-04 14:39:50 -08:00