regtest: enable hdseed wallet for LTC, BCH

This commit is contained in:
The MMGen Project 2022-02-10 12:51:39 +00:00
commit 2f42346068
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
2 changed files with 27 additions and 25 deletions

View file

@ -79,6 +79,7 @@ class bitcoin_core_daemon(CoinDaemon):
['--usecashaddr=0', self.coin == 'BCH'],
['--mempoolreplacement=1', self.coin == 'LTC'],
['--txindex=1', self.coin == 'LTC' or self.network == 'regtest'],
['--addresstype=bech32', self.coin == 'LTC' and self.network == 'regtest'],
)
self.lockfile = os.path.join(self.network_datadir,'.cookie')

View file

@ -39,15 +39,18 @@ def create_data_dir(data_dir):
try: os.makedirs(data_dir)
except: pass
miner_addr = {
# cTyMdQ2BgfAsjopRVZrj7AoEGp97pKfrC2NkqLuwHr4KHfPNAKwp hdseed=1 ('beadcafe'*8)
'btc': 'bcrt1qaq8t3pakcftpk095tnqfv5cmmczysls024atnd',
'ltc': 'rltc1qaq8t3pakcftpk095tnqfv5cmmczysls05c8zyn',
'bch': 'n2fxhNx27GhHAWQhyuZ5REcBNrJqCJsJ12',
}
def create_hdseed(proto):
# cTyMdQ2BgfAsjopRVZrj7AoEGp97pKfrC2NkqLuwHr4KHfPNAKwp hdseed=1
# addr=bcrt1qaq8t3pakcftpk095tnqfv5cmmczysls024atnd
# cTEkSYCWKvNo757uwFPd4yuCXsbZvfJDipHsHWFRapXpnikMHvgn label=
# addr=bcrt1q537rgyctcqdgs8nm8gvku05znka4h2m00lx8ps hdkeypath=m/0'/0'/0'
from .tool.api import tool_api
t = tool_api()
t.init_coin(proto.coin,proto.network)
t.addrtype = 'bech32'
t.addrtype = 'compressed' if proto.coin == 'BCH' else 'bech32'
return t.hex2wif('beadcafe'*8)
def cliargs_convert(args):
@ -82,24 +85,16 @@ class MMGenRegtest(MMGenObject):
blocks = int(blocks)
async def have_generatetoaddress():
ret = await self.rpc_call('help','generatetoaddress',wallet='miner')
return not 'unknown command:' in ret
async def get_miner_address():
return await self.rpc_call('getnewaddress',wallet='miner')
if self.d.state == 'stopped':
die(1,'Regtest daemon is not running')
self.d.wait_for_state('ready')
if await have_generatetoaddress():
cmd_args = ( 'generatetoaddress', blocks, await get_miner_address() )
else:
cmd_args = ( 'generate', blocks )
out = await self.rpc_call(*cmd_args,wallet='miner')
out = await self.rpc_call(
'generatetoaddress',
blocks,
miner_addr[self.coin],
wallet = 'miner' )
if len(out) != blocks:
die(4,'Error generating blocks')
@ -126,16 +121,22 @@ class MMGenRegtest(MMGenObject):
await rpc.icall(
'createwallet',
wallet_name = user,
blank = user != 'miner' or self.coin == 'btc',
blank = True,
no_keys = user != 'miner',
load_on_startup = False )
if self.coin == 'btc': # BCH,LTC refuse to set HD seed while in IBD
await rpc.call(
'sethdseed',
True,
create_hdseed(self.proto),
wallet = 'miner' )
# BCH and LTC daemons refuse to set HD seed with empty blockchain ("in IBD" error),
# so generate a block:
await self.generate(1,silent=True)
# Unfortunately, we don’t get deterministic output with BCH and LTC even with fixed
# hdseed, as their 'sendtoaddress' calls produce non-deterministic TXIDs due to random
# input ordering and fee estimation.
await rpc.call(
'sethdseed',
True,
create_hdseed(self.proto),
wallet = 'miner' )
await self.generate(432,silent=True)