2014-10-31 23:29:12 -04:00
|
|
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
2020-12-31 09:48:25 +01:00
|
|
|
// Copyright (c) 2009-2020 The Bitcoin Core developers
|
2014-10-31 23:29:12 -04:00
|
|
|
// Distributed under the MIT software license, see the accompanying
|
|
|
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
|
|
2014-11-20 20:06:08 +01:00
|
|
|
#ifndef BITCOIN_SCRIPT_SCRIPT_ERROR_H
|
|
|
|
|
#define BITCOIN_SCRIPT_SCRIPT_ERROR_H
|
2014-10-31 23:29:12 -04:00
|
|
|
|
2020-05-18 17:14:10 +09:00
|
|
|
#include <string>
|
|
|
|
|
|
2014-10-31 23:29:12 -04:00
|
|
|
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,
|
|
|
|
|
|
|
|
|
|
/* Failed verify operations */
|
|
|
|
|
SCRIPT_ERR_VERIFY,
|
|
|
|
|
SCRIPT_ERR_EQUALVERIFY,
|
|
|
|
|
SCRIPT_ERR_CHECKMULTISIGVERIFY,
|
|
|
|
|
SCRIPT_ERR_CHECKSIGVERIFY,
|
|
|
|
|
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,
|
|
|
|
|
|
2015-09-25 16:18:51 -07:00
|
|
|
/* CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY */
|
2014-09-29 03:44:25 -04:00
|
|
|
SCRIPT_ERR_NEGATIVE_LOCKTIME,
|
|
|
|
|
SCRIPT_ERR_UNSATISFIED_LOCKTIME,
|
|
|
|
|
|
2016-09-23 13:06:45 +08:00
|
|
|
/* Malleability */
|
2014-10-31 23:29:12 -04:00
|
|
|
SCRIPT_ERR_SIG_HASHTYPE,
|
|
|
|
|
SCRIPT_ERR_SIG_DER,
|
|
|
|
|
SCRIPT_ERR_MINIMALDATA,
|
|
|
|
|
SCRIPT_ERR_SIG_PUSHONLY,
|
|
|
|
|
SCRIPT_ERR_SIG_HIGH_S,
|
|
|
|
|
SCRIPT_ERR_SIG_NULLDUMMY,
|
2014-11-08 09:32:29 -08:00
|
|
|
SCRIPT_ERR_PUBKEYTYPE,
|
2014-10-12 18:39:47 -07:00
|
|
|
SCRIPT_ERR_CLEANSTACK,
|
2016-09-23 13:06:45 +08:00
|
|
|
SCRIPT_ERR_MINIMALIF,
|
2016-09-22 15:06:54 +08:00
|
|
|
SCRIPT_ERR_SIG_NULLFAIL,
|
2014-10-31 23:29:12 -04:00
|
|
|
|
2014-09-28 21:17:36 -04:00
|
|
|
/* softfork safeness */
|
|
|
|
|
SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS,
|
2015-11-08 01:16:45 +01:00
|
|
|
SCRIPT_ERR_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM,
|
2020-09-11 14:33:45 -07:00
|
|
|
SCRIPT_ERR_DISCOURAGE_UPGRADABLE_TAPROOT_VERSION,
|
2020-09-11 14:34:02 -07:00
|
|
|
SCRIPT_ERR_DISCOURAGE_OP_SUCCESS,
|
|
|
|
|
SCRIPT_ERR_DISCOURAGE_UPGRADABLE_PUBKEYTYPE,
|
2015-11-08 01:16:45 +01:00
|
|
|
|
|
|
|
|
/* segregated witness */
|
|
|
|
|
SCRIPT_ERR_WITNESS_PROGRAM_WRONG_LENGTH,
|
|
|
|
|
SCRIPT_ERR_WITNESS_PROGRAM_WITNESS_EMPTY,
|
|
|
|
|
SCRIPT_ERR_WITNESS_PROGRAM_MISMATCH,
|
|
|
|
|
SCRIPT_ERR_WITNESS_MALLEATED,
|
|
|
|
|
SCRIPT_ERR_WITNESS_MALLEATED_P2SH,
|
|
|
|
|
SCRIPT_ERR_WITNESS_UNEXPECTED,
|
2016-10-02 01:19:33 +08:00
|
|
|
SCRIPT_ERR_WITNESS_PUBKEYTYPE,
|
2014-09-28 21:17:36 -04:00
|
|
|
|
2020-09-11 14:33:30 -07:00
|
|
|
/* Taproot */
|
|
|
|
|
SCRIPT_ERR_SCHNORR_SIG_SIZE,
|
|
|
|
|
SCRIPT_ERR_SCHNORR_SIG_HASHTYPE,
|
|
|
|
|
SCRIPT_ERR_SCHNORR_SIG,
|
2020-09-11 14:33:45 -07:00
|
|
|
SCRIPT_ERR_TAPROOT_WRONG_CONTROL_SIZE,
|
2020-09-11 14:34:02 -07:00
|
|
|
SCRIPT_ERR_TAPSCRIPT_VALIDATION_WEIGHT,
|
|
|
|
|
SCRIPT_ERR_TAPSCRIPT_CHECKMULTISIG,
|
|
|
|
|
SCRIPT_ERR_TAPSCRIPT_MINIMALIF,
|
2020-09-11 14:33:30 -07:00
|
|
|
|
2018-04-27 03:56:29 +08:00
|
|
|
/* Constant scriptCode */
|
|
|
|
|
SCRIPT_ERR_OP_CODESEPARATOR,
|
|
|
|
|
SCRIPT_ERR_SIG_FINDANDDELETE,
|
|
|
|
|
|
2019-03-19 20:39:56 +00:00
|
|
|
// ELEMENTS:
|
|
|
|
|
SCRIPT_ERR_RANGEPROOF,
|
2021-06-25 05:50:28 +00:00
|
|
|
SCRIPT_ERR_PEDERSEN_TALLY,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Elements: New tapscript related errors */
|
|
|
|
|
SCRIPT_ERR_SHA2_CONTEXT_LOAD,
|
|
|
|
|
SCRIPT_ERR_SHA2_CONTEXT_WRITE,
|
2021-07-11 11:04:23 +00:00
|
|
|
SCRIPT_ERR_INTROSPECT_CONTEXT_UNAVAILABLE,
|
|
|
|
|
SCRIPT_ERR_INTROSPECT_INDEX_OUT_OF_BOUNDS,
|
2021-08-25 20:48:20 +00:00
|
|
|
SCRIPT_ERR_EXPECTED_8BYTES,
|
2021-08-01 19:21:33 +00:00
|
|
|
SCRIPT_ERR_ARITHMETIC64,
|
2023-11-10 15:50:24 +01:00
|
|
|
SCRIPT_ERR_ECMULTVERIFYFAIL,
|
|
|
|
|
|
2024-06-10 12:19:21 -04:00
|
|
|
/* Elements: Simplicity related errors */
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_WRONG_LENGTH,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_NOT_YET_IMPLEMENTED,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_DATA_OUT_OF_RANGE,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_DATA_OUT_OF_ORDER,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_FAIL_CODE,
|
2025-01-31 07:35:25 -05:00
|
|
|
SCRIPT_ERR_SIMPLICITY_RESERVED_CODE,
|
2024-06-10 12:19:21 -04:00
|
|
|
SCRIPT_ERR_SIMPLICITY_HIDDEN,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_BITSTREAM_EOF,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_BITSTREAM_TRAILING_BYTES,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_BITSTREAM_ILLEGAL_PADDING,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_TYPE_INFERENCE_UNIFICATION,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_TYPE_INFERENCE_OCCURS_CHECK,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_TYPE_INFERENCE_NOT_PROGRAM,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_WITNESS_EOF,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_WITNESS_TRAILING_BYTES,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_WITNESS_ILLEGAL_PADDING,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_UNSHARED_SUBEXPRESSION,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_CMR,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_EXEC_BUDGET,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_EXEC_MEMORY,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_EXEC_JET,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_EXEC_ASSERT,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_ANTIDOS,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_HIDDEN_ROOT,
|
|
|
|
|
SCRIPT_ERR_SIMPLICITY_AMR,
|
2025-06-18 11:41:44 -04:00
|
|
|
SCRIPT_ERR_SIMPLICITY_OVERWEIGHT,
|
2024-06-10 12:19:21 -04:00
|
|
|
|
2023-11-10 15:50:24 +01:00
|
|
|
/* Must go last */
|
|
|
|
|
SCRIPT_ERR_ERROR_COUNT
|
2014-10-31 23:29:12 -04:00
|
|
|
} ScriptError;
|
|
|
|
|
|
2023-11-10 15:50:24 +01:00
|
|
|
#define SCRIPT_ERR_LAST SCRIPT_ERR_ERROR_COUNT
|
2014-10-31 23:29:12 -04:00
|
|
|
|
2020-05-18 17:14:10 +09:00
|
|
|
std::string ScriptErrorString(const ScriptError error);
|
2014-10-31 23:29:12 -04:00
|
|
|
|
2014-11-20 20:06:08 +01:00
|
|
|
#endif // BITCOIN_SCRIPT_SCRIPT_ERROR_H
|