Branch data Line data Source code
# 1 : : // Copyright (c) 2009-2010 Satoshi Nakamoto # 2 : : // Copyright (c) 2009-2020 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/script_error.h> # 7 : : # 8 : : #include <string> # 9 : : # 10 : : std::string ScriptErrorString(const ScriptError serror) # 11 : 299915 : { # 12 : 299915 : switch (serror) # 13 : 299915 : { # 14 [ + + ]: 150270 : case SCRIPT_ERR_OK: # 15 : 150270 : return "No error"; # 16 [ + + ]: 781 : case SCRIPT_ERR_EVAL_FALSE: # 17 : 781 : return "Script evaluated without error but finished with a false/empty top stack element"; # 18 [ + + ]: 46 : case SCRIPT_ERR_VERIFY: # 19 : 46 : return "Script failed an OP_VERIFY operation"; # 20 [ + + ]: 2 : case SCRIPT_ERR_EQUALVERIFY: # 21 : 2 : return "Script failed an OP_EQUALVERIFY operation"; # 22 [ + + ]: 98 : case SCRIPT_ERR_CHECKMULTISIGVERIFY: # 23 : 98 : return "Script failed an OP_CHECKMULTISIGVERIFY operation"; # 24 [ + + ]: 373 : case SCRIPT_ERR_CHECKSIGVERIFY: # 25 : 373 : return "Script failed an OP_CHECKSIGVERIFY operation"; # 26 [ - + ]: 0 : case SCRIPT_ERR_NUMEQUALVERIFY: # 27 : 0 : return "Script failed an OP_NUMEQUALVERIFY operation"; # 28 [ - + ]: 0 : case SCRIPT_ERR_SCRIPT_SIZE: # 29 : 0 : return "Script is too big"; # 30 [ + + ]: 377 : case SCRIPT_ERR_PUSH_SIZE: # 31 : 377 : return "Push value size limit exceeded"; # 32 [ - + ]: 0 : case SCRIPT_ERR_OP_COUNT: # 33 : 0 : return "Operation limit exceeded"; # 34 [ + + ]: 587 : case SCRIPT_ERR_STACK_SIZE: # 35 : 587 : return "Stack size limit exceeded"; # 36 [ - + ]: 0 : case SCRIPT_ERR_SIG_COUNT: # 37 : 0 : return "Signature count negative or greater than pubkey count"; # 38 [ - + ]: 0 : case SCRIPT_ERR_PUBKEY_COUNT: # 39 : 0 : return "Pubkey count negative or limit exceeded"; # 40 [ + + ]: 502 : case SCRIPT_ERR_BAD_OPCODE: # 41 : 502 : return "Opcode missing or not understood"; # 42 [ + + ]: 30 : case SCRIPT_ERR_DISABLED_OPCODE: # 43 : 30 : return "Attempted to use a disabled opcode"; # 44 [ + + ]: 33284 : case SCRIPT_ERR_INVALID_STACK_OPERATION: # 45 : 33284 : return "Operation not valid with the current stack size"; # 46 [ - + ]: 0 : case SCRIPT_ERR_INVALID_ALTSTACK_OPERATION: # 47 : 0 : return "Operation not valid with the current altstack size"; # 48 [ + + ]: 554 : case SCRIPT_ERR_OP_RETURN: # 49 : 554 : return "OP_RETURN was encountered"; # 50 [ + + ]: 88 : case SCRIPT_ERR_UNBALANCED_CONDITIONAL: # 51 : 88 : return "Invalid OP_IF construction"; # 52 [ + + ]: 413 : case SCRIPT_ERR_NEGATIVE_LOCKTIME: # 53 : 413 : return "Negative locktime"; # 54 [ + + ]: 35083 : case SCRIPT_ERR_UNSATISFIED_LOCKTIME: # 55 : 35083 : return "Locktime requirement not satisfied"; # 56 [ + + ]: 42 : case SCRIPT_ERR_SIG_HASHTYPE: # 57 : 42 : return "Signature hash type missing or not understood"; # 58 [ + + ]: 32515 : case SCRIPT_ERR_SIG_DER: # 59 : 32515 : return "Non-canonical DER signature"; # 60 [ + + ]: 26 : case SCRIPT_ERR_MINIMALDATA: # 61 : 26 : return "Data push larger than necessary"; # 62 [ + + ]: 250 : case SCRIPT_ERR_SIG_PUSHONLY: # 63 : 250 : return "Only push operators allowed in signatures"; # 64 [ + + ]: 190 : case SCRIPT_ERR_SIG_HIGH_S: # 65 : 190 : return "Non-canonical signature: S value is unnecessarily high"; # 66 [ + + ]: 150 : case SCRIPT_ERR_SIG_NULLDUMMY: # 67 : 150 : return "Dummy CHECKMULTISIG argument must be zero"; # 68 [ - + ]: 0 : case SCRIPT_ERR_MINIMALIF: # 69 : 0 : return "OP_IF/NOTIF argument must be minimal"; # 70 [ + + ]: 308 : case SCRIPT_ERR_SIG_NULLFAIL: # 71 : 308 : return "Signature must be zero for failed CHECK(MULTI)SIG operation"; # 72 [ - + ]: 0 : case SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS: # 73 : 0 : return "NOPx reserved for soft-fork upgrades"; # 74 [ + + ]: 266 : case SCRIPT_ERR_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM: # 75 : 266 : return "Witness version reserved for soft-fork upgrades"; # 76 [ + + ]: 498 : case SCRIPT_ERR_DISCOURAGE_UPGRADABLE_TAPROOT_VERSION: # 77 : 498 : return "Taproot version reserved for soft-fork upgrades"; # 78 [ + + ]: 653 : case SCRIPT_ERR_DISCOURAGE_OP_SUCCESS: # 79 : 653 : return "OP_SUCCESSx reserved for soft-fork upgrades"; # 80 [ + + ]: 4 : case SCRIPT_ERR_DISCOURAGE_UPGRADABLE_PUBKEYTYPE: # 81 : 4 : return "Public key version reserved for soft-fork upgrades"; # 82 [ + + ]: 17 : case SCRIPT_ERR_PUBKEYTYPE: # 83 : 17 : return "Public key is neither compressed or uncompressed"; # 84 [ + + ]: 713 : case SCRIPT_ERR_CLEANSTACK: # 85 : 713 : return "Stack size must be exactly one after execution"; # 86 [ + + ]: 172 : case SCRIPT_ERR_WITNESS_PROGRAM_WRONG_LENGTH: # 87 : 172 : return "Witness program has incorrect length"; # 88 [ + + ]: 18 : case SCRIPT_ERR_WITNESS_PROGRAM_WITNESS_EMPTY: # 89 : 18 : return "Witness program was passed an empty witness"; # 90 [ + + ]: 39390 : case SCRIPT_ERR_WITNESS_PROGRAM_MISMATCH: # 91 : 39390 : return "Witness program hash mismatch"; # 92 [ + + ]: 86 : case SCRIPT_ERR_WITNESS_MALLEATED: # 93 : 86 : return "Witness requires empty scriptSig"; # 94 [ - + ]: 0 : case SCRIPT_ERR_WITNESS_MALLEATED_P2SH: # 95 : 0 : return "Witness requires only-redeemscript scriptSig"; # 96 [ + + ]: 2 : case SCRIPT_ERR_WITNESS_UNEXPECTED: # 97 : 2 : return "Witness provided for non-witness script"; # 98 [ + + ]: 23 : case SCRIPT_ERR_WITNESS_PUBKEYTYPE: # 99 : 23 : return "Using non-compressed keys in segwit"; # 100 [ + + ]: 25 : case SCRIPT_ERR_SCHNORR_SIG_SIZE: # 101 : 25 : return "Invalid Schnorr signature size"; # 102 [ + + ]: 694 : case SCRIPT_ERR_SCHNORR_SIG_HASHTYPE: # 103 : 694 : return "Invalid Schnorr signature hash type"; # 104 [ + + ]: 97 : case SCRIPT_ERR_SCHNORR_SIG: # 105 : 97 : return "Invalid Schnorr signature"; # 106 [ + + ]: 8 : case SCRIPT_ERR_TAPROOT_WRONG_CONTROL_SIZE: # 107 : 8 : return "Invalid Taproot control block size"; # 108 [ + + ]: 51 : case SCRIPT_ERR_TAPSCRIPT_VALIDATION_WEIGHT: # 109 : 51 : return "Too much signature validation relative to witness weight"; # 110 [ + + ]: 3 : case SCRIPT_ERR_TAPSCRIPT_CHECKMULTISIG: # 111 : 3 : return "OP_CHECKMULTISIG(VERIFY) is not available in tapscript"; # 112 [ + + ]: 5 : case SCRIPT_ERR_TAPSCRIPT_MINIMALIF: # 113 : 5 : return "OP_IF/NOTIF argument must be minimal in tapscript"; # 114 [ + + ]: 626 : case SCRIPT_ERR_OP_CODESEPARATOR: # 115 : 626 : return "Using OP_CODESEPARATOR in non-witness script"; # 116 [ + + ]: 416 : case SCRIPT_ERR_SIG_FINDANDDELETE: # 117 : 416 : return "Signature is found in scriptCode"; # 118 [ + + ]: 179 : case SCRIPT_ERR_UNKNOWN_ERROR: # 119 [ - + ]: 179 : case SCRIPT_ERR_ERROR_COUNT: # 120 [ - + ]: 179 : default: break; # 121 : 179 : } # 122 : 179 : return "unknown error"; # 123 : 179 : }