From 5c7bf3cce9ba5735f413517a27d845e2459d531e Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Sat, 14 Oct 2017 12:20:14 +0900 Subject: [PATCH] Try and fix Viacoin --- lib/coins.py | 39 +++++++++++++++++++-------------------- lib/tx.py | 4 ++++ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/lib/coins.py b/lib/coins.py index 989f0cc..7ddc2a4 100644 --- a/lib/coins.py +++ b/lib/coins.py @@ -39,9 +39,7 @@ from hashlib import sha256 import lib.util as util from lib.hash import Base58, hash160, double_sha256, hash_to_str from lib.script import ScriptPubKey, OpCodes -from lib.tx import Deserializer, DeserializerSegWit, DeserializerAuxPow, \ - DeserializerZcash, DeserializerTxTime, DeserializerReddcoin, \ - DeserializerTxTimeAuxPow +import lib.tx as lib_tx from server.block_processor import BlockProcessor import server.daemon as daemon from server.session import ElectrumX, DashElectrumX @@ -67,7 +65,7 @@ class Coin(object): BASIC_HEADER_SIZE = 80 STATIC_BLOCK_HEADERS = True SESSIONCLS = ElectrumX - DESERIALIZER = Deserializer + DESERIALIZER = lib_tx.Deserializer DAEMON = daemon.Daemon BLOCK_PROCESSOR = BlockProcessor XPUB_VERBYTES = bytes('????', 'utf-8') @@ -306,7 +304,7 @@ class Coin(object): class AuxPowMixin(object): STATIC_BLOCK_HEADERS = False - DESERIALIZER = DeserializerAuxPow + DESERIALIZER = lib_tx.DeserializerAuxPow @classmethod def header_hash(cls, header): @@ -353,7 +351,7 @@ class BitcoinCash(BitcoinMixin, Coin): class BitcoinSegwit(BitcoinMixin, Coin): NAME = "BitcoinSegwit" - DESERIALIZER = DeserializerSegWit + DESERIALIZER = lib_tx.DeserializerSegWit TX_COUNT = 217380620 TX_COUNT_HEIGHT = 464000 TX_PER_BLOCK = 1800 @@ -391,7 +389,7 @@ class Emercoin(Coin): VALUE_PER_COIN = 1000000 RPC_PORT = 6662 - DESERIALIZER = DeserializerTxTimeAuxPow + DESERIALIZER = lib_tx.DeserializerTxTimeAuxPow PEERS = [] @@ -439,7 +437,7 @@ class BitcoinCashTestnet(BitcoinTestnetMixin, Coin): class BitcoinSegwitTestnet(BitcoinTestnetMixin, Coin): '''Bitcoin Testnet for Core bitcoind >= 0.13.1.''' NAME = "BitcoinSegwit" - DESERIALIZER = DeserializerSegWit + DESERIALIZER = lib_tx.DeserializerSegWit PEERS = [ 'electrum.akinbo.org s t', 'he36kyperp3kbuxu.onion s t', @@ -484,7 +482,7 @@ class Litecoin(Coin): WIF_BYTE = bytes.fromhex("b0") GENESIS_HASH = ('12a765e31ffd4059bada1e25190f6e98' 'c99d9714d334efa41a195a7e7e04bfe2') - DESERIALIZER = DeserializerSegWit + DESERIALIZER = lib_tx.DeserializerSegWit TX_COUNT = 8908766 TX_COUNT_HEIGHT = 1105256 TX_PER_BLOCK = 10 @@ -538,6 +536,7 @@ class Viacoin(AuxPowMixin, Coin): IRC_CHANNEL="#vialectrum" RPC_PORT = 5222 REORG_LIMIT = 5000 + DESERIALIZER = lib_tx.DeserializerAuxPowSegWit PEERS = [ 'vialectrum.bitops.me s t', 'server.vialectrum.org s t', @@ -563,7 +562,7 @@ class ViacoinTestnet(Viacoin): class ViacoinTestnetSegWit(ViacoinTestnet): NET = "testnet-segwit" - DESERIALIZER = DeserializerSegWit + DESERIALIZER = lib_tx.DeserializerSegWit # Source: namecoin.org @@ -718,7 +717,7 @@ class DigiByte(Coin): WIF_BYTE = bytes.fromhex("80") GENESIS_HASH = ('7497ea1b465eb39f1c8f507bc877078f' 'e016d6fcb6dfad3a64c98dcc6e1e8496') - DESERIALIZER = DeserializerSegWit + DESERIALIZER = lib_tx.DeserializerSegWit TX_COUNT = 1046018 TX_COUNT_HEIGHT = 1435000 TX_PER_BLOCK = 1000 @@ -796,7 +795,7 @@ class Zcash(Coin): 'd06b4a8a5c453883c000b031973dce08') STATIC_BLOCK_HEADERS = False BASIC_HEADER_SIZE = 140 # Excluding Equihash solution - DESERIALIZER = DeserializerZcash + DESERIALIZER = lib_tx.DeserializerZcash TX_COUNT = 329196 TX_COUNT_HEIGHT = 68379 TX_PER_BLOCK = 5 @@ -836,7 +835,7 @@ class Einsteinium(Coin): WIF_BYTE = bytes.fromhex("b0") GENESIS_HASH = ('4e56204bb7b8ac06f860ff1c845f03f9' '84303b5b97eb7b42868f714611aed94b') - DESERIALIZER = DeserializerSegWit + DESERIALIZER = lib_tx.DeserializerSegWit TX_COUNT = 2087559 TX_COUNT_HEIGHT = 1358517 TX_PER_BLOCK = 2 @@ -855,7 +854,7 @@ class Blackcoin(Coin): WIF_BYTE = bytes.fromhex("99") GENESIS_HASH = ('000001faef25dec4fbcf906e6242621d' 'f2c183bf232f263d0ba5b101911e4563') - DESERIALIZER = DeserializerTxTime + DESERIALIZER = lib_tx.DeserializerTxTime DAEMON = daemon.LegacyRPCDaemon TX_COUNT = 4594999 TX_COUNT_HEIGHT = 1667070 @@ -889,7 +888,7 @@ class Bitbay(Coin): WIF_BYTE = bytes.fromhex("99") GENESIS_HASH = ('0000075685d3be1f253ce777174b1594' '354e79954d2a32a6f77fe9cba00e6467') - DESERIALIZER = DeserializerTxTime + DESERIALIZER = lib_tx.DeserializerTxTime DAEMON = daemon.LegacyRPCDaemon TX_COUNT = 4594999 TX_COUNT_HEIGHT = 1667070 @@ -924,7 +923,7 @@ class Peercoin(Coin): WIF_BYTE = bytes.fromhex("b7") GENESIS_HASH = ('0000000032fe677166d54963b62a4677' 'd8957e87c508eaa4fd7eb1c880cd27e3') - DESERIALIZER = DeserializerTxTime + DESERIALIZER = lib_tx.DeserializerTxTime DAEMON = daemon.LegacyRPCDaemon TX_COUNT = 1207356 TX_COUNT_HEIGHT = 306425 @@ -944,7 +943,7 @@ class Reddcoin(Coin): WIF_BYTE = bytes.fromhex("bd") GENESIS_HASH = ('b868e0d95a3c3c0e0dadc67ee587aaf9' 'dc8acbf99e3b4b3110fad4eb74c1decc') - DESERIALIZER = DeserializerReddcoin + DESERIALIZER = lib_tx.DeserializerReddcoin TX_COUNT = 5413508 TX_COUNT_HEIGHT = 1717382 TX_PER_BLOCK = 3 @@ -964,7 +963,7 @@ class Vertcoin(Coin): WIF_BYTE = bytes.fromhex("80") GENESIS_HASH = ('4d96a915f49d40b1e5c2844d1ee2dccb' '90013a990ccea12c492d22110489f0c4') - DESERIALIZER = DeserializerSegWit + DESERIALIZER = lib_tx.DeserializerSegWit TX_COUNT = 2383423 TX_COUNT_HEIGHT = 759076 TX_PER_BLOCK = 3 @@ -983,7 +982,7 @@ class Monacoin(Coin): WIF_BYTE = bytes.fromhex("B0") GENESIS_HASH = ('ff9f1c0116d19de7c9963845e129f9ed' '1bfc0b376eb54fd7afa42e0d418c8bb6') - DESERIALIZER = DeserializerSegWit + DESERIALIZER = lib_tx.DeserializerSegWit TX_COUNT = 2568580 TX_COUNT_HEIGHT = 1029766 TX_PER_BLOCK = 2 @@ -1046,7 +1045,7 @@ class Neblio(Coin): WIF_BYTE = bytes.fromhex("80") GENESIS_HASH = ('7286972be4dbc1463d256049b7471c25' '2e6557e222cab9be73181d359cd28bcc') - DESERIALIZER = DeserializerTxTime + DESERIALIZER = lib_tx.DeserializerTxTime TX_COUNT = 23675 TX_COUNT_HEIGHT = 22785 TX_PER_BLOCK = 1 diff --git a/lib/tx.py b/lib/tx.py index bbba5cd..049924f 100644 --- a/lib/tx.py +++ b/lib/tx.py @@ -257,6 +257,10 @@ class DeserializerAuxPow(Deserializer): return self._read_nbytes(header_end) +class DeserializerAuxPowSegWit(DeserializerSegWit, DeserializerAuxPow): + pass + + class TxJoinSplit(namedtuple("Tx", "version inputs outputs locktime")): '''Class representing a JoinSplit transaction.'''