Add Bitcoin Atom support (#378)
This commit is contained in:
parent
790385cf7b
commit
dfea542d0e
40
lib/coins.py
40
lib/coins.py
@ -1324,3 +1324,43 @@ class Bitcore(BitcoinMixin, Coin):
|
||||
TX_COUNT_HEIGHT = 126946
|
||||
TX_PER_BLOCK = 2
|
||||
RPC_PORT = 8556
|
||||
|
||||
|
||||
class BitcoinAtom(Coin):
|
||||
NAME = "BitcoinAtom"
|
||||
SHORTNAME = "BCA"
|
||||
NET = "mainnet"
|
||||
P2PKH_VERBYTE = bytes.fromhex("17")
|
||||
P2SH_VERBYTES = [bytes.fromhex("0a")]
|
||||
WIF_BYTE = bytes.fromhex("80")
|
||||
GENESIS_HASH = ('000000000019d6689c085ae165831e93'
|
||||
'4ff763ae46a2a6c172b3f1b60a8ce26f')
|
||||
STATIC_BLOCK_HEADERS = False
|
||||
DESERIALIZER = lib_tx.DeserializerBitcoinAtom
|
||||
HEADER_SIZE_POST_FORK = 84
|
||||
BLOCK_PROOF_OF_STAKE = 0x01
|
||||
BLOCK_PROOF_OF_STAKE_FLAGS = b'\x01\x00\x00\x00'
|
||||
TX_COUNT = 295158744
|
||||
TX_COUNT_HEIGHT = 589197
|
||||
TX_PER_BLOCK = 10
|
||||
RPC_PORT = 9136
|
||||
REORG_LIMIT = 5000
|
||||
|
||||
@classmethod
|
||||
def header_hash(cls, header):
|
||||
'''Given a header return hash'''
|
||||
header_to_be_hashed = header[:cls.BASIC_HEADER_SIZE]
|
||||
# New block header format has some extra flags in the end
|
||||
if len(header) == cls.HEADER_SIZE_POST_FORK:
|
||||
flags, = struct.unpack('<I', header[-4:])
|
||||
# Proof of work blocks have special serialization
|
||||
if flags & cls.BLOCK_PROOF_OF_STAKE != 0:
|
||||
header_to_be_hashed += cls.BLOCK_PROOF_OF_STAKE_FLAGS
|
||||
|
||||
return double_sha256(header_to_be_hashed)
|
||||
|
||||
@classmethod
|
||||
def block_header(cls, block, height):
|
||||
'''Return the block header bytes'''
|
||||
deserializer = cls.DESERIALIZER(block)
|
||||
return deserializer.read_header(height, cls.BASIC_HEADER_SIZE)
|
||||
|
||||
11
lib/tx.py
11
lib/tx.py
@ -390,3 +390,14 @@ class DeserializerTxTimeAuxPow(DeserializerTxTime):
|
||||
header_end = static_header_size
|
||||
self.cursor = start
|
||||
return self._read_nbytes(header_end)
|
||||
|
||||
|
||||
class DeserializerBitcoinAtom(DeserializerSegWit):
|
||||
FORK_BLOCK_HEIGHT = 505888
|
||||
|
||||
def read_header(self, height, static_header_size):
|
||||
'''Return the block header bytes'''
|
||||
header_len = static_header_size
|
||||
if height >= self.FORK_BLOCK_HEIGHT:
|
||||
header_len += 4 # flags
|
||||
return self._read_nbytes(header_len)
|
||||
|
||||
15
tests/blocks/bitcoinatom_mainnet_586900.json
Normal file
15
tests/blocks/bitcoinatom_mainnet_586900.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"hash": "0000000000000000da3df1b019576a00d93974818b392b4c1a0a15f3df7c66fb",
|
||||
"size": 510,
|
||||
"height": 586900,
|
||||
"merkleroot": "296a6318fb26dd39534acbe2f2c4cd82d0a9ce00d727d37deb0684748f7b73a7",
|
||||
"tx": [
|
||||
"31417678bfbfb9784494974a1b5a7fc5b072c2fc1077f7951158cba43452d0af",
|
||||
"253b8c15e7d5449dd604f07b5923a59ea35c6d0db0c0603497fec51cac317533"
|
||||
],
|
||||
"time": 1518611740,
|
||||
"nonce": 2909803309,
|
||||
"bits": "1903fffc",
|
||||
"previousblockhash": "0000000000000003060c045d260d64f50cbd03f827630974fc7686d7b0ed002f",
|
||||
"block": "000000202f00edb0d78676fc74096327f803bd0cf5640d265d040c060300000000000000a7737b8f748406eb7dd327d700cea9d082cdc4f2e2cb4a5339dd26fb18636a291c2d845afcff03192d1370ad000000800201000000010000000000000000000000000000000000000000000000000000000000000000ffffffff200394f408041c2d845a0877ffb4bff7f26d020d2f6e6f64655374726174756d2f00000000020000000000000000266a24aa21a9ed370b337f1e15c7e0159715ea1707ec27b4a123f1a8810ad88e3b24ae412cd764288e814a000000001976a9143c0b217ab4208ab437dfc49c96d7d6f9e6608c2788ac000000000200000001af692cd7d8192a3b80f405e528d4cb4bc49efcad44c6d290a11cd21134a3bb82010000006a4730440220721a2935cc808b96ab20685c4bff77a1c253c5827c9fec4e7a54f2170c44870e02203fd847b15b449f3154acad12ed2f1d29b067cf73640e678a4b847d851441f4b0412103e0d0b2ea7fe2b07a3e26957a995190e4cbbd590653c8b118e161bcbcdbf52c4cfeffffff021d1db709000000001976a914035e3987787b71e772366787e087c8e9351dd1a888acb6d84c00000000001976a9143acea32e9ebc212a858c28a9624fb8924f35d8f288ac93f40800"
|
||||
}
|
||||
15
tests/blocks/bitcoinatom_mainnet_586956.json
Normal file
15
tests/blocks/bitcoinatom_mainnet_586956.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"hash": "27b7efad91a595c0717a2e9fc4fb252545000c18a6610130d15382be83c402e3",
|
||||
"size": 541,
|
||||
"height": 586956,
|
||||
"merkleroot": "81aa679f1878a93367dad062c8a6964847881260c19320b4e3664c63deabac7f",
|
||||
"tx": [
|
||||
"789dda752eecf22056a93e8bcdf89eb31ac8102485124a7488fa0472250ac382",
|
||||
"0f35c0b9bbf661787bfc920b5f4571440602e5723144c10b8fa5629dc3279abf"
|
||||
],
|
||||
"time": 1518630315,
|
||||
"nonce": 0,
|
||||
"bits": "1d00ffff",
|
||||
"previousblockhash": "0000000000000002c32c76bc7971dd10adf28abd4ff45c1b23c5b74d0265ffcc",
|
||||
"block": "00000020ccff65024db7c5231b5cf44fbd8af2ad10dd7179bc762cc302000000000000007facabde634c66e3b42093c1601288474896a6c862d0da6733a978189f67aa81ab75845affff001d00000000010000800202000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0603ccf4080101ffffffff02ca000000000000002321034055f219c9619e18ef193c0def3e43ebffea827c950f0e78ee8f146b9f4c8102ac0000000000000000266a24aa21a9ed164fe82b7473bf82cfdd7c28f90668f9fe78200022bafe159f293b4fe5e10832000000000200000001bef5797f980f07ba3bc619d2eef2ad728737709a747c4adf477dfb05186e7fe2010000006a47304402201fbef43b1877a013291effd9d9da882d128109d89db28ddd96f0bcb65ac4aab002206893640e754a9d147355474229af237581956fa191cb806648744e2d6ba989664121034055f219c9619e18ef193c0def3e43ebffea827c950f0e78ee8f146b9f4c8102ffffffff01b67b814a000000002321034055f219c9619e18ef193c0def3e43ebffea827c950f0e78ee8f146b9f4c8102ac000000004630440220413932292b5e1cc5ae8cc019b11e5db7ec4432d260e8fee0f9c0a195a5aec28902204a90b318cb1b4f77ebd678db45fc0fce5ab3f0cc2d89aacaa523d8b6cd82f29e"
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user