Browse Source

daemon.py: support ETC via Parity

- Parity v2.7.2 is the tested version
The MMGen Project 3 years ago
parent
commit
1575b30
6 changed files with 24 additions and 10 deletions
  1. 10 2
      mmgen/daemon.py
  2. 2 2
      mmgen/protocol.py
  3. 2 1
      mmgen/rpc.py
  4. 1 1
      test/test-release.sh
  5. 3 3
      test/test_py_d/ts_ethdev.py
  6. 6 1
      test/unit_tests_d/ut_rpc.py

+ 10 - 2
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

+ 2 - 2
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']

+ 2 - 1
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

+ 1 - 1
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'

+ 3 - 3
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):

+ 6 - 1
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():