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