1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-08-31 18:47:36 +00:00

4773 Commits

Author SHA1 Message Date
Jon Atack
2a783793f4 Merge pull request #2267 from guggero/bip379-malleability-caveat
BIP-379: note that the type properties assume their requirements
2026-08-30 15:06:53 -07:00
Oli
acbc7b000b bip379: note that the type properties assume their requirements
Both tables give the properties of a fragment in function of those of its
subexpressions, and both are written assuming that the conditions in the
"Requires" column of that fragment hold. Where they do not, the tables
still assign values, but the values carry none of the meaning the
descriptions of the properties give them, and implementations are free to
differ on them.

thresh is the case that surfaced this. Its rule is "e=all are s", so
thresh(2,or_i(pk(A),pk(B)),a:or_i(pk(C),pk(D))) is "e" even though each
or_i child has two unconditional dissatisfactions, giving the threshold
four, which is the opposite of the "unique unconditional dissatisfaction"
that the description of "e" promises. The threshold fails the "e"
requirement the same table imposes, though, so it is malleable and the
value is a don't-care.

Say so below both tables, so that implementations which disagree on the
type of an invalid or malleable expression are not read as contradicting
this document. Bitcoin Core (bitcoin/bitcoin#36028) and rust-miniscript
are aligning on the values the tables give, and the test vectors proposed
in #2240 leave out the properties that are not meaningful: z/o/n/d/u for
invalid expressions and s/f/e for malleable ones.
2026-08-30 19:44:35 +02:00
Jon Atack
7fe0b034ec Merge pull request #2263 from sipa/202708_bip379_typo
Fix typo in BIP-379 malleability requirement rule
2026-08-20 10:14:27 -07:00
Pieter Wuille
25fd6bfeeb Fix typos in BIP-379 or_b and and_b malleability rules 2026-08-19 17:26:29 -04:00
SatsAndSports
eba8e50cb6 BIP-327: correct PartialSigAgg session-value unpacking and a typo (#2260)
* BIP-327: correct PartialSigAgg session-value unpacking and a typo

Co-authored-by: Jon Atack <jon@atack.com>
2026-08-19 13:53:39 -07:00
Murch
c2008a0663 Merge pull request #2215 from murchandamus/bip351-close
bip351: close due to lack of activity
2026-08-19 13:17:39 -07:00
Jon Atack
9934351d8b Merge pull request #2261 from SatsAndSports/fix-bip327-tests-mypy
BIP-327: fix reference.py type errors failing tests.sh
2026-08-19 08:18:29 -07:00
Sats And Sports
ccb5415095 BIP-327: fix reference.py type errors failing tests.sh 2026-08-18 18:41:24 +02:00
Murch
857a7debc6 Merge pull request #2243 from jonatack/2026-08-add-security_md-document
Add SECURITY.md
2026-08-17 14:33:23 -07:00
Jon Atack
5c84a15bd4 Merge pull request #2126 from ethicnology/bip85-nostr-application-86
BIP85: add Nostr application
2026-08-17 10:22:09 -07:00
Jon Atack
a30de518e8 Merge pull request #2253 from questfever/master
BIP375: correctly detect SegWit v2+ witness programs
2026-08-17 09:55:28 -07:00
Murch
d923cb825c Merge pull request #2233 from grandpig/master
scripts: validate the first Comments-URI entry
2026-08-14 17:05:25 -07:00
Jon Atack
d8cb214773 Add SECURITY.md
Co-authored-by: Murch <murch@murch.one>
Co-authored-by: Anthony Towns <aj@erisian.com.au>
Co-authored-by: Edil Medeiros <jose.edil@gmail.com>
2026-08-13 12:04:19 -06:00
questfever
e726d13ade BIP375: correctly detect SegWit v2+ witness programs 2026-08-13 17:29:30 +08:00
Murch
60f5b33b0a Merge pull request #2252 from jurvis/bip89-deployed
bip89: advance to deployed
2026-08-12 21:22:56 -07:00
Jurvis Tan
b7bf6dda11 docs: advance bip89 to deployed 2026-08-12 21:09:47 -07:00
Murch
fe2d6caf85 Merge pull request #2250 from liamgilligan/bip324-method-name
BIP-324: Correct method name in handshake diagram
2026-08-12 10:35:03 -07:00
grandpig
6d5fc819a6 scripts: validate the first Comments-URI entry
Signed-off-by: grandpig <grandpig@outlook.com>
2026-08-12 22:31:30 +08:00
Liam Gilligan
3e4829c802 bip324: update method name for consistency
In everywhere except the handshake diagram, the transport initialization method name is `initialize_v2_transport`, but was `v2_initialize` in the diagram.
2026-08-11 13:51:40 -07:00
Murch
c38071c8c4 Merge pull request #2245 from jonatack/2026-08-bip110-status-update
BIP110: update status to Closed
2026-08-10 14:05:56 -07:00
Jon Atack
996d09a3b4 Merge pull request #2248 from murchandamus/editors-luke
process: Remove Luke from BIP Editors
2026-08-10 13:36:00 -07:00
Jon Atack
e4c6bbc099 bip110: update status to closed 2026-08-10 14:04:09 -06:00
Murch
967ed3fa0b process: Remove Luke from BIP Editors 2026-08-09 09:14:53 -07:00
Murch
1edd2f7be0 Merge pull request #2225 from dathonohm/bip110-p2a-clarification
BIP-110: Clarify P2A exemption in rule 3 requires an empty witness stack
2026-08-09 08:48:18 -07:00
Murch
b01048ebee bip110: Adopt John Moffett’s description of BIP433 relationship
Co-authored-by: John Moffett <116917595+john-moffett@users.noreply.github.com>
2026-08-09 08:46:25 -07:00
Jon Atack
ed4ffcb6a4 Merge pull request #2234 from brunoerg/2026-08-bip155
BIP155: mention IPv4-in-IPv6 range MUST NOT be sent within IPV6
2026-08-06 13:09:21 -07:00
Jon Atack
c536a9ba99 Merge pull request #2239 from guggero/descriptors-bugfix
BIP-{383,386,389,390}: fix small issues and discrepancies
2026-08-06 13:02:52 -07:00
Oli
19d6e7f204 bip383: specify more precise script size limit
The "15 compressed public keys" rule is not very precise and
doesn't mention uncompressed ones.
Core implements this differently as well:
https://github.com/bitcoin/bitcoin/blob/master/src/script/descriptor.cpp#L2425
So we make the definition more precise.
2026-08-06 11:01:30 +02:00
Oli
279395a60c bip383: fix incomplete sentence 2026-08-06 11:01:30 +02:00
Oli
d7854890ac bip386: update stale sentence
New BIPs with more allowed expressions within a tr() tree
have been added and are worth mentioning.
2026-08-06 11:01:30 +02:00
Oli
83c04884a1 bip386: remove stray space
A stray space is not allowed inside such an expression.
2026-08-06 11:01:30 +02:00
Oli
9570a72d50 bip389: remove H as valid hardened step indicator
In BIP380 the capital letter H is explicitly defined as an invalid
indicator for a hardened step. The "Invalid expression" section has
explicit examples prefixed "Invalid hardened indicators" that show
"0H/0H/0H" as being wrong.
2026-08-06 11:01:30 +02:00
Oli
7517a8b2ac bip390: fix missing parenthesis in test vector 2026-08-06 11:01:30 +02:00
Oli
384a2e1351 bip389: fix missing parenthesis in test vector 2026-08-06 11:01:30 +02:00
Murch
01d2c8410f Merge pull request #2236 from murchandamus/bip8-fix-mediawiki-syntax
bip8: Fix mediawiki syntax for bold
2026-08-05 11:42:06 -07:00
Murch
3783cf7d40 bip8: Fix mediawiki syntax for bold 2026-08-05 11:40:53 -07:00
Jon Atack
2204562044 Merge pull request #2163 from murchandamus/bip8-complete
bip8: Advance to Complete
2026-08-04 21:18:41 -07:00
Murch
1766568df5 bip8: Advance to Complete 2026-08-03 15:38:59 -07:00
Murch
72fb11fae7 bip8: Add Changelog 2026-08-03 15:38:55 -07:00
Bruno Garcia
8a4ed72e28 BIP155: mention IPv4-in-IPv6 range MUST NOT be sent within IPV6 2026-08-03 11:21:42 -03:00
ethicnology
6209768676 bip85: add Nostr application 128002' 2026-08-03 09:01:17 -04:00
ethicnology
9385cd2dd8 bip85: remove obsolete reference implementations 2026-08-03 08:59:53 -04:00
ethicnology
ed669a4caa typos: move Strnad to extend-words 2026-08-03 08:59:38 -04:00
Jon Atack
e7263a4cfe Merge pull request #2223 from jeanpablojp/bip360-fix-size-claim
bip360: correct the claimed P2MR witness size saving
2026-08-02 21:03:44 -07:00
Jon Atack
74e01fc6a3 Merge pull request #2229 from fametrano/invalidate-example-addresses
BIP321: make all example addresses intentionally invalid
2026-08-02 20:52:56 -07:00
Jon Atack
9f65bdbad1 Merge pull request #2221 from jeanpablojp/bip360-fix-links
bip360: fix stale links, version header and a size example label
2026-08-01 17:32:27 -07:00
Jon Atack
b31410ca58 Merge pull request #2220 from jeanpablojp/bip360-fix-pqc-vectors
bip360: fix leafHashes order and a control byte in the pqc test vectors
2026-08-01 09:34:22 -07:00
Ferdinando Ametrano
644e484d4a BIP321: make all example addresses intentionally invalid
The base58 example address has an intentionally invalid checksum, but
the bech32 and bech32m examples added later have valid checksums, so
they are spendable addresses that a reader may pay by accident -- the
very hazard that motivated the invalid base58 address in #119. Two of
them are mainnet:

  bc1qufgy354j3kmvuch987xe4s40836x3h0lg8f5n2  (bech32, witness v0)
  bc1p5swkugezn...vep9m4p7339x5qzyrh4g        (bech32m, witness v1)
  tb1qghfhmd4zh7ncpmxl3qzhmq566jk8ckq4gafnmg  (bech32, testnet)

Alter the final checksum character of each, and document the intent
with the note BIP 21 received in #1861. Bech32 detects any
single-character substitution, so the modified strings cannot be valid
addresses. The human-readable part, charset and length are unchanged,
so the examples remain structurally representative of P2WPKH and P2TR.

The uppercase QR-code variants are updated to match, and the changed
testnet address in the "Invalid URIs" section still demonstrates the
same point (a `tb` address in the `bc` parameter).

Alternative to #2228, which leaves the addresses untouched and instead
words the note to match them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 23:00:39 +02:00
Dathon Ohm
2dfb201b27 BIP-110: Add rule 3 test vectors for the P2A empty-witness requirement
Co-Authored-By: jarolrod <jarolrod@tutanota.com>
2026-07-29 14:48:35 -06:00
Dathon Ohm
ae98a6ed47 BIP-110: Add Defined witness versions subsection clarifying the rule 3 P2A exemption 2026-07-29 14:48:32 -06:00