From 1575b30cd4c758f6c3c17cd4b3754fda85333ba4 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Fri, 30 Jul 2021 11:25:42 +0000 Subject: [PATCH] daemon.py: support ETC via Parity - Parity v2.7.2 is the tested version --- mmgen/daemon.py | 12 ++++++++++-- mmgen/protocol.py | 4 ++-- mmgen/rpc.py | 3 ++- test/test-release.sh | 2 +- test/test_py_d/ts_ethdev.py | 6 +++--- test/unit_tests_d/ut_rpc.py | 7 ++++++- 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/mmgen/daemon.py b/mmgen/daemon.py index a02b9a45..9f443103 100755 --- a/mmgen/daemon.py +++ b/mmgen/daemon.py @@ -310,7 +310,7 @@ class CoinDaemon(Daemon): 'LTC': _cd('Litecoin', ['litecoin_core']), 'XMR': _cd('Monero', ['monero']), 'ETH': _cd('Ethereum', ['openethereum']), -# 'ETC': _cd('Ethereum Classic', ['openethereum_etc']), + 'ETC': _cd('Ethereum Classic', ['parity']), } @classmethod @@ -608,7 +608,15 @@ class openethereum_daemon(CoinDaemon): [f'--chain={self.proto.chain_name}', self.network!='regtest'], [f'--config=dev', self.network=='regtest'], # no presets for mainnet or testnet ['--mode=offline', self.test_suite or self.network=='regtest'], - ['--log-file='+os.path.join(self.datadir, f'openethereum-{self.network}.log')], + ['--log-file='+os.path.join(self.datadir, f'{self.id}-{self.network}.log')], ['daemon', ld], [self.pidfile, ld], ) + +class parity_daemon(openethereum_daemon): + daemon_data = _dd('Parity', 2007002, '2.7.2') + version_pat = r'Parity-Ethereum//v(\d+)\.(\d+)\.(\d+)' + + exec_fn = 'parity' + ports_shift = _nw(100,120,140) + rpc_ports = _nw(*[8545 + n for n in ports_shift]) # non-standard diff --git a/mmgen/protocol.py b/mmgen/protocol.py index f2aa8737..9a8597cb 100755 --- a/mmgen/protocol.py +++ b/mmgen/protocol.py @@ -418,12 +418,12 @@ class CoinProtocol(MMGenObject): chain_names = ['developmentchain'] class EthereumClassic(Ethereum): - chain_names = ['ethereum_classic'] # chain_id 0x3d (61) + chain_names = ['classic','ethereum_classic'] max_tx_fee = ETHAmt('0.005') ignore_daemon_version = False class EthereumClassicTestnet(EthereumClassic): - chain_names = ['classic-testnet'] # aka Morden, chain_id 0x3e (62) (UNTESTED) + chain_names = ['morden','morden_testnet','classic-testnet'] class EthereumClassicRegtest(EthereumClassicTestnet): chain_names = ['developmentchain'] diff --git a/mmgen/rpc.py b/mmgen/rpc.py index f77e225c..0281856c 100755 --- a/mmgen/rpc.py +++ b/mmgen/rpc.py @@ -238,6 +238,7 @@ class CallSigs: class openethereum: pass + class parity: pass class RPCClient(MMGenObject): @@ -619,7 +620,7 @@ class EthereumRPCClient(RPCClient,metaclass=aInitMeta): self.cur_date = int(bh['timestamp'],16) self.caps = () - if self.daemon.id == 'openethereum': + if self.daemon.id in ('parity','openethereum'): if (await self.call('parity_nodeKind'))['capability'] == 'full': self.caps += ('full_node',) self.chainID = None diff --git a/test/test-release.sh b/test/test-release.sh index 6a1e4118..b95a47b9 100755 --- a/test/test-release.sh +++ b/test/test-release.sh @@ -36,7 +36,7 @@ python='python3' rounds=100 rounds_min=20 rounds_mid=250 rounds_max=500 dfl_tests='misc obj color unit hash ref altref alts xmr eth autosign btc btc_tn btc_rt bch bch_rt ltc ltc_rt tool tool2 gen' -extra_tests='autosign_btc autosign_live ltc_tn bch_tn' # 'etc' temporarily disabled +extra_tests='autosign_btc autosign_live etc ltc_tn bch_tn' noalt_tests='misc obj color unit hash ref autosign_btc btc btc_tn btc_rt tool tool2 gen' quick_tests='misc obj color unit hash ref altref alts xmr eth autosign btc btc_rt tool tool2 gen' qskip_tests='btc_tn bch bch_rt ltc ltc_rt' diff --git a/test/test_py_d/ts_ethdev.py b/test/test_py_d/ts_ethdev.py index 835c361d..be0ed631 100755 --- a/test/test_py_d/ts_ethdev.py +++ b/test/test_py_d/ts_ethdev.py @@ -138,14 +138,14 @@ coin = g.coin class TestSuiteEthdev(TestSuiteBase,TestSuiteShared): 'Ethereum transacting, token deployment and tracking wallet operations' - networks = ('eth',) # 'etc' temporarily disabled + networks = ('eth','etc') passthru_opts = ('coin',) extra_spawn_args = ['--regtest=1'] tmpdir_nums = [22] solc_vers = ('0.5.1','0.5.3') # 0.5.1: Raspbian Stretch, 0.5.3: Ubuntu Bionic color = True cmd_group = ( - ('setup', 'OpenEthereum dev mode tests for coin {} (start openethereum)'.format(coin)), + ('setup', 'dev mode tests for coin {} (start daemon)'.format(coin)), ('daemon_version', 'mmgen-tool daemon_version'), ('wallet_upgrade1', 'upgrading the tracking wallet (v1 -> v2)'), ('wallet_upgrade2', 'upgrading the tracking wallet (v2 -> v3)'), @@ -305,7 +305,7 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared): ('token_remove_addr1','removing addr #{} from {} token tracking wallet'.format(del_addrs[0],coin)), ('token_remove_addr2','removing addr #{} from {} token tracking wallet'.format(del_addrs[1],coin)), - ('stop', 'stopping openethereum'), + ('stop', 'stopping daemon'), ) def __init__(self,trunner,cfgs,spawn): diff --git a/test/unit_tests_d/ut_rpc.py b/test/unit_tests_d/ut_rpc.py index 0f66a424..bd52909c 100755 --- a/test/unit_tests_d/ut_rpc.py +++ b/test/unit_tests_d/ut_rpc.py @@ -60,6 +60,8 @@ class init_test: do_msg(rpc) await rpc.call('eth_blockNumber',timeout=300) + etc = eth + def run_test(coin,auth): proto = init_proto(coin) @@ -86,7 +88,7 @@ def run_test(coin,auth): class unit_tests: - altcoin_deps = ('ltc','bch','eth','xmr_wallet') + altcoin_deps = ('ltc','bch','eth','etc','xmr_wallet') def btc(self,name,ut): return run_test('btc',auth=True) @@ -100,6 +102,9 @@ class unit_tests: def eth(self,name,ut): return run_test('eth',auth=False) + def etc(self,name,ut): + return run_test('etc',auth=False) + def xmr_wallet(self,name,ut): async def run():