diff --git a/bip-ctv.mediawiki b/bip-ctv.mediawiki index 02104522..efaa9b58 100644 --- a/bip-ctv.mediawiki +++ b/bip-ctv.mediawiki @@ -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 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. @@ -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 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 ==