script_error.h raw
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-present 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 SCRIPT_ERR_SCRIPTNUM,
18
19 /* Max sizes */
20 SCRIPT_ERR_SCRIPT_SIZE,
21 SCRIPT_ERR_PUSH_SIZE,
22 SCRIPT_ERR_OP_COUNT,
23 SCRIPT_ERR_STACK_SIZE,
24 SCRIPT_ERR_SIG_COUNT,
25 SCRIPT_ERR_PUBKEY_COUNT,
26
27 /* Failed verify operations */
28 SCRIPT_ERR_VERIFY,
29 SCRIPT_ERR_EQUALVERIFY,
30 SCRIPT_ERR_CHECKMULTISIGVERIFY,
31 SCRIPT_ERR_CHECKSIGVERIFY,
32 SCRIPT_ERR_NUMEQUALVERIFY,
33
34 /* Logical/Format/Canonical errors */
35 SCRIPT_ERR_BAD_OPCODE,
36 SCRIPT_ERR_DISABLED_OPCODE,
37 SCRIPT_ERR_INVALID_STACK_OPERATION,
38 SCRIPT_ERR_INVALID_ALTSTACK_OPERATION,
39 SCRIPT_ERR_UNBALANCED_CONDITIONAL,
40
41 /* CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY */
42 SCRIPT_ERR_NEGATIVE_LOCKTIME,
43 SCRIPT_ERR_UNSATISFIED_LOCKTIME,
44
45 /* Malleability */
46 SCRIPT_ERR_SIG_HASHTYPE,
47 SCRIPT_ERR_SIG_DER,
48 SCRIPT_ERR_MINIMALDATA,
49 SCRIPT_ERR_SIG_PUSHONLY,
50 SCRIPT_ERR_SIG_HIGH_S,
51 SCRIPT_ERR_SIG_NULLDUMMY,
52 SCRIPT_ERR_PUBKEYTYPE,
53 SCRIPT_ERR_CLEANSTACK,
54 SCRIPT_ERR_MINIMALIF,
55 SCRIPT_ERR_SIG_NULLFAIL,
56
57 /* softfork safeness */
58 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS,
59 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM,
60 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_TAPROOT_VERSION,
61 SCRIPT_ERR_DISCOURAGE_OP_SUCCESS,
62 SCRIPT_ERR_DISCOURAGE_UPGRADABLE_PUBKEYTYPE,
63
64 /* segregated witness */
65 SCRIPT_ERR_WITNESS_PROGRAM_WRONG_LENGTH,
66 SCRIPT_ERR_WITNESS_PROGRAM_WITNESS_EMPTY,
67 SCRIPT_ERR_WITNESS_PROGRAM_MISMATCH,
68 SCRIPT_ERR_WITNESS_MALLEATED,
69 SCRIPT_ERR_WITNESS_MALLEATED_P2SH,
70 SCRIPT_ERR_WITNESS_UNEXPECTED,
71 SCRIPT_ERR_WITNESS_PUBKEYTYPE,
72
73 /* Taproot */
74 SCRIPT_ERR_SCHNORR_SIG_SIZE,
75 SCRIPT_ERR_SCHNORR_SIG_HASHTYPE,
76 SCRIPT_ERR_SCHNORR_SIG,
77 SCRIPT_ERR_TAPROOT_WRONG_CONTROL_SIZE,
78 SCRIPT_ERR_TAPSCRIPT_VALIDATION_WEIGHT,
79 SCRIPT_ERR_TAPSCRIPT_CHECKMULTISIG,
80 SCRIPT_ERR_TAPSCRIPT_MINIMALIF,
81 SCRIPT_ERR_TAPSCRIPT_EMPTY_PUBKEY,
82
83 /* Constant scriptCode */
84 SCRIPT_ERR_OP_CODESEPARATOR,
85 SCRIPT_ERR_SIG_FINDANDDELETE,
86
87 SCRIPT_ERR_ERROR_COUNT
88 } ScriptError;
89
90 std::string ScriptErrorString(ScriptError error);
91
92 #endif // BITCOIN_SCRIPT_SCRIPT_ERROR_H
93