Add support for CivX mainnet and testnet (#627)
This commit is contained in:
parent
6e300cf18b
commit
06d58f7786
@ -40,7 +40,7 @@ import base64
|
||||
|
||||
import electrumx.lib.util as util
|
||||
from electrumx.lib.hash import Base58, hash160, double_sha256, hash_to_hex_str
|
||||
from electrumx.lib.hash import HASHX_LEN
|
||||
from electrumx.lib.hash import HASHX_LEN, hex_str_to_hash
|
||||
from electrumx.lib.script import ScriptPubKey, OpCodes
|
||||
import electrumx.lib.tx as lib_tx
|
||||
import electrumx.server.block_processor as block_proc
|
||||
@ -2238,3 +2238,53 @@ class tBitg(Bitg):
|
||||
GENESIS_HASH = (
|
||||
'000008467c3a9c587533dea06ad9380cded3ed32f9742a6c0c1aebc21bf2bc9b')
|
||||
RPC_PORT = 19332
|
||||
|
||||
|
||||
class CivX(Coin):
|
||||
NAME = "CivX"
|
||||
SHORTNAME = "CIVX"
|
||||
NET = "mainnet"
|
||||
XPUB_VERBYTES = bytes.fromhex("0488b21e")
|
||||
XPRV_VERBYTES = bytes.fromhex("0488ade4")
|
||||
GENESIS_HASH = ('00000036090a68c523471da7a4f0f958'
|
||||
'c1b4403fef74a003be7f71877699cab7')
|
||||
P2PKH_VERBYTE = bytes.fromhex("1C")
|
||||
P2SH_VERBYTE = [bytes.fromhex("57")]
|
||||
WIF_BYTE = bytes.fromhex("9C")
|
||||
RPC_PORT = 4561
|
||||
TX_COUNT = 1000
|
||||
TX_COUNT_HEIGHT = 10000
|
||||
TX_PER_BLOCK = 4
|
||||
DAEMON = daemon.PreLegacyRPCDaemon
|
||||
DESERIALIZER = lib_tx.DeserializerTxTime
|
||||
|
||||
@classmethod
|
||||
def header_hash(cls, header):
|
||||
version, = util.unpack_le_uint32_from(header)
|
||||
|
||||
if version > 2:
|
||||
return double_sha256(header)
|
||||
else:
|
||||
return hex_str_to_hash(CivX.GENESIS_HASH)
|
||||
|
||||
|
||||
class CivXTestnet(CivX):
|
||||
SHORTNAME = "tCIVX"
|
||||
NET = "testnet"
|
||||
XPUB_VERBYTES = bytes.fromhex("043587cf")
|
||||
XPRV_VERBYTES = bytes.fromhex("04358394")
|
||||
GENESIS_HASH = ('0000059bb2c2048493efcb0f1a034972'
|
||||
'b3ce4089d54c93b69aaab212fb369887')
|
||||
P2PKH_VERBYTE = bytes.fromhex("4B")
|
||||
P2SH_VERBYTE = [bytes.fromhex("CE")]
|
||||
WIF_BYTE = bytes.fromhex("CB")
|
||||
RPC_PORT = 14561
|
||||
|
||||
@classmethod
|
||||
def header_hash(cls, header):
|
||||
version, = util.unpack_le_uint32_from(header)
|
||||
|
||||
if version > 2:
|
||||
return double_sha256(header)
|
||||
else:
|
||||
return hex_str_to_hash(CivXTestnet.GENESIS_HASH)
|
||||
|
||||
@ -445,3 +445,15 @@ class DecredDaemon(Daemon):
|
||||
# FIXME allow self signed certificates
|
||||
connector = aiohttp.TCPConnector(verify_ssl=False)
|
||||
return aiohttp.ClientSession(connector=connector)
|
||||
|
||||
|
||||
class PreLegacyRPCDaemon(LegacyRPCDaemon):
|
||||
'''Handles connections to a daemon at the given URL.
|
||||
|
||||
This class is useful for daemons that don't have the new 'getblock'
|
||||
RPC call that returns the block in hex, and need the False parameter
|
||||
for the getblock'''
|
||||
|
||||
async def deserialised_block(self, hex_hash):
|
||||
'''Return the deserialised block with the given hex hash.'''
|
||||
return await self._send_single('getblock', (hex_hash, False))
|
||||
|
||||
16
tests/blocks/civx_mainnet_50000.json
Normal file
16
tests/blocks/civx_mainnet_50000.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"hash": "596b9249ffd6c1dfb3cfa16d3ade2e0cb57342fed66b90e6444dc54cc99d0fc4",
|
||||
"size": 445,
|
||||
"height": 50000,
|
||||
"merkleroot": "8db60d963dad433c8655021d291aafd731a6754aac9b69cf0dece61e5b3c1b75",
|
||||
"tx": [
|
||||
"364c947002496d3115379dd779e2ce54cf114fb6cca42bd3da4de1823e4f08cc",
|
||||
"a09b658cbe21162bbeb1821e2caf1f0947f8cdd517b87f2232ba1150043790e1"
|
||||
],
|
||||
"time": 1526710352,
|
||||
"nonce": 0,
|
||||
"bits": "1a7b61c6",
|
||||
"previousblockhash": "44530f8cc7040528199dc3a41a8b660bf2feb8e0015d5c787086655ac03cbca3",
|
||||
"signature": "30440220710162172b283cca7007c72cbb848a52388518b8cfb7a6c906744f473afe312b022056fd92b06351ee7049f0857d688134449566dcb82d0f6a3cb36208832988cba3",
|
||||
"block": "07000000a3bc3cc05a658670785c5d01e0b8fef20b668b1aa4c39d19280504c78c0f5344751b3c5b1ee6ec0dcf699bac4a75a631d7af1a291d0255863c43ad3d960db68d50c0ff5ac6617b1a00000000020100000050c0ff5a010000000000000000000000000000000000000000000000000000000000000000ffffffff040350c300ffffffff01000000000000000000000000000100000050c0ff5a017879028fc93da2d5ce18feee9f074086790d34c97ccfafe15a42b2423f3e28490200000049483045022100e3a092a079346179213d9b7079c9795e291883cb715e3efee656b9a981632432022002cafb6d6d497705f455b5d6a60bca38c88c26910101faef433ecfe80515e1ef01ffffffff03000000000000000000c07975296d000000232103c0c30d173c8478ceaaba836e8cae3c8c4e43f88f6d555600be124781b533956bacc07975296d000000232103c0c30d173c8478ceaaba836e8cae3c8c4e43f88f6d555600be124781b533956bac000000004630440220710162172b283cca7007c72cbb848a52388518b8cfb7a6c906744f473afe312b022056fd92b06351ee7049f0857d688134449566dcb82d0f6a3cb36208832988cba3"
|
||||
}
|
||||
16
tests/blocks/civx_testnet_60000.json
Normal file
16
tests/blocks/civx_testnet_60000.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"hash": "1e4447195f4259b313b2c56072f7000237828e659254d5bf55f2b91e443f124b",
|
||||
"size": 401,
|
||||
"height": 60000,
|
||||
"merkleroot": "9cf808c8f0e0d62864edee37a27fc44114a8896a6ace0c4ac6434c58e0d450ef",
|
||||
"tx": [
|
||||
"b3e734e183f1b4f10cc3de258d02efbd73fc64577e9c5fc54f7d750b95b29aff",
|
||||
"859a989109ee967e941808a43224463e181b51af8acc27ad05e2e4f7fdf45f81"
|
||||
],
|
||||
"time": 1537111488,
|
||||
"nonce": 0,
|
||||
"bits": "1b00ffff",
|
||||
"previousblockhash": "4f57fffd01fabbf020ac9e2110b4de9e127c06ba19f83741a5cb26f3b0aa13fe",
|
||||
"signature" : "304402201d89a82d54b81e3aa0de97875bb15a874fce3319c7baf1751d18620f905909dc02202fc3fe4c17ef43aaa62dab4a6e0c735751d75b8f66e2a81cbead52f744570769",
|
||||
"block": "07000000fe13aab0f326cba54137f819ba067c129edeb410219eac20f0bbfa01fdff574fef50d4e0584c43c64a0cce6a6a89a81441c47fa237eeed6428d6e0f0c808f89cc0759e5bffff001b000000000201000000c0759e5b010000000000000000000000000000000000000000000000000000000000000000ffffffff040360ea00ffffffff010000000000000000000000000001000000c0759e5b0143723908791e72544c4796be9da581a40eae3ba54b71b596d167f6ab245b37d60100000049483045022100d11ebd7ac7d0dd94f22416a1b223cf91cf1a70de52b2cd502edc1121c4d5409302207e22f22add1dd96bd214ca0f8875e4f06d9688c27053db82ea0ae0e9676d575401ffffffff02000000000000000000c05469f60300000023210288e5256969a3a9fd4735e6b8c8f905b270564f2448658177faf4c990e5745c45ac0000000046304402201d89a82d54b81e3aa0de97875bb15a874fce3319c7baf1751d18620f905909dc02202fc3fe4c17ef43aaa62dab4a6e0c735751d75b8f66e2a81cbead52f744570769"
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user