mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-13 12:33:42 +02:00
This Simplicity update has - renamed a few types - moved some files around - added a minCost parameter, currently set to 0 - added a new error code
135 lines
4.1 KiB
C++
135 lines
4.1 KiB
C++
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2020 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_SCRIPT_SCRIPT_ERROR_H
|
|
#define BITCOIN_SCRIPT_SCRIPT_ERROR_H
|
|
|
|
#include <string>
|
|
|
|
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,
|
|
|
|
/* CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY */
|
|
SCRIPT_ERR_NEGATIVE_LOCKTIME,
|
|
SCRIPT_ERR_UNSATISFIED_LOCKTIME,
|
|
|
|
/* Malleability */
|
|
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_MINIMALIF,
|
|
SCRIPT_ERR_SIG_NULLFAIL,
|
|
|
|
/* softfork safeness */
|
|
SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS,
|
|
SCRIPT_ERR_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM,
|
|
SCRIPT_ERR_DISCOURAGE_UPGRADABLE_TAPROOT_VERSION,
|
|
SCRIPT_ERR_DISCOURAGE_OP_SUCCESS,
|
|
SCRIPT_ERR_DISCOURAGE_UPGRADABLE_PUBKEYTYPE,
|
|
|
|
/* 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,
|
|
SCRIPT_ERR_WITNESS_PUBKEYTYPE,
|
|
|
|
/* Taproot */
|
|
SCRIPT_ERR_SCHNORR_SIG_SIZE,
|
|
SCRIPT_ERR_SCHNORR_SIG_HASHTYPE,
|
|
SCRIPT_ERR_SCHNORR_SIG,
|
|
SCRIPT_ERR_TAPROOT_WRONG_CONTROL_SIZE,
|
|
SCRIPT_ERR_TAPSCRIPT_VALIDATION_WEIGHT,
|
|
SCRIPT_ERR_TAPSCRIPT_CHECKMULTISIG,
|
|
SCRIPT_ERR_TAPSCRIPT_MINIMALIF,
|
|
|
|
/* Constant scriptCode */
|
|
SCRIPT_ERR_OP_CODESEPARATOR,
|
|
SCRIPT_ERR_SIG_FINDANDDELETE,
|
|
|
|
// ELEMENTS:
|
|
SCRIPT_ERR_RANGEPROOF,
|
|
SCRIPT_ERR_PEDERSEN_TALLY,
|
|
|
|
|
|
/* Elements: New tapscript related errors */
|
|
SCRIPT_ERR_SHA2_CONTEXT_LOAD,
|
|
SCRIPT_ERR_SHA2_CONTEXT_WRITE,
|
|
SCRIPT_ERR_INTROSPECT_CONTEXT_UNAVAILABLE,
|
|
SCRIPT_ERR_INTROSPECT_INDEX_OUT_OF_BOUNDS,
|
|
SCRIPT_ERR_EXPECTED_8BYTES,
|
|
SCRIPT_ERR_ARITHMETIC64,
|
|
SCRIPT_ERR_ECMULTVERIFYFAIL,
|
|
|
|
/* 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,
|
|
SCRIPT_ERR_SIMPLICITY_RESERVED_CODE,
|
|
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,
|
|
SCRIPT_ERR_SIMPLICITY_OVERWEIGHT,
|
|
|
|
/* Must go last */
|
|
SCRIPT_ERR_ERROR_COUNT
|
|
} ScriptError;
|
|
|
|
#define SCRIPT_ERR_LAST SCRIPT_ERR_ERROR_COUNT
|
|
|
|
std::string ScriptErrorString(const ScriptError error);
|
|
|
|
#endif // BITCOIN_SCRIPT_SCRIPT_ERROR_H
|