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