obelisk

Electrum server using libbitcoin as its backend
git clone https://git.parazyd.org/obelisk
Log | Files | Refs | README | LICENSE

errors_libbitcoin.py (3737B)


      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 ZMQError(ec)  # pragma: no cover
     26 
     27 
     28 class ZMQError(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