|
|
@ -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 |
|
|
|