script_error.h raw
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2020 The Limenka 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 LIMENKA_SCRIPT_SCRIPT_ERROR_H
7 #define LIMENKA_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 // LIMENKA_SCRIPT_SCRIPT_ERROR_H
93