1 // Copyright (c) 2009-2010 Satoshi Nakamoto 2 // Copyright (c) 2009-2014 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 #include "script_error.h" 7 ScriptErrorString(const ScriptError serror)8const char* ScriptErrorString(const ScriptError serror) 9 { 10 switch (serror) 11 { 12 case SCRIPT_ERR_OK: 13 return "No error"; 14 case SCRIPT_ERR_EVAL_FALSE: 15 return "Script evaluated without error but finished with a false/empty top stack element"; 16 case SCRIPT_ERR_VERIFY: 17 return "Script failed an OP_VERIFY operation"; 18 case SCRIPT_ERR_EQUALVERIFY: 19 return "Script failed an OP_EQUALVERIFY operation"; 20 case SCRIPT_ERR_CHECKMULTISIGVERIFY: 21 return "Script failed an OP_CHECKMULTISIGVERIFY operation"; 22 case SCRIPT_ERR_CHECKSIGVERIFY: 23 return "Script failed an OP_CHECKSIGVERIFY operation"; 24 case SCRIPT_ERR_NUMEQUALVERIFY: 25 return "Script failed an OP_NUMEQUALVERIFY operation"; 26 case SCRIPT_ERR_SCRIPT_SIZE: 27 return "Script is too big"; 28 case SCRIPT_ERR_PUSH_SIZE: 29 return "Push value size limit exceeded"; 30 case SCRIPT_ERR_OP_COUNT: 31 return "Operation limit exceeded"; 32 case SCRIPT_ERR_STACK_SIZE: 33 return "Stack size limit exceeded"; 34 case SCRIPT_ERR_SIG_COUNT: 35 return "Signature count negative or greater than pubkey count"; 36 case SCRIPT_ERR_PUBKEY_COUNT: 37 return "Pubkey count negative or limit exceeded"; 38 case SCRIPT_ERR_BAD_OPCODE: 39 return "Opcode missing or not understood"; 40 case SCRIPT_ERR_DISABLED_OPCODE: 41 return "Attempted to use a disabled opcode"; 42 case SCRIPT_ERR_INVALID_STACK_OPERATION: 43 return "Operation not valid with the current stack size"; 44 case SCRIPT_ERR_INVALID_ALTSTACK_OPERATION: 45 return "Operation not valid with the current altstack size"; 46 case SCRIPT_ERR_OP_RETURN: 47 return "OP_RETURN was encountered"; 48 case SCRIPT_ERR_UNBALANCED_CONDITIONAL: 49 return "Invalid OP_IF construction"; 50 case SCRIPT_ERR_NEGATIVE_LOCKTIME: 51 return "Negative locktime"; 52 case SCRIPT_ERR_UNSATISFIED_LOCKTIME: 53 return "Locktime requirement not satisfied"; 54 case SCRIPT_ERR_SIG_HASHTYPE: 55 return "Signature hash type missing or not understood"; 56 case SCRIPT_ERR_SIG_DER: 57 return "Non-canonical DER signature"; 58 case SCRIPT_ERR_MINIMALDATA: 59 return "Data push larger than necessary"; 60 case SCRIPT_ERR_SIG_PUSHONLY: 61 return "Only non-push operators allowed in signatures"; 62 case SCRIPT_ERR_SIG_HIGH_S: 63 return "Non-canonical signature: S value is unnecessarily high"; 64 case SCRIPT_ERR_SIG_NULLDUMMY: 65 return "Dummy CHECKMULTISIG argument must be zero"; 66 case SCRIPT_ERR_MINIMALIF: 67 return "OP_IF/NOTIF argument must be minimal"; 68 case SCRIPT_ERR_SIG_NULLFAIL: 69 return "Signature must be zero for failed CHECK(MULTI)SIG operation"; 70 case SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS: 71 return "NOPx reserved for soft-fork upgrades"; 72 case SCRIPT_ERR_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM: 73 return "Witness version reserved for soft-fork upgrades"; 74 case SCRIPT_ERR_PUBKEYTYPE: 75 return "Public key is neither compressed or uncompressed"; 76 case SCRIPT_ERR_WITNESS_PROGRAM_WRONG_LENGTH: 77 return "Witness program has incorrect length"; 78 case SCRIPT_ERR_WITNESS_PROGRAM_WITNESS_EMPTY: 79 return "Witness program was passed an empty witness"; 80 case SCRIPT_ERR_WITNESS_PROGRAM_MISMATCH: 81 return "Witness program hash mismatch"; 82 case SCRIPT_ERR_WITNESS_MALLEATED: 83 return "Witness requires empty scriptSig"; 84 case SCRIPT_ERR_WITNESS_MALLEATED_P2SH: 85 return "Witness requires only-redeemscript scriptSig"; 86 case SCRIPT_ERR_WITNESS_UNEXPECTED: 87 return "Witness provided for non-witness script"; 88 case SCRIPT_ERR_WITNESS_PUBKEYTYPE: 89 return "Using non-compressed keys in segwit"; 90 case SCRIPT_ERR_UNKNOWN_ERROR: 91 case SCRIPT_ERR_ERROR_COUNT: 92 default: break; 93 } 94 return "unknown error"; 95 } 96