libbitcoin_errors.py (3719B)
1 #!/usr/bin/env python3 2 # Copyright (C) 2021 Ivan J. <parazyd@dyne.org> 3 # 4 # This file is part of obelisk 5 # 6 # This program is free software: you can redistribute it and/or modify 7 # it under the terms of the GNU Affero General Public License version 3 8 # as published by the Free Software Foundation. 9 # 10 # This program is distributed in the hope that it will be useful, 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 # GNU Affero General Public License for more details. 14 # 15 # You should have received a copy of the GNU Affero General Public License 16 # along with this program. If not, see <http://www.gnu.org/licenses/>. 17 """Enumerated error codes that can be returned by libbitcoin""" 18 from enum import Enum 19 20 21 def make_error_code(ec): 22 """Return ErrorCode from ec""" 23 if not ec: 24 return None 25 return ErrorCode(ec) 26 27 28 class ErrorCode(Enum): 29 """libbitcoin error codes""" 30 31 # general codes 32 success = 0 33 deprecated1 = 6 34 unknown = 43 35 not_found = 3 36 file_system = 42 37 not_implemented = 4 38 oversubscribed = 71 39 40 # network 41 service_stopped = 1 42 operation_failed = 2 43 resolve_failed = 7 44 network_unreachable = 8 45 address_in_use = 9 46 listen_failed = 10 47 accept_failed = 11 48 bad_stream = 12 49 channel_timeout = 13 50 address_blocked = 44 51 channel_stopped = 45 52 peer_throttling = 73 53 54 # database 55 store_block_duplicate = 66 56 store_block_invalid_height = 67 57 store_block_missing_parent = 68 58 store_lock_failure = 85 59 store_incorrect_state = 86 60 61 # blockchain 62 duplicate_block = 51 63 orphan_block = 5 64 invalid_previous_block = 24 65 insufficient_work = 48 66 duplicate_transaction = 84 67 orphan_transaction = 14 68 transaction_version = 17 69 insufficient_fee = 70 70 stale_chain = 75 71 dusty_transaction = 76 72 73 # check header 74 invalid_proof_of_work = 26 75 futuristic_timestamp = 27 76 77 # accept header 78 checkpoints_failed = 35 79 invalid_block_version = 36 80 incorrect_proof_of_work = 32 81 timestamp_too_early = 33 82 83 # check block 84 block_size_limit = 50 85 empty_block = 47 86 first_not_coinbase = 28 87 extra_coinbases = 29 88 internal_duplicate = 49 89 block_internal_double_spend = 15 90 forward_reference = 79 91 merkle_mismatch = 31 92 block_legacy_sigop_limit = 30 93 94 # accept block 95 block_non_final = 34 96 coinbase_height_mismatch = 37 97 coinbase_value_limit = 41 98 block_embedded_sigop_limit = 52 99 invalid_witness_commitment = 25 100 block_weight_limit = 82 101 102 # check transaction 103 empty_transaction = 20 104 previous_output_null = 23 105 spend_overflow = 21 106 invalid_coinbase_script_size = 22 107 coinbase_transaction = 16 108 transaction_internal_double_spend = 72 109 transaction_size_limit = 53 110 transaction_legacy_sigop_limit = 54 111 112 # accept transaction 113 transaction_non_final = 74 114 premature_validation = 69 115 unspent_duplicate = 38 116 missing_previous_output = 19 117 double_spend = 18 118 coinbase_maturity = 46 119 spend_exceeds_value = 40 120 transaction_embedded_sigop_limit = 55 121 sequence_locked = 78 122 transaction_weight_limit = 83 123 124 # connect input 125 invalid_script = 39 126 invalid_script_size = 56 127 invalid_push_data_size = 57 128 invalid_operation_count = 58 129 invalid_stack_size = 59 130 invalid_stack_scope = 60 131 invalid_script_embed = 61 132 invalid_signature_encoding = 62 133 deprecated2 = 63 134 incorrect_signature = 64 135 unexpected_witness = 77 136 invalid_witness = 80 137 dirty_witness = 81 138 stack_false = 65 139 140 # http 141 http_invalid_request = 90 142 http_method_not_found = 91 143 http_internal_error = 92