[#ScriptError_t] = ScriptError_t :mrdocs: Error codes returned by the Bitcoin Script interpreter. == Synopsis Declared in `<script/script_error.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- enum ScriptError_t; ---- == Members [cols="1,4"] |=== | Name| Description | `SCRIPT_ERR_OK` | No error; the script evaluated successfully. | `SCRIPT_ERR_UNKNOWN_ERROR` | An unspecified or unclassified evaluation error occurred. | `SCRIPT_ERR_EVAL_FALSE` | The script completed but left a false value on the top of the stack. | `SCRIPT_ERR_OP_RETURN` | Execution reached an OP_RETURN opcode, which marks the output as unspendable. | `SCRIPT_ERR_SCRIPTNUM` | A script number operand was out of range or not minimally encoded. | `SCRIPT_ERR_SCRIPT_SIZE` | The script exceeded the maximum allowed byte size. | `SCRIPT_ERR_PUSH_SIZE` | A push operation exceeded the maximum allowed element size. | `SCRIPT_ERR_OP_COUNT` | The script exceeded the maximum number of non‐push opcodes. | `SCRIPT_ERR_STACK_SIZE` | The combined stack and altstack exceeded the maximum allowed size. | `SCRIPT_ERR_SIG_COUNT` | A CHECKMULTISIG operation specified an invalid number of signatures. | `SCRIPT_ERR_PUBKEY_COUNT` | A CHECKMULTISIG operation specified an invalid number of public keys. | `SCRIPT_ERR_VERIFY` | An OP_VERIFY operation failed because the top stack value was false. | `SCRIPT_ERR_EQUALVERIFY` | An OP_EQUALVERIFY operation failed because the two values were not equal. | `SCRIPT_ERR_CHECKMULTISIGVERIFY` | An OP_CHECKMULTISIGVERIFY operation failed signature verification. | `SCRIPT_ERR_CHECKSIGVERIFY` | An OP_CHECKSIGVERIFY operation failed signature verification. | `SCRIPT_ERR_NUMEQUALVERIFY` | An OP_NUMEQUALVERIFY operation failed because the two numbers were not equal. | `SCRIPT_ERR_BAD_OPCODE` | The script contained an unknown or invalid opcode. | `SCRIPT_ERR_DISABLED_OPCODE` | The script used an opcode that has been disabled. | `SCRIPT_ERR_INVALID_STACK_OPERATION` | An operation was attempted on a stack with too few elements. | `SCRIPT_ERR_INVALID_ALTSTACK_OPERATION` | An operation was attempted on an empty altstack. | `SCRIPT_ERR_UNBALANCED_CONDITIONAL` | The script had mismatched OP_IF/OP_ELSE/OP_ENDIF conditionals. | `SCRIPT_ERR_NEGATIVE_LOCKTIME` | A locktime value was negative. | `SCRIPT_ERR_UNSATISFIED_LOCKTIME` | The transaction's locktime or sequence did not satisfy the required value. | `SCRIPT_ERR_SIG_HASHTYPE` | A signature used an invalid or undefined sighash type. | `SCRIPT_ERR_SIG_DER` | A signature was not a valid strict DER encoding. | `SCRIPT_ERR_MINIMALDATA` | A data push did not use the minimal possible encoding. | `SCRIPT_ERR_SIG_PUSHONLY` | A scriptSig contained non‐push operations where only pushes are allowed. | `SCRIPT_ERR_SIG_HIGH_S` | A signature had a high S value, violating the low‐S requirement. | `SCRIPT_ERR_SIG_NULLDUMMY` | The extra CHECKMULTISIG dummy argument was not an empty byte vector. | `SCRIPT_ERR_PUBKEYTYPE` | A public key was not encoded in the required (compressed or uncompressed) form. | `SCRIPT_ERR_CLEANSTACK` | The stack was not clean (held more than one element) after evaluation. | `SCRIPT_ERR_MINIMALIF` | An OP_IF/OP_NOTIF argument was not a minimal true/false value. | `SCRIPT_ERR_SIG_NULLFAIL` | A failed signature check did not provide an empty signature. | `SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS` | The script used an upgradable NOP that policy discourages. | `SCRIPT_ERR_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM` | The script used a witness program version reserved for future upgrades. | `SCRIPT_ERR_DISCOURAGE_UPGRADABLE_TAPROOT_VERSION` | The script used a Taproot leaf version reserved for future upgrades. | `SCRIPT_ERR_DISCOURAGE_OP_SUCCESS` | The Tapscript used an OP_SUCCESS opcode reserved for future upgrades. | `SCRIPT_ERR_DISCOURAGE_UPGRADABLE_PUBKEYTYPE` | The script used a public key type reserved for future upgrades. | `SCRIPT_ERR_WITNESS_PROGRAM_WRONG_LENGTH` | The witness program had a length invalid for its version. | `SCRIPT_ERR_WITNESS_PROGRAM_WITNESS_EMPTY` | The witness for a witness program was empty. | `SCRIPT_ERR_WITNESS_PROGRAM_MISMATCH` | The witness did not match the committed witness program. | `SCRIPT_ERR_WITNESS_MALLEATED` | A native witness program had a non‐empty scriptSig. | `SCRIPT_ERR_WITNESS_MALLEATED_P2SH` | A P2SH‐wrapped witness program had extra scriptSig data. | `SCRIPT_ERR_WITNESS_UNEXPECTED` | Witness data was provided for a non‐witness input. | `SCRIPT_ERR_WITNESS_PUBKEYTYPE` | A witness public key was not compressed as required. | `SCRIPT_ERR_SCHNORR_SIG_SIZE` | A Schnorr signature had an invalid length. | `SCRIPT_ERR_SCHNORR_SIG_HASHTYPE` | A Schnorr signature used an invalid sighash type. | `SCRIPT_ERR_SCHNORR_SIG` | A Schnorr signature failed verification. | `SCRIPT_ERR_TAPROOT_WRONG_CONTROL_SIZE` | A Taproot control block had an invalid size. | `SCRIPT_ERR_TAPSCRIPT_VALIDATION_WEIGHT` | The Tapscript exceeded its signature validation weight budget. | `SCRIPT_ERR_TAPSCRIPT_CHECKMULTISIG` | OP_CHECKMULTISIG(VERIFY) was used in Tapscript, where it is disallowed. | `SCRIPT_ERR_TAPSCRIPT_MINIMALIF` | A Tapscript OP_IF/OP_NOTIF argument was not a minimal true/false value. | `SCRIPT_ERR_TAPSCRIPT_EMPTY_PUBKEY` | A Tapscript signature check used an empty public key. | `SCRIPT_ERR_OP_CODESEPARATOR` | OP_CODESEPARATOR was used where it is not permitted. | `SCRIPT_ERR_SIG_FINDANDDELETE` | A signature was found in the scriptCode subject to FindAndDelete. | `SCRIPT_ERR_ERROR_COUNT` | Sentinel value equal to the number of defined error codes. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#