1 // Copyright (c) 2009-2010 Satoshi Nakamoto 2 // Copyright (c) 2009-2014 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 typedef enum ScriptError_t 10 { 11 SCRIPT_ERR_OK = 0, 12 SCRIPT_ERR_UNKNOWN_ERROR, 13 SCRIPT_ERR_EVAL_FALSE, 14 SCRIPT_ERR_OP_RETURN, 15 16 /* Max sizes */ 17 SCRIPT_ERR_SCRIPT_SIZE, 18 SCRIPT_ERR_PUSH_SIZE, 19 SCRIPT_ERR_OP_COUNT, 20 SCRIPT_ERR_STACK_SIZE, 21 SCRIPT_ERR_SIG_COUNT, 22 SCRIPT_ERR_PUBKEY_COUNT, 23 24 /* Failed verify operations */ 25 SCRIPT_ERR_VERIFY, 26 SCRIPT_ERR_EQUALVERIFY, 27 SCRIPT_ERR_CHECKMULTISIGVERIFY, 28 SCRIPT_ERR_CHECKSIGVERIFY, 29 SCRIPT_ERR_NUMEQUALVERIFY, 30 31 /* Logical/Format/Canonical errors */ 32 SCRIPT_ERR_BAD_OPCODE, 33 SCRIPT_ERR_DISABLED_OPCODE, 34 SCRIPT_ERR_INVALID_STACK_OPERATION, 35 SCRIPT_ERR_INVALID_ALTSTACK_OPERATION, 36 SCRIPT_ERR_UNBALANCED_CONDITIONAL, 37 38 /* CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY */ 39 SCRIPT_ERR_NEGATIVE_LOCKTIME, 40 SCRIPT_ERR_UNSATISFIED_LOCKTIME, 41 42 /* Malleability */ 43 SCRIPT_ERR_SIG_HASHTYPE, 44 SCRIPT_ERR_SIG_DER, 45 SCRIPT_ERR_MINIMALDATA, 46 SCRIPT_ERR_SIG_PUSHONLY, 47 SCRIPT_ERR_SIG_HIGH_S, 48 SCRIPT_ERR_SIG_NULLDUMMY, 49 SCRIPT_ERR_PUBKEYTYPE, 50 SCRIPT_ERR_CLEANSTACK, 51 SCRIPT_ERR_MINIMALIF, 52 SCRIPT_ERR_SIG_NULLFAIL, 53 54 /* softfork safeness */ 55 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS, 56 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM, 57 58 /* segregated witness */ 59 SCRIPT_ERR_WITNESS_PROGRAM_WRONG_LENGTH, 60 SCRIPT_ERR_WITNESS_PROGRAM_WITNESS_EMPTY, 61 SCRIPT_ERR_WITNESS_PROGRAM_MISMATCH, 62 SCRIPT_ERR_WITNESS_MALLEATED, 63 SCRIPT_ERR_WITNESS_MALLEATED_P2SH, 64 SCRIPT_ERR_WITNESS_UNEXPECTED, 65 SCRIPT_ERR_WITNESS_PUBKEYTYPE, 66 67 SCRIPT_ERR_ERROR_COUNT 68 } ScriptError; 69 70 #define SCRIPT_ERR_LAST SCRIPT_ERR_ERROR_COUNT 71 72 const char* ScriptErrorString(const ScriptError error); 73 74 #endif // BITCOIN_SCRIPT_SCRIPT_ERROR_H 75