tAdd libbitcoin server error codes. - obelisk - Electrum server using libbitcoin as its backend
HTML git clone https://git.parazyd.org/obelisk
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 3fa9d2257f2d75456b9479d22a39f633fda58858
DIR parent 8ee2b00cd3f6c9b315098fdf6b5dea091f2f76e5
HTML Author: parazyd <parazyd@dyne.org>
Date: Wed, 7 Apr 2021 16:46:38 +0200
Add libbitcoin server error codes.
Diffstat:
A electrumobelisk/libbitcoin_errors.… | 142 +++++++++++++++++++++++++++++++
1 file changed, 142 insertions(+), 0 deletions(-)
---
DIR diff --git a/electrumobelisk/libbitcoin_errors.py b/electrumobelisk/libbitcoin_errors.py
t@@ -0,0 +1,142 @@
+#!/usr/bin/env python3
+# Copyright (C) 2021 Ivan J. <parazyd@dyne.org>
+#
+# This file is part of obelisk
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License version 3
+# as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import enum
+
+
+def make_error_code(ec):
+ """Return ErrorCode from ec"""
+ if not ec:
+ return None
+ return ErrorCode(ec)
+
+
+class ErrorCode(enum.Enum):
+ """libbitcoin error codes"""
+
+ # general codes
+ success = 0
+ deprecated1 = 6
+ unknown = 43
+ not_found = 3
+ file_system = 42
+ not_implemented = 4
+ oversubscribed = 71
+
+ # network
+ service_stopped = 1
+ operation_failed = 2
+ resolve_failed = 7
+ network_unreachable = 8
+ address_in_use = 9
+ listen_failed = 10
+ accept_failed = 11
+ bad_stream = 12
+ channel_timeout = 13
+ address_blocked = 44
+ channel_stopped = 45
+ peer_throttling = 73
+
+ # database
+ store_block_duplicate = 66
+ store_block_invalid_height = 67
+ store_block_missing_parent = 68
+ store_lock_failure = 85
+ store_incorrect_state = 86
+
+ # blockchain
+ duplicate_block = 51
+ orphan_block = 5
+ invalid_previous_block = 24
+ insufficient_work = 48
+ duplicate_transaction = 84
+ orphan_transaction = 14
+ transaction_version = 17
+ insufficient_fee = 70
+ stale_chain = 75
+ dusty_transaction = 76
+
+ # check header
+ invalid_proof_of_work = 26
+ futuristic_timestamp = 27
+
+ # accept header
+ checkpoints_failed = 35
+ invalid_block_version = 36
+ incorrect_proof_of_work = 32
+ timestamp_too_early = 33
+
+ # check block
+ block_size_limit = 50
+ empty_block = 47
+ first_not_coinbase = 28
+ extra_coinbases = 29
+ internal_duplicate = 49
+ block_internal_double_spend = 15
+ forward_reference = 79
+ merkle_mismatch = 31
+ block_legacy_sigop_limit = 30
+
+ # accept block
+ block_non_final = 34
+ coinbase_height_mismatch = 37
+ coinbase_value_limit = 41
+ block_embedded_sigop_limit = 52
+ invalid_witness_commitment = 25
+ block_weight_limit = 82
+
+ # check transaction
+ empty_transaction = 20
+ previous_output_null = 23
+ spend_overflow = 21
+ invalid_coinbase_script_size = 22
+ coinbase_transaction = 16
+ transaction_internal_double_spend = 72
+ transaction_size_limit = 53
+ transaction_legacy_sigop_limit = 54
+
+ # accept transaction
+ transaction_non_final = 74
+ premature_validation = 69
+ unspent_duplicate = 38
+ missing_previous_output = 19
+ double_spend = 18
+ coinbase_maturity = 46
+ spend_exceeds_value = 40
+ transaction_embedded_sigop_limit = 55
+ sequence_locked = 78
+ transaction_weight_limit = 83
+
+ # connect input
+ invalid_script = 39
+ invalid_script_size = 56
+ invalid_push_data_size = 57
+ invalid_operation_count = 58
+ invalid_stack_size = 59
+ invalid_stack_scope = 60
+ invalid_script_embed = 61
+ invalid_signature_encoding = 62
+ deprecated2 = 63
+ incorrect_signature = 64
+ unexpected_witness = 77
+ invalid_witness = 80
+ dirty_witness = 81
+ stack_false = 65
+
+ # http
+ http_invalid_request = 90
+ http_method_not_found = 91
+ http_internal_error = 92