Skip to content

Commit 00eef77

Browse files
update bips submodule and build
1 parent 449fedd commit 00eef77

450 files changed

Lines changed: 646 additions & 371 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

web/content/352/bip-0352/send_and_receive_test_vectors.json

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3186,6 +3186,140 @@
31863186
}
31873187
]
31883188
},
3189+
{
3190+
"comment": "Input keys intermediate sum is zero but final sum is non-zero",
3191+
"sending": [
3192+
{
3193+
"given": {
3194+
"vin": [
3195+
{
3196+
"txid": "3a286147b25e16ae80aff406f2673c6e565418c40f45c071245cdebc8a94174e",
3197+
"vout": 0,
3198+
"scriptSig": "",
3199+
"txinwitness": "0247304402203e5537fa8c876b3475e7efe4f1474b0f48b7a6e4169179db5de9bb5b55ad1bd10220200e06f8f4d29dbc48bbcdf90df3278e798ce6cbf3c9fbf90427599fde147867012102557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975",
3200+
"prevout": {
3201+
"scriptPubKey": {
3202+
"hex": "00149d9e24f9fab4e35bf1a6df4b46cb533296ac0792"
3203+
}
3204+
},
3205+
"private_key": "a6df6a0bb448992a301df4258e06a89fe7cf7146f59ac3bd5ff26083acb22ceb"
3206+
},
3207+
{
3208+
"txid": "3a286147b25e16ae80aff406f2673c6e565418c40f45c071245cdebc8a94174e",
3209+
"vout": 1,
3210+
"scriptSig": "",
3211+
"txinwitness": "0247304402207fdad0faf46edc54f5a5c67d33b2fa8d3f1fdc869381fd96e659f9e0c470ab1e022044f0d973339618b18667cef9a6251817f7f431f7f2b252a8cb760ccb40e7d823012103557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975",
3212+
"prevout": {
3213+
"scriptPubKey": {
3214+
"hex": "00149860538b5575962776ed0814ae222c7d60c72d7b"
3215+
}
3216+
},
3217+
"private_key": "592095f44bb766d5cfe20bda71f9575ed2df6b9fb9addc7e5fdffe0923841456"
3218+
},
3219+
{
3220+
"txid": "3a286147b25e16ae80aff406f2673c6e565418c40f45c071245cdebc8a94174e",
3221+
"vout": 2,
3222+
"scriptSig": "",
3223+
"txinwitness": "0247304402203e5537fa8c876b3475e7efe4f1474b0f48b7a6e4169179db5de9bb5b55ad1bd10220200e06f8f4d29dbc48bbcdf90df3278e798ce6cbf3c9fbf90427599fde147867012102557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975",
3224+
"prevout": {
3225+
"scriptPubKey": {
3226+
"hex": "00149d9e24f9fab4e35bf1a6df4b46cb533296ac0792"
3227+
}
3228+
},
3229+
"private_key": "a6df6a0bb448992a301df4258e06a89fe7cf7146f59ac3bd5ff26083acb22ceb"
3230+
}
3231+
],
3232+
"recipients": [
3233+
{
3234+
"address": "sp1qqgste7k9hx0qftg6qmwlkqtwuy6cycyavzmzj85c6qdfhjdpdjtdgqjuexzk6murw56suy3e0rd2cgqvycxttddwsvgxe2usfpxumr70xc9pkqwv",
3235+
"scan_pub_key": "0220bcfac5b99e04ad1a06ddfb016ee13582609d60b6291e98d01a9bc9a16c96d4",
3236+
"spend_pub_key": "025cc9856d6f8375350e123978daac200c260cb5b5ae83106cab90484dcd8fcf36"
3237+
}
3238+
]
3239+
},
3240+
"expected": {
3241+
"outputs": [
3242+
[
3243+
"7e88a7536c90770be4d2693a84ed03abe3fdcc5a29f96ec3433effec3b0c2194"
3244+
]
3245+
],
3246+
"shared_secrets": [
3247+
"037dc4e5904ab4770dbdbb628860b54265fdbb7810b8afdf9f582fedaabfdebef0"
3248+
],
3249+
"input_private_key_sum": "a6df6a0bb448992a301df4258e06a89fe7cf7146f59ac3bd5ff26083acb22ceb",
3250+
"input_pub_keys": [
3251+
"02557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975",
3252+
"03557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975",
3253+
"02557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975"
3254+
]
3255+
}
3256+
}
3257+
],
3258+
"receiving": [
3259+
{
3260+
"given": {
3261+
"vin": [
3262+
{
3263+
"txid": "3a286147b25e16ae80aff406f2673c6e565418c40f45c071245cdebc8a94174e",
3264+
"vout": 0,
3265+
"scriptSig": "",
3266+
"txinwitness": "0247304402203e5537fa8c876b3475e7efe4f1474b0f48b7a6e4169179db5de9bb5b55ad1bd10220200e06f8f4d29dbc48bbcdf90df3278e798ce6cbf3c9fbf90427599fde147867012102557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975",
3267+
"prevout": {
3268+
"scriptPubKey": {
3269+
"hex": "00149d9e24f9fab4e35bf1a6df4b46cb533296ac0792"
3270+
}
3271+
}
3272+
},
3273+
{
3274+
"txid": "3a286147b25e16ae80aff406f2673c6e565418c40f45c071245cdebc8a94174e",
3275+
"vout": 1,
3276+
"scriptSig": "",
3277+
"txinwitness": "0247304402207fdad0faf46edc54f5a5c67d33b2fa8d3f1fdc869381fd96e659f9e0c470ab1e022044f0d973339618b18667cef9a6251817f7f431f7f2b252a8cb760ccb40e7d823012103557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975",
3278+
"prevout": {
3279+
"scriptPubKey": {
3280+
"hex": "00149860538b5575962776ed0814ae222c7d60c72d7b"
3281+
}
3282+
}
3283+
},
3284+
{
3285+
"txid": "3a286147b25e16ae80aff406f2673c6e565418c40f45c071245cdebc8a94174e",
3286+
"vout": 2,
3287+
"scriptSig": "",
3288+
"txinwitness": "0247304402203e5537fa8c876b3475e7efe4f1474b0f48b7a6e4169179db5de9bb5b55ad1bd10220200e06f8f4d29dbc48bbcdf90df3278e798ce6cbf3c9fbf90427599fde147867012102557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975",
3289+
"prevout": {
3290+
"scriptPubKey": {
3291+
"hex": "00149d9e24f9fab4e35bf1a6df4b46cb533296ac0792"
3292+
}
3293+
}
3294+
}
3295+
],
3296+
"outputs": [
3297+
"7e88a7536c90770be4d2693a84ed03abe3fdcc5a29f96ec3433effec3b0c2194"
3298+
],
3299+
"key_material": {
3300+
"spend_priv_key": "9d6ad855ce3417ef84e836892e5a56392bfba05fa5d97ccea30e266f540e08b3",
3301+
"scan_priv_key": "0f694e068028a717f8af6b9411f9a133dd3565258714cc226594b34db90c1f2c"
3302+
},
3303+
"labels": []
3304+
},
3305+
"expected": {
3306+
"addresses": [
3307+
"sp1qqgste7k9hx0qftg6qmwlkqtwuy6cycyavzmzj85c6qdfhjdpdjtdgqjuexzk6murw56suy3e0rd2cgqvycxttddwsvgxe2usfpxumr70xc9pkqwv"
3308+
],
3309+
"outputs": [
3310+
{
3311+
"priv_key_tweak": "3d5b7a284108f93b9fe78f2c300d2ca9ef3b4e0cd0de673fc72990f2a4f417b9",
3312+
"pub_key": "7e88a7536c90770be4d2693a84ed03abe3fdcc5a29f96ec3433effec3b0c2194",
3313+
"signature": "f8d5222f1a682215c40ab677f2104606f2a0e6c5cb1a2d248d970fb61d4eadb31702353e6b41ea5a9b24817efa0eaf535552eeee8a794b662c3cf303b6c86672"
3314+
}
3315+
],
3316+
"tweak": "039c68bacb7efbf2175d781822f460afc4839a5798fabb055b50d939231bf57bb6",
3317+
"shared_secret": "037dc4e5904ab4770dbdbb628860b54265fdbb7810b8afdf9f582fedaabfdebef0",
3318+
"input_pub_key_sum": "02557ef3e55b0a52489b4454c1169e06bdea43687a69c1f190eb50781644ab6975"
3319+
}
3320+
}
3321+
]
3322+
},
31893323
{
31903324
"comment": "Maximum per-group recipient limit K_max is exceeded (2324 matches): sending fails, receiver doesn't scan beyond limit",
31913325
"sending": [

web/content/352/index.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ Bob must calculate the same _input_hash_ when scanning.
123123

124124
** Using all inputs **
125125

126-
In our simplified example we have been referring to Alice's transactions as having only one input _A_, but in reality a Bitcoin transaction can have many inputs. Instead of requiring Alice to pick a particular input and requiring Bob to check each input separately, we can instead require Alice to perform the tweak with the sum of the input public keys<ref name="other_inputs">**What about inputs without public keys?** Inputs without public keys can still be spent in the transaction but are simply ignored in the silent payments protocol.</ref>. This significantly reduces Bob's scanning requirement, makes light client support more feasible<ref name="using_all_inputs">**How does using all inputs help light clients?** If Alice uses a random input for the tweak, Bob necessarily has to have access to and check all transaction inputs, which requires performing an ECC multiplication per input. If instead Alice performs the tweak with the sum of the input public keys, Bob only needs the summed 33 byte public key per transaction and only does one ECC multiplication per transaction. Bob can then use BIP158 block filters to determine if any of the outputs exist in a block and thus avoids downloading transactions which don't belong to him. It is still an open question as to how Bob can source the 33 bytes per transaction in a trustless manner, see <a href="#appendix-a-light-client-support" target="_blank">Appendix A: Light Client Support</a> for more details.</ref>, and protects Alice's privacy in collaborative transaction protocols such as CoinJoin<ref name=""all_inputs_and_coinjoin">**Why does using all inputs matter for CoinJoin?** If Alice uses a random input to create the output for Bob, this necessarily reveals to Bob which input Alice has control of. If Alice is paying Bob as part of a CoinJoin, this would reveal which input belongs to her, degrading the anonymity set of the CoinJoin and giving Bob more information about Alice. If instead all inputs are used, Bob has no way of knowing which input(s) belong to Alice. This comes at the cost of increased complexity as the CoinJoin participants now need to coordinate to create the silent payment output and would need to use <a href="https://gist.github.com/RubenSomsen/be7a4760dd4596d06963d67baf140406" target="_blank">Blind Diffie–Hellman</a> to prevent the other participants from learning who Alice is paying. Note it is currently not recommended to use this protocol for CoinJoins due to a lack of a formal security proof.</ref>.
126+
In our simplified example we have been referring to Alice's transactions as having only one input _A_, but in reality a Bitcoin transaction can have many inputs. Instead of requiring Alice to pick a particular input and requiring Bob to check each input separately, we can instead require Alice to perform the tweak with the sum of the input public keys<ref name="other_inputs">**What about inputs without public keys?** Inputs without public keys can still be spent in the transaction but are simply ignored in the silent payments protocol.</ref>. This significantly reduces Bob's scanning requirement, makes light client support more feasible<ref name="using_all_inputs">**How does using all inputs help light clients?** If Alice uses a random input for the tweak, Bob necessarily has to have access to and check all transaction inputs, which requires performing an ECC multiplication per input. If instead Alice performs the tweak with the sum of the input public keys, Bob only needs the summed 33 byte public key per transaction and only does one ECC multiplication per transaction. Bob can then use BIP158 block filters to determine if any of the outputs exist in a block and thus avoids downloading transactions which don't belong to him. It is still an open question as to how Bob can source the 33 bytes per transaction in a trustless manner, see <a href="#appendix-a-light-client-support" target="_blank">Appendix A: Light Client Support</a> for more details.</ref>, and protects Alice's privacy in collaborative transaction protocols such as CoinJoin<ref name="all_inputs_and_coinjoin">**Why does using all inputs matter for CoinJoin?** If Alice uses a random input to create the output for Bob, this necessarily reveals to Bob which input Alice has control of. If Alice is paying Bob as part of a CoinJoin, this would reveal which input belongs to her, degrading the anonymity set of the CoinJoin and giving Bob more information about Alice. If instead all inputs are used, Bob has no way of knowing which input(s) belong to Alice. This comes at the cost of increased complexity as the CoinJoin participants now need to coordinate to create the silent payment output and would need to use <a href="https://gist.github.com/RubenSomsen/be7a4760dd4596d06963d67baf140406" target="_blank">Blind Diffie–Hellman</a> to prevent the other participants from learning who Alice is paying. Note it is currently not recommended to use this protocol for CoinJoins due to a lack of a formal security proof.</ref>.
127127

128128
Alice performs the tweak with the sum of her input private keys in the following manner:
129129

@@ -584,6 +584,8 @@ The `MAJOR` version is incremented if changes to the BIP are introduced that are
584584
The `MINOR` version is incremented whenever the inputs or the output of an algorithm changes in a backward-compatible way or new backward-compatible functionality is added.
585585
The `PATCH` version is incremented for other changes that are noteworthy (bug fixes, test vectors, important clarifications, etc.).
586586

587+
* **1.1.1** (2026-04-16):
588+
* Add test vector "Input keys intermediate sum is zero but final sum is non-zero"
587589
* **1.1.0** (2026-03-02):
588590
* Introduce per-group recipient limit _K<sub>max</sub>_ to mitigate quadratic scanning behavior for adversarial transactions.<ref name="why_limit_k"></ref>
589591
* **1.0.2** (2025-07-25):

web/public/1/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ <h2>Changelog</h2>
266266
<div data-pagefind-ignore class="w-full flex flex-col items-center space-y-2 text-center">
267267
<div class="flex items-center space-x-2">
268268
<p class="font-bold">Updated</p>
269-
<p class="font-bold">2026-04-17</p>
269+
<p class="font-bold">2026-04-18</p>
270270
</div>
271271
<p>See an issue with rendering or formatting? Submit an issue on <a href="https://github.com/nickmonad/bips.dev" target="_blank">GitHub</a></p>
272272
<p>Do you find this site useful? Please consider <a href="https://buy.tryspeed.com/plink_live_lyek4a2yW2Sn2wfA" target="_blank">donating</a> some sats to support ongoing development.</p>

web/public/10/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ <h2> Reference Implementation </h2>
207207
<div data-pagefind-ignore class="w-full flex flex-col items-center space-y-2 text-center">
208208
<div class="flex items-center space-x-2">
209209
<p class="font-bold">Updated</p>
210-
<p class="font-bold">2026-04-17</p>
210+
<p class="font-bold">2026-04-18</p>
211211
</div>
212212
<p>See an issue with rendering or formatting? Submit an issue on <a href="https://github.com/nickmonad/bips.dev" target="_blank">GitHub</a></p>
213213
<p>Do you find this site useful? Please consider <a href="https://buy.tryspeed.com/plink_live_lyek4a2yW2Sn2wfA" target="_blank">donating</a> some sats to support ongoing development.</p>

web/public/100/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ <h2>Copyright</h2>
197197
<div data-pagefind-ignore class="w-full flex flex-col items-center space-y-2 text-center">
198198
<div class="flex items-center space-x-2">
199199
<p class="font-bold">Updated</p>
200-
<p class="font-bold">2026-04-17</p>
200+
<p class="font-bold">2026-04-18</p>
201201
</div>
202202
<p>See an issue with rendering or formatting? Submit an issue on <a href="https://github.com/nickmonad/bips.dev" target="_blank">GitHub</a></p>
203203
<p>Do you find this site useful? Please consider <a href="https://buy.tryspeed.com/plink_live_lyek4a2yW2Sn2wfA" target="_blank">donating</a> some sats to support ongoing development.</p>

web/public/101/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ <h2>Implementation</h2>
203203
<div data-pagefind-ignore class="w-full flex flex-col items-center space-y-2 text-center">
204204
<div class="flex items-center space-x-2">
205205
<p class="font-bold">Updated</p>
206-
<p class="font-bold">2026-04-17</p>
206+
<p class="font-bold">2026-04-18</p>
207207
</div>
208208
<p>See an issue with rendering or formatting? Submit an issue on <a href="https://github.com/nickmonad/bips.dev" target="_blank">GitHub</a></p>
209209
<p>Do you find this site useful? Please consider <a href="https://buy.tryspeed.com/plink_live_lyek4a2yW2Sn2wfA" target="_blank">donating</a> some sats to support ongoing development.</p>

web/public/102/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ <h2>Implementation</h2>
159159
<div data-pagefind-ignore class="w-full flex flex-col items-center space-y-2 text-center">
160160
<div class="flex items-center space-x-2">
161161
<p class="font-bold">Updated</p>
162-
<p class="font-bold">2026-04-17</p>
162+
<p class="font-bold">2026-04-18</p>
163163
</div>
164164
<p>See an issue with rendering or formatting? Submit an issue on <a href="https://github.com/nickmonad/bips.dev" target="_blank">GitHub</a></p>
165165
<p>Do you find this site useful? Please consider <a href="https://buy.tryspeed.com/plink_live_lyek4a2yW2Sn2wfA" target="_blank">donating</a> some sats to support ongoing development.</p>

web/public/103/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ <h2>Acknowledgements</h2>
178178
<div data-pagefind-ignore class="w-full flex flex-col items-center space-y-2 text-center">
179179
<div class="flex items-center space-x-2">
180180
<p class="font-bold">Updated</p>
181-
<p class="font-bold">2026-04-17</p>
181+
<p class="font-bold">2026-04-18</p>
182182
</div>
183183
<p>See an issue with rendering or formatting? Submit an issue on <a href="https://github.com/nickmonad/bips.dev" target="_blank">GitHub</a></p>
184184
<p>Do you find this site useful? Please consider <a href="https://buy.tryspeed.com/plink_live_lyek4a2yW2Sn2wfA" target="_blank">donating</a> some sats to support ongoing development.</p>

web/public/104/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ <h2>Copyright</h2>
185185
<div data-pagefind-ignore class="w-full flex flex-col items-center space-y-2 text-center">
186186
<div class="flex items-center space-x-2">
187187
<p class="font-bold">Updated</p>
188-
<p class="font-bold">2026-04-17</p>
188+
<p class="font-bold">2026-04-18</p>
189189
</div>
190190
<p>See an issue with rendering or formatting? Submit an issue on <a href="https://github.com/nickmonad/bips.dev" target="_blank">GitHub</a></p>
191191
<p>Do you find this site useful? Please consider <a href="https://buy.tryspeed.com/plink_live_lyek4a2yW2Sn2wfA" target="_blank">donating</a> some sats to support ongoing development.</p>

0 commit comments

Comments
 (0)