/* * This file is part of the Flowee project * Copyright (C) 2009-2010 Satoshi Nakamoto * Copyright (C) 2009-2014 The Bitcoin Core developers * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef FLOWEE_SCRIPT_SCRIPT_ERROR_H #define FLOWEE_SCRIPT_SCRIPT_ERROR_H typedef enum ScriptError_t { SCRIPT_ERR_OK = 0, SCRIPT_ERR_UNKNOWN_ERROR, SCRIPT_ERR_EVAL_FALSE, SCRIPT_ERR_OP_RETURN, /* Max sizes */ SCRIPT_ERR_SCRIPT_SIZE, SCRIPT_ERR_PUSH_SIZE, SCRIPT_ERR_OP_COUNT, SCRIPT_ERR_STACK_SIZE, SCRIPT_ERR_SIG_COUNT, SCRIPT_ERR_PUBKEY_COUNT, SCRIPT_ERR_OP_COST, SCRIPT_ERR_TOO_MANY_HASH_ITERS, SCRIPT_ERR_CONDITIONAL_STACK_DEPTH, SCRIPT_ERR_CONTROL_STACK_DEPTH, /* Operands checks */ SCRIPT_ERR_INVALID_OPERAND_SIZE, SCRIPT_ERR_INVALID_NUMBER_RANGE, SCRIPT_ERR_IMPOSSIBLE_ENCODING, SCRIPT_ERR_INVALID_SPLIT_RANGE, SCRIPT_ERR_INVALID_NUMBER_RANGE_BIG_INT, /* Failed verify operations */ SCRIPT_ERR_VERIFY, SCRIPT_ERR_EQUALVERIFY, SCRIPT_ERR_CHECKMULTISIGVERIFY, SCRIPT_ERR_CHECKSIGVERIFY, SCRIPT_ERR_CHECKDATASIGVERIFY, SCRIPT_ERR_NUMEQUALVERIFY, /* Logical/Format/Canonical errors */ SCRIPT_ERR_BAD_OPCODE, SCRIPT_ERR_DISABLED_OPCODE, SCRIPT_ERR_INVALID_STACK_OPERATION, SCRIPT_ERR_INVALID_ALTSTACK_OPERATION, SCRIPT_ERR_UNBALANCED_CONDITIONAL, SCRIPT_ERR_UNBALANCED_CONTROL_FLOW, /* Divisor errors */ SCRIPT_ERR_DIV_BY_ZERO, SCRIPT_ERR_MOD_BY_ZERO, /* CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY */ SCRIPT_ERR_NEGATIVE_LOCKTIME, SCRIPT_ERR_UNSATISFIED_LOCKTIME, /* BIP62 */ SCRIPT_ERR_SIG_HASHTYPE, SCRIPT_ERR_SIG_DER, SCRIPT_ERR_MINIMALDATA, SCRIPT_ERR_SIG_PUSHONLY, SCRIPT_ERR_SIG_HIGH_S, SCRIPT_ERR_SIG_NULLDUMMY, SCRIPT_ERR_PUBKEYTYPE, SCRIPT_ERR_CLEANSTACK, SCRIPT_ERR_SIG_NULLFAIL, /* softfork safeness */ SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS, /* anti replay */ SCRIPT_ERR_ILLEGAL_FORKID, SCRIPT_ERR_MUST_USE_FORKID, /* Schnorr */ SCRIPT_ERR_SIG_BADLENGTH, // multi-sig bit-counts SCRIPT_ERR_INVALID_BIT_COUNT, SCRIPT_ERR_INVALID_BIT_RANGE, SCRIPT_ERR_INVALID_BITFIELD_SIZE, /* Native introspection */ SCRIPT_ERR_CONTEXT_NOT_PRESENT, SCRIPT_ERR_LIMITED_CONTEXT_NO_SIBLING_INFO, SCRIPT_ERR_INVALID_TX_INPUT_INDEX, SCRIPT_ERR_INVALID_TX_OUTPUT_INDEX, /* May 2026 functions and bit shifts */ SCRIPT_ERR_INVALID_FUNCTION_IDENTIFIER, SCRIPT_ERR_FUNCTION_OVERWRITE_DISALLOWED, SCRIPT_ERR_INVOKED_UNDEFINED_FUNCTION, SCRIPT_ERR_INVALID_BIT_SHIFT, SCRIPT_ERR_ERROR_COUNT } ScriptError; #define SCRIPT_ERR_LAST SCRIPT_ERR_ERROR_COUNT const char* ScriptErrorString(const ScriptError error); #endif