1
0
mirror of https://github.com/bitcoin/bips.git synced 2025-05-12 12:03:29 +00:00

Add Backwards Compatibility section to OP_CHECKTEMPLATEVERIFY BIP and change 'Implementations' header to 'Reference Implementation'

This commit is contained in:
Jeremy Rubin 2020-01-20 20:15:23 -08:00
parent 1a42897287
commit c36e492f05

View File

@ -225,9 +225,9 @@ In order to facilitate using CHECKTEMPLATEVERIFY, the common case of a PayToBasi
with no scriptSig data shall be made standard to permit relaying. Future template types may be with no scriptSig data shall be made standard to permit relaying. Future template types may be
standardized later as policy changes. standardized later as policy changes.
==Implementations== ==Reference Implementation==
An example implementation and tests are available here: A reference implementation and tests are available here:
https://github.com/JeremyRubin/bitcoin/tree/checktemplateverify. https://github.com/JeremyRubin/bitcoin/tree/checktemplateverify.
@ -519,6 +519,20 @@ Given the simplicity of this approach to implement and analyze, and the benefits
applications, CHECKTEMPLATEVERIFY's template based approach is proposed in lieu of more complete applications, CHECKTEMPLATEVERIFY's template based approach is proposed in lieu of more complete
covenants system. covenants system.
== Backwards Compatibility ==
OP_CHECKTEMPLATEVERIFY replaces a OP_NOP4 with stricter verification semantics. Therefore, scripts
which previously were valid will cease to be valid with this change. Stricter verification semantics
for an OP_NOP are a soft fork, so existing software will be fully functional without upgrade except
for mining and block validation. Similar soft forks for OP_CHECKSEQUENCEVERIFY and OP_CHECKLOCKTIMEVERIFY
(see BIP-0065 and BIP-0112) have similarly changed OP_NOP semantics without introducing compatibility issues.
Older wallet software will be able to accept spends from OP_CHECKTEMPLATEVERIFY outputs, but will
require an upgrade in order to treat PayToBasicStandardTemplate chains with a confirmed ancestor as
being "trusted" (i.e., eligible for spending before the transaction is confirmed).
Backports of OP_CHECKTEMPLATEVERIFY can be trivially prepared (see the reference implementation)
for older node versions that can be patched but not upgraded to a newer major release.
== References == == References ==