mirror of
https://github.com/bitcoin/bips.git
synced 2026-05-11 16:51:51 +00:00
Eliminate remaining "user-content" anchor links
This commit is contained in:
@@ -232,7 +232,7 @@ have to be perpetuated for the Consensus Cleanup.
|
|||||||
[BIP16 specs]: https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki#specification
|
[BIP16 specs]: https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki#specification
|
||||||
[SE timewarp]: https://bitcoin.stackexchange.com/questions/75831/what-is-time-warp-attack-and-how-does-it-work-in-general/75834#75834
|
[SE timewarp]: https://bitcoin.stackexchange.com/questions/75831/what-is-time-warp-attack-and-how-does-it-work-in-general/75834#75834
|
||||||
[Delving Murch-Zawy]: https://delvingbitcoin.org/t/zawy-s-alternating-timestamp-attack/1062#variant-on-zawys-attack-2
|
[Delving Murch-Zawy]: https://delvingbitcoin.org/t/zawy-s-alternating-timestamp-attack/1062#variant-on-zawys-attack-2
|
||||||
[BIP94 timewarp]: https://github.com/bitcoin/bips/blob/master/bip-0094.mediawiki#user-content-Time_Warp_Fix
|
[BIP94 timewarp]: https://github.com/bitcoin/bips/blob/master/bip-0094.mediawiki#time-warp-fix
|
||||||
[Sjors grace period]: https://delvingbitcoin.org/t/timewarp-attack-600-second-grace-period/1326
|
[Sjors grace period]: https://delvingbitcoin.org/t/timewarp-attack-600-second-grace-period/1326
|
||||||
[grace period debate summary]: https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/66
|
[grace period debate summary]: https://delvingbitcoin.org/t/great-consensus-cleanup-revival/710/66
|
||||||
[O'Connor OP_CODESEPARATOR]: https://gnusha.org/pi/bitcoindev/CAMZUoKneArC+YZ36YFwxNTKsDtJhEz5P2cosXKxJS8Rf_3Nyuw@mail.gmail.com
|
[O'Connor OP_CODESEPARATOR]: https://gnusha.org/pi/bitcoindev/CAMZUoKneArC+YZ36YFwxNTKsDtJhEz5P2cosXKxJS8Rf_3Nyuw@mail.gmail.com
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ where
|
|||||||
|
|
||||||
After the stack is parsed, the following validation checks are performed:
|
After the stack is parsed, the following validation checks are performed:
|
||||||
|
|
||||||
* Decrement the per-script sigops budget (see [https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki#user-content-Resource_limits BIP-0342]) by 60<ref>'''Why is the sigops cost for OP_VAULT set to 60?''' To determine the validity of a trigger output, OP_VAULT must perform an EC multiplication and hashing proportional to the length of the control block in order to generate the output's expected TapTweak. This has been measured to have a cost in the worst case (max length control block) of roughly twice a Schnorr verification. Because the hashing cost could be mitigated by caching midstate, the cost is 60 and not 100.</ref>; if the budget is brought below zero, script execution MUST fail and terminate immediately.
|
* Decrement the per-script sigops budget (see [https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki#resource-limits BIP-0342]) by 60<ref>'''Why is the sigops cost for OP_VAULT set to 60?''' To determine the validity of a trigger output, OP_VAULT must perform an EC multiplication and hashing proportional to the length of the control block in order to generate the output's expected TapTweak. This has been measured to have a cost in the worst case (max length control block) of roughly twice a Schnorr verification. Because the hashing cost could be mitigated by caching midstate, the cost is 60 and not 100.</ref>; if the budget is brought below zero, script execution MUST fail and terminate immediately.
|
||||||
* Let the output designated by <code><trigger-vout-idx></code> be called ''triggerOut''.
|
* Let the output designated by <code><trigger-vout-idx></code> be called ''triggerOut''.
|
||||||
* If the scriptPubKey of ''triggerOut'' is not a version 1 witness program, script execution MUST fail and terminate immediately.
|
* If the scriptPubKey of ''triggerOut'' is not a version 1 witness program, script execution MUST fail and terminate immediately.
|
||||||
* Let the script constructed by taking the <code><leaf-update-script-body></code> and prefixing it with minimally-encoded data pushes of the <code><push-count></code> leaf-update script data items be called the ''leaf-update-script''.
|
* Let the script constructed by taking the <code><leaf-update-script-body></code> and prefixing it with minimally-encoded data pushes of the <code><push-count></code> leaf-update script data items be called the ''leaf-update-script''.
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ By producing a DLEQ proof for the generated ECDH shared secrets, the signing ent
|
|||||||
|
|
||||||
== Specification ==
|
== Specification ==
|
||||||
|
|
||||||
All conventions and notations are used as defined in [https://github.com/bitcoin/bips/blob/master/bip-0327.mediawiki#user-content-Notation BIP327].
|
All conventions and notations are used as defined in [https://github.com/bitcoin/bips/blob/master/bip-0327.mediawiki#notation BIP327].
|
||||||
|
|
||||||
=== Description ===
|
=== Description ===
|
||||||
|
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ Using the notation from [https://github.com/bitcoin/bips/blob/master/bip-0352.me
|
|||||||
|
|
||||||
Set the key as ''B<sub>scan</sub>'' and the value as ''C'' for the PSBT_GLOBAL_SP_ECDH_SHARE field.
|
Set the key as ''B<sub>scan</sub>'' and the value as ''C'' for the PSBT_GLOBAL_SP_ECDH_SHARE field.
|
||||||
|
|
||||||
Compute the DLEQ proof for ''C'' using [https://github.com/bitcoin/bips/blob/master/bip-0374.mediawiki#user-content-DLEQ_Proof_Generation BIP374 GenerateProof] and passing ''a<sub>n</sub>'' as ''a'' and ''B<sub>scan</sub>'' as ''B''.
|
Compute the DLEQ proof for ''C'' using [https://github.com/bitcoin/bips/blob/master/bip-0374.mediawiki#dleq-proof-generation BIP374 GenerateProof] and passing ''a<sub>n</sub>'' as ''a'' and ''B<sub>scan</sub>'' as ''B''.
|
||||||
Set the key as ''B<sub>scan</sub>'' and the value as the proof for the PSBT_GLOBAL_SP_DLEQ field.
|
Set the key as ''B<sub>scan</sub>'' and the value as the proof for the PSBT_GLOBAL_SP_DLEQ field.
|
||||||
|
|
||||||
If the Signer has the private keys for some eligible inputs or does not want to create a global ECDH share, the Signer should generate a per-input ECDH share for each scan key ''B<sub>scan</sub>'' as follows:
|
If the Signer has the private keys for some eligible inputs or does not want to create a global ECDH share, the Signer should generate a per-input ECDH share for each scan key ''B<sub>scan</sub>'' as follows:
|
||||||
@@ -216,7 +216,7 @@ Using the notation from [https://github.com/bitcoin/bips/blob/master/bip-0352.me
|
|||||||
|
|
||||||
Set the key as ''B<sub>scan</sub>'' and the value as ''C'' for the PSBT_IN_SP_ECDH_SHARE field of the input.
|
Set the key as ''B<sub>scan</sub>'' and the value as ''C'' for the PSBT_IN_SP_ECDH_SHARE field of the input.
|
||||||
|
|
||||||
Compute the DLEQ proof for ''C'' using [https://github.com/bitcoin/bips/blob/master/bip-0374.mediawiki#user-content-DLEQ_Proof_Generation BIP374 GenerateProof] and passing ''B<sub>scan</sub>'' as ''B''.
|
Compute the DLEQ proof for ''C'' using [https://github.com/bitcoin/bips/blob/master/bip-0374.mediawiki#dleq-proof-generation BIP374 GenerateProof] and passing ''B<sub>scan</sub>'' as ''B''.
|
||||||
Set the key as ''B<sub>scan</sub>'' and the value as the proof for the PSBT_IN_SP_DLEQ field of the input.
|
Set the key as ''B<sub>scan</sub>'' and the value as the proof for the PSBT_IN_SP_DLEQ field of the input.
|
||||||
|
|
||||||
====Verifying the DLEQ Proof====
|
====Verifying the DLEQ Proof====
|
||||||
@@ -236,7 +236,7 @@ Using [https://github.com/bitcoin/bips/blob/master/bip-0374.mediawiki#dleq-proof
|
|||||||
|
|
||||||
====Computing the Output Scripts====
|
====Computing the Output Scripts====
|
||||||
|
|
||||||
Compute the PSBT_OUT_SCRIPT using the procedure in [https://github.com/bitcoin/bips/blob/master/bip-0352.mediawiki#user-content-Creating_outputs BIP352] but substituting ''a·B<sub>scan</sub>'' with the PSBT_GLOBAL_SP_ECDH_SHARE for that scan key if available, or the sum of all PSBT_IN_SP_ECDH_SHAREs from eligible inputs for that scan key.
|
Compute the PSBT_OUT_SCRIPT using the procedure in [https://github.com/bitcoin/bips/blob/master/bip-0352.mediawiki#creating-outputs BIP352] but substituting ''a·B<sub>scan</sub>'' with the PSBT_GLOBAL_SP_ECDH_SHARE for that scan key if available, or the sum of all PSBT_IN_SP_ECDH_SHAREs from eligible inputs for that scan key.
|
||||||
If there are multiple silent payment codes with the same scan key, sort the codes lexicographically in ascending order to determine the ordering of the ''k'' value.
|
If there are multiple silent payment codes with the same scan key, sort the codes lexicographically in ascending order to determine the ordering of the ''k'' value.
|
||||||
If there are multiple silent payment codes with both the same scan and spend keys, sort the subgroup by output index in ascending order.
|
If there are multiple silent payment codes with both the same scan and spend keys, sort the subgroup by output index in ascending order.
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ in the table below. Note that `<20>` are in hex representation in this document.
|
|||||||
|
|
||||||
Miniscript fragments are expected to be used in [BIP 382](bip-0382.mediawiki) `wsh()` descriptors
|
Miniscript fragments are expected to be used in [BIP 382](bip-0382.mediawiki) `wsh()` descriptors
|
||||||
and [BIP 386](bip-0386.mediawiki) `tr()` descriptors. Key expressions are specified in
|
and [BIP 386](bip-0386.mediawiki) `tr()` descriptors. Key expressions are specified in
|
||||||
[BIP 380](bip-0380.mediawiki#user-content-Key_Expressions). Additionally, BIPs 382 and 386 specify
|
[BIP 380](bip-0380.mediawiki#key-expressions). Additionally, BIPs 382 and 386 specify
|
||||||
restrictions on key expressions and what they resolve to - these apply to key expressions in
|
restrictions on key expressions and what they resolve to - these apply to key expressions in
|
||||||
Miniscript. BIP 382's key expression restrictions apply to Miniscript in P2WSH contexts, and BIP
|
Miniscript. BIP 382's key expression restrictions apply to Miniscript in P2WSH contexts, and BIP
|
||||||
386's key expression restrictions apply to Miniscript in P2TR contexts. From a user's perspective,
|
386's key expression restrictions apply to Miniscript in P2TR contexts. From a user's perspective,
|
||||||
|
|||||||
Reference in New Issue
Block a user