From 722e66459e45bbbeacce934a6f2a34d6d0c702e8 Mon Sep 17 00:00:00 2001 From: Peter Bushnell Date: Fri, 7 Dec 2018 14:45:45 +0000 Subject: [PATCH] Add BitcoinPlus (#665) --- .travis.yml | 1 + electrumx/lib/coins.py | 26 ++++++++++++++++++++ setup.py | 1 + tests/blocks/bitcoinplus_mainnet_749740.json | 15 +++++++++++ 4 files changed, 43 insertions(+) create mode 100644 tests/blocks/bitcoinplus_mainnet_749740.json diff --git a/.travis.yml b/.travis.yml index 06aad85..2b22bc7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,6 +31,7 @@ install: - pip install blake256 - pip install scrypt - pip install x11_hash + - pip install git+https://github.com/bitcoinplusorg/x13-hash - pip install xevan_hash - pip install quark_hash - pip install groestlcoin_hash diff --git a/electrumx/lib/coins.py b/electrumx/lib/coins.py index 80a5e31..b035793 100644 --- a/electrumx/lib/coins.py +++ b/electrumx/lib/coins.py @@ -2416,3 +2416,29 @@ class Noir(Coin): TX_COUNT = 586369 TX_COUNT_HEIGHT = 379290 TX_PER_BLOCK = 5 + + +class BitcoinPlus(Coin): + NAME = "BitcoinPlus" + SHORTNAME = "XBC" + NET = "mainnet" + XPUB_VERBYTES = bytes.fromhex("0488B21E") + XPRV_VERBYTES = bytes.fromhex("0488ADE4") + P2PKH_VERBYTE = bytes.fromhex("19") + P2SH_VERBYTES = [bytes.fromhex("55")] + WIF_BYTE = bytes.fromhex("99") + GENESIS_HASH = ('0000005f6a28e686f641c616e56182d1' + 'b43afbe08a223f23bda23cdf9d55b882') + DESERIALIZER = lib_tx.DeserializerTxTime + DAEMON = daemon.LegacyRPCDaemon + TX_COUNT = 1479247 + TX_COUNT_HEIGHT = 749740 + TX_PER_BLOCK = 2 + RPC_PORT = 8885 + REORG_LIMIT = 2000 + + @classmethod + def header_hash(cls, header): + '''Given a header return the hash.''' + import x13_hash + return x13_hash.getPoWHash(header) diff --git a/setup.py b/setup.py index 4d934aa..b6746c5 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,7 @@ setuptools.setup( python_requires='>=3.6', # via environment variables, in which case I've tested with 15.0.4 # "x11_hash" package (1.4) is required to sync DASH network. + # "x13_hash" package is required to sync BitcoinPlus network. # "tribus_hash" package is required to sync Denarius network. # "blake256" package is required to sync Decred network. # "xevan_hash" package is required to sync Xuez network. diff --git a/tests/blocks/bitcoinplus_mainnet_749740.json b/tests/blocks/bitcoinplus_mainnet_749740.json new file mode 100644 index 0000000..308e55c --- /dev/null +++ b/tests/blocks/bitcoinplus_mainnet_749740.json @@ -0,0 +1,15 @@ +{ + "hash": "b51b081592349793bbf2d761828aabef40db8c7dd9451f0a0ea279faec1aecaf", + "size": 456, + "height": 749740, + "merkleroot": "cddd323b42891a0787389d40ea0971fbf4b0215ca40fc0229e94edf486eeb1dc", + "tx": [ + "03079ad8d2c3e9db200582e7f3addec3f663c1388ea565482f6140ed58e83f1a", + "6805f87aa7027c84db875d7147696dadd998cf261237bac4a3229e0d7d35c104" + ], + "time": 1544168075, + "nonce": 0, + "bits": "1e0cd5ed", + "previousblockhash": "d86428d967a901e169de1313276f2d463664179e5a7f303923811d1c4a177102", + "block": "030000200271174a1c1d812339307f5a9e176436462d6f271313de69e101a967d92864d8dcb1ee86f4ed949e22c00fa45c21b0f4fb7109ea409d3887071a89423b32ddcd8b220a5cedd50c1e0000000002010000008b220a5c010000000000000000000000000000000000000000000000000000000000000000ffffffff0503ac700b00ffffffff0200000000000000000000000000000000000000000000010000008b220a5c015186024f3de419c8846da76a254930f9b5d68246eb21b1aceca5ba889a190ba30100000049483045022100d81ae320b3f1a296cae778b342937412cc4689f375d5dfc594c1df7fac6aa046022015c71b090e85579f041ae31c6d1881959414231882648b0878a886ba8b8b2a5a01ffffffff03000000000000000000408491a400000000232102eeb314d0ae50152e8f416521b0f3184325f57d8c7932d6a91d186fa2820d3da7ac56aca7a400000000232102eeb314d0ae50152e8f416521b0f3184325f57d8c7932d6a91d186fa2820d3da7ac00000000473045022100c4a62b764a0984e6e2f909ca41b21f61b17f230d60f6c2ba69cb504300931bc202200aa57659cf8c54861002ca924b018385aa3a44c4ff0bc9207ddecc3b8086f76e" +}