From 19e0f9bce27ee24603e46c71265c60f8046537a7 Mon Sep 17 00:00:00 2001 From: Carsen Klock Date: Mon, 5 Mar 2018 03:26:25 -0700 Subject: [PATCH] Add Denarius (DNR) (#396) * Added DNR With tests --- .travis.yml | 1 + lib/coins.py | 39 ++++++++++++++++++++++++ setup.py | 1 + tests/blocks/denarius_mainnet_10000.json | 14 +++++++++ 4 files changed, 55 insertions(+) create mode 100644 tests/blocks/denarius_mainnet_10000.json diff --git a/.travis.yml b/.travis.yml index 32fd10a..a76ba32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ install: - pip install ecdsa - pip install plyvel - pip install pyrocksdb + - pip install tribus-hash - pip install pytest-cov # command to run tests script: pytest --cov=server --cov=lib --cov=wallet diff --git a/lib/coins.py b/lib/coins.py index 30ed50b..dee9f08 100644 --- a/lib/coins.py +++ b/lib/coins.py @@ -1232,6 +1232,45 @@ class CanadaeCoin(AuxPowMixin, Coin): TX_PER_BLOCK = 1 RPC_PORT = 34330 REORG_LIMIT = 1000 + +class Denarius(Coin): + NAME = "Denarius" + SHORTNAME = "DNR" + NET = "mainnet" + XPUB_VERBYTES = bytes.fromhex("0488b21e") + XPRV_VERBYTES = bytes.fromhex("0488ade4") + P2PKH_VERBYTE = bytes.fromhex("1E") #Address starts with a D + P2SH_VERBYTES = [bytes.fromhex("5A")] + WIF_BYTE = bytes.fromhex("9E") #WIF starts with a 6 + GENESIS_HASH = ('00000d5dbbda01621cfc16bbc1f9bf32' + '64d641a5dbf0de89fd0182c2c4828fcd') + DESERIALIZER = lib_tx.DeserializerTxTime + TX_COUNT = 4230 + RPC_PORT = 32339 + ESTIMATE_FEE = 0.00001 + RELAY_FEE = 0.00001 + DAEMON = daemon.FakeEstimateFeeDaemon + TX_COUNT_HEIGHT = 306187 + TX_PER_BLOCK = 4000 + + @classmethod + def header_hash(cls, header): + '''Given a header return the hash.''' + import tribus_hash + return tribus_hash.getPoWHash(header) + + +class DenariusTestnet(Denarius): + NET = "testnet" + XPUB_VERBYTES = bytes.fromhex("043587cf") + XPRV_VERBYTES = bytes.fromhex("04358394") + P2PKH_VERBYTE = bytes.fromhex("12") + P2SH_VERBYTES = [bytes.fromhex("74")] + WIF_BYTE = bytes.fromhex("ef") + GENESIS_HASH = ('000086bfe8264d241f7f8e5393f74778' + '4b8ca2aa98bdd066278d590462a4fdb4') + RPC_PORT = 32338 + REORG_LIMIT = 2000 class Sibcoin(Dash): diff --git a/setup.py b/setup.py index 6f7becf..a3bfc2a 100644 --- a/setup.py +++ b/setup.py @@ -9,6 +9,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. + # "tribus_hash" package is required to sync Denarius network. install_requires=['plyvel', 'pylru', 'aiohttp >= 1'], packages=setuptools.find_packages(exclude=['tests']), description='ElectrumX Server', diff --git a/tests/blocks/denarius_mainnet_10000.json b/tests/blocks/denarius_mainnet_10000.json new file mode 100644 index 0000000..bbce5a3 --- /dev/null +++ b/tests/blocks/denarius_mainnet_10000.json @@ -0,0 +1,14 @@ +{ + "hash": "00000000058989f94843c6047bdf72b3f37f62055354c5ff859e28bb0b5282b9", + "size": 204, + "height": 10000, + "merkleroot": "65841bbf5c89ed2def56d4ef505ee1f680fd66028613e372ae7355f09b646a58", + "tx": [ + "65841bbf5c89ed2def56d4ef505ee1f680fd66028613e372ae7355f09b646a58" + ], + "time" : 1497949464, + "nonce" : 1484027400, + "bits" : "1c073cc2", + "previousblockhash": "0000000003db0426bcd14ad568df783dceaa1ad5def62d347fe6ef8d77c40a44", + "block": "06000000440ac4778defe67f342df6ded51aaace3d78df68d54ad1bc2604db0300000000586a649bf05573ae72e313860266fd80f6e15e50efd456ef2ded895cbf1b846518e54859c23c071c08767458010200000018e54859010000000000000000000000000000000000000000000000000000000000000000ffffffff170210270418e54859088100000a000000007969696d7000000000000100a3e11100000000232102ae784442221c0d8cc1db36d90ed2051bb08cb984575e8de3e57ddc209ef8b0a5ac0000000000" +} \ No newline at end of file