@@ -41,8 +41,8 @@ The recommended standardness rules additionally:
41
41
42
42
Covenants are restrictions on how a coin may be spent beyond key ownership.
43
43
This is a general definition based on the legal definition which even simple
44
- scripts using CSV would satisfy. Covenants in Bitcoin transactions usually
45
- refer to restrictions on where coins can be transferred. Covenants can be
44
+ scripts using CSV would satisfy. Covenants in Bitcoin transactions usually
45
+ refer to restrictions on where coins can be transferred. Covenants can be
46
46
useful to construct smart contracts. As covenants are complex to implement and
47
47
risk of introducing fungibility discriminants they have not been seriously
48
48
considered for inclusion in Bitcoin.
@@ -51,7 +51,7 @@ This BIP introduces a simple covenant called a *template* which enables a
51
51
limited set of highly valuable use cases without significant risk. BIP-119
52
52
templates allow for non-recursive fully-enumerated covenants with no dynamic
53
53
state. CTV serves as a replacement for a pre-signed transaction oracle, which
54
- eliminates the trust and interactivity requirements. Examples of uses include
54
+ eliminates the trust and interactivity requirements. Examples of uses include
55
55
wallet vaults, non-interactive payment channel creation, congestion controlled
56
56
batching, efficient to construct discreet log contracts, and payment pools,
57
57
among many others. For more details on these applications, please see the
@@ -162,7 +162,7 @@ For the avoidance of unclarity, the parameters to be determined are:
162
162
consensus.vDeployments[Consensus::DEPLOYMENT_CHECKTEMPLATEVERIFY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
163
163
consensus.vDeployments[Consensus::DEPLOYMENT_CHECKTEMPLATEVERIFY].min_activation_height = 0;
164
164
165
- Until BIP-119 reaches ACTIVE state and the
165
+ Until BIP-119 reaches ACTIVE state and the
166
166
SCRIPT_VERIFY_DEFAULT_CHECK_TEMPLATE_VERIFY_HASH flag is enforced, node implementations should (are recommended to)
167
167
execute a NOP4 as SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS (to deny entry to the mempool) for policy and must evaluate as
168
168
a NOP for consensus (during block validation).
@@ -195,7 +195,7 @@ Below we'll discuss the rules one-by-one:
195
195
196
196
The set of data committed to is a superset of data which can impact the TXID of the transaction,
197
197
other than the inputs. This ensures that for a given known input, the TXIDs can also be known ahead
198
- of time. Otherwise, CHECKTEMPLATEVERIFY would not be usable for Batched Channel Creation constructions
198
+ of time. Otherwise, CHECKTEMPLATEVERIFY would not be usable for Batched Channel Creation constructions
199
199
as the redemption TXID could be malleated and pre-signed transactions invalidated, unless the channels
200
200
are built using an Eltoo-like protocol. Note that there may be other types of pre-signed contracts that
201
201
may or may not be able to use Eltoo-like constructs, therefore making TXIDs predictable makes CTV more
@@ -341,7 +341,7 @@ programs.
341
341
342
342
RIPEMD160, a 20 byte hash, might also be a viable hash in some contexts and has some benefits. For fee efficiency,
343
343
RIPEMD160 saves 12 bytes. However, RIPEMD160 was not chosen for BIP-119 because it introduces
344
- risks around the verification of programs created by third parties to be subject to a
344
+ risks around the verification of programs created by third parties to be subject to a
345
345
[birthday-attack https://bitcoin.stackexchange.com/questions/54841/birthday-attack-on-p2sh ] on
346
346
transaction preimages.
347
347
@@ -523,11 +523,11 @@ CHECKTEMPLATEVERIFY has benefits in terms of script size (depending on choice of
523
523
PK, SIGHASH_ANYPREVOUTANYSCRIPT may use about 2x-3x the bytes) and verification
524
524
speed, as OP_CHECKTEMPLATEVERIFY requires only hash computation rather than
525
525
signature operations. This can be significant when constructing large payment
526
- trees or programmatic compilations. CHECKTEMPLATEVERIFY also has a feature-wise
526
+ trees or programmatic compilations. CHECKTEMPLATEVERIFY also has a feature-wise
527
527
benefit in that it provides a robust pathway for future template upgrades.
528
528
529
529
OP_CHECKSIGFROMSTACKVERIFY along with OP_CAT may also be used to emulate
530
- CHECKTEMPLATEVERIFY. However such constructions are more complicated to use
530
+ CHECKTEMPLATEVERIFY. However such constructions are more complicated to use
531
531
than CHECKTEMPLATEVERIFY, and encumbers additional verification overhead absent
532
532
from CHECKTEMPLATEVERIFY. These types of covenants also bear similar potential
533
533
recursion issues to OP_COV which make it unlikely for inclusion in Bitcoin.
@@ -545,7 +545,7 @@ the future as well as synergies with other possible upgrades.
545
545
=====CHECKTEMPLATEVERIFY Versions =====
546
546
547
547
OP_CHECKTEMPLATEVERIFY currently only verifies properties of 32 byte arguments.
548
- In the future, meaning could be ascribed to other length arguments. For
548
+ In the future, meaning could be ascribed to other length arguments. For
549
549
example, a 33-byte argument could just the last byte as a control program. In
550
550
that case, DefaultCheckTemplateVerifyHash could be computed when the flag byte
551
551
is set to CTVHASH_ALL. Other programs could be added similar to SIGHASH_TYPEs.
0 commit comments