1 // Copyright (c) 2009-2010 Satoshi Nakamoto 2 // Copyright (c) 2009-2018 The Bitcoin Core developers 3 // Distributed under the MIT software license, see the accompanying 4 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 5 6 #ifndef BITCOIN_SCRIPT_SCRIPT_ERROR_H 7 #define BITCOIN_SCRIPT_SCRIPT_ERROR_H 8 9 #include <string> 10 11 typedef enum ScriptError_t 12 { 13 SCRIPT_ERR_OK = 0, 14 SCRIPT_ERR_UNKNOWN_ERROR, 15 SCRIPT_ERR_EVAL_FALSE, 16 SCRIPT_ERR_OP_RETURN, 17 18 /* Max sizes */ 19 SCRIPT_ERR_SCRIPT_SIZE, 20 SCRIPT_ERR_PUSH_SIZE, 21 SCRIPT_ERR_OP_COUNT, 22 SCRIPT_ERR_STACK_SIZE, 23 SCRIPT_ERR_SIG_COUNT, 24 SCRIPT_ERR_PUBKEY_COUNT, 25 26 /* Failed verify operations */ 27 SCRIPT_ERR_VERIFY, 28 SCRIPT_ERR_EQUALVERIFY, 29 SCRIPT_ERR_CHECKMULTISIGVERIFY, 30 SCRIPT_ERR_CHECKSIGVERIFY, 31 SCRIPT_ERR_NUMEQUALVERIFY, 32 33 /* Logical/Format/Canonical errors */ 34 SCRIPT_ERR_BAD_OPCODE, 35 SCRIPT_ERR_DISABLED_OPCODE, 36 SCRIPT_ERR_INVALID_STACK_OPERATION, 37 SCRIPT_ERR_INVALID_ALTSTACK_OPERATION, 38 SCRIPT_ERR_UNBALANCED_CONDITIONAL, 39 40 /* CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY */ 41 SCRIPT_ERR_NEGATIVE_LOCKTIME, 42 SCRIPT_ERR_UNSATISFIED_LOCKTIME, 43 44 /* Malleability */ 45 SCRIPT_ERR_SIG_HASHTYPE, 46 SCRIPT_ERR_SIG_DER, 47 SCRIPT_ERR_MINIMALDATA, 48 SCRIPT_ERR_SIG_PUSHONLY, 49 SCRIPT_ERR_SIG_HIGH_S, 50 SCRIPT_ERR_SIG_NULLDUMMY, 51 SCRIPT_ERR_PUBKEYTYPE, 52 SCRIPT_ERR_CLEANSTACK, 53 SCRIPT_ERR_MINIMALIF, 54 SCRIPT_ERR_SIG_NULLFAIL, 55 56 /* softfork safeness */ 57 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS, 58 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM, 59 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_TAPROOT_VERSION, 60 SCRIPT_ERR_DISCOURAGE_OP_SUCCESS, 61 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_PUBKEYTYPE, 62 63 /* segregated witness */ 64 SCRIPT_ERR_WITNESS_PROGRAM_WRONG_LENGTH, 65 SCRIPT_ERR_WITNESS_PROGRAM_WITNESS_EMPTY, 66 SCRIPT_ERR_WITNESS_PROGRAM_MISMATCH, 67 SCRIPT_ERR_WITNESS_MALLEATED, 68 SCRIPT_ERR_WITNESS_MALLEATED_P2SH, 69 SCRIPT_ERR_WITNESS_UNEXPECTED, 70 SCRIPT_ERR_WITNESS_PUBKEYTYPE, 71 72 /* Taproot */ 73 SCRIPT_ERR_SCHNORR_SIG_SIZE, 74 SCRIPT_ERR_SCHNORR_SIG_HASHTYPE, 75 SCRIPT_ERR_SCHNORR_SIG, 76 SCRIPT_ERR_TAPROOT_WRONG_CONTROL_SIZE, 77 SCRIPT_ERR_TAPSCRIPT_VALIDATION_WEIGHT, 78 SCRIPT_ERR_TAPSCRIPT_CHECKMULTISIG, 79 SCRIPT_ERR_TAPSCRIPT_MINIMALIF, 80 81 /* Constant scriptCode */ 82 SCRIPT_ERR_OP_CODESEPARATOR, 83 SCRIPT_ERR_SIG_FINDANDDELETE, 84 85 SCRIPT_ERR_ERROR_COUNT 86 } ScriptError; 87 88 #define SCRIPT_ERR_LAST SCRIPT_ERR_ERROR_COUNT 89 90 std::string ScriptErrorString(const ScriptError error); 91 92 #endif // BITCOIN_SCRIPT_SCRIPT_ERROR_H 93