diff --git a/bip-tapscript.mediawiki b/bip-tapscript.mediawiki
index 9044c712..3e0ccc8c 100644
--- a/bip-tapscript.mediawiki
+++ b/bip-tapscript.mediawiki
@@ -50,7 +50,7 @@ The rules below only apply when validating a transaction input for which all of
* The leaf version is ''0xc0'' (i.e. the first byte of the last witness element after removing the optional annex is ''0xc0'' or ''0xc1'')['''How is the ''0xc0'' constant chosen?''' Following the guidelines in bip-taproot, by choosing a value having the two top bits set, tapscript spends are identifiable even without access to the UTXO being spent.], marking it as a '''tapscript spend'''.
Validation of such inputs must be equivalent to performing the following steps in the specified order.
-# If the input is invalid due to BIP16, BIP141, or bip-taproot, fail.
+# If the input is invalid due to BIP141 or bip-taproot, fail.
# The script as defined in bip-taproot (i.e., the penultimate witness stack element after removing the optional annex) is called the '''tapscript''' and is decoded into opcodes, one by one:
## If any opcode numbered ''80, 98, 126-129, 131-134, 137-138, 141-142, 149-153, 187-254'' is encountered, validation succeeds (none of the rules below apply). This is true even if later bytes in the tapscript would fail to decode otherwise. These opcodes are renamed to OP_SUCCESS80
, ..., OP_SUCCESS254
, and collectively known as OP_SUCCESSx
[''']OP_SUCCESSx
''' OP_SUCCESSx
is a mechanism to upgrade the Script system. Using an OP_SUCCESSx
before its meaning is defined by a softfork is insecure and leads to fund loss. The inclusion of OP_SUCCESSx
in a script will pass it unconditionally. It precedes any script execution rules to avoid the difficulties in specifying various edge cases, for example: OP_SUCCESSx
in a script with an input stack larger than 1000 elements, OP_SUCCESSx
after too many signature opcodes, or even scripts with conditionals lacking OP_ENDIF
. The mere existence of an OP_SUCCESSx
anywhere in the script will guarantee a pass for all such cases. OP_SUCCESSx
are similar to the OP_RETURN
in very early bitcoin versions (v0.1 up to and including v0.3.5). The original OP_RETURN
terminates script execution immediately, and return pass or fail based on the top stack element at the moment of termination. This was one of a major design flaws in the original bitcoin protocol as it permitted unconditional third party theft by placing an OP_RETURN
in scriptSig
. This is not a concern in the present proposal since it is not possible for a third party to inject an OP_SUCCESSx
to the validation process, as the OP_SUCCESSx
is part of the script (and thus committed to be the taproot output), implying the consent of the coin owner. OP_SUCCESSx
can be used for a variety of upgrade possibilities:
* An OP_SUCCESSx
could be turned into a functional opcode through a softfork. Unlike OP_NOPx
-derived opcodes which only have read-only access to the stack, OP_SUCCESSx
may also write to the stack. Any rule changes to an OP_SUCCESSx
-containing script may only turn a valid script into an invalid one, and this is always achievable with softforks.