Support Bitcoin Core v0.21.0
This commit is contained in:
parent
7d54d7a050
commit
aff7db9f35
3 changed files with 41 additions and 1 deletions
|
|
@ -313,7 +313,7 @@ class CoinDaemon(Daemon):
|
|||
'btc': cd(
|
||||
'Bitcoin',
|
||||
'Bitcoin',
|
||||
'Bitcoin Core', 200100, '0.20.1',
|
||||
'Bitcoin Core', 210000, '0.21.0',
|
||||
'bitcoind',
|
||||
'bitcoin-cli',
|
||||
'bitcoin.conf',
|
||||
|
|
@ -508,6 +508,7 @@ class CoinDaemon(Daemon):
|
|||
|
||||
class BitcoinDaemon(CoinDaemon):
|
||||
cfg_file_hdr = '# BitcoinDaemon config file\n'
|
||||
tracking_wallet_name = 'mmgen-tracking-wallet'
|
||||
|
||||
def subclass_init(self):
|
||||
|
||||
|
|
|
|||
|
|
@ -87,6 +87,20 @@ class MMGenRegtest(MMGenObject):
|
|||
|
||||
gmsg('Mined {} block{}'.format(blocks,suf(blocks)))
|
||||
|
||||
async def create_tracking_wallet(self,user):
|
||||
try:
|
||||
await self.rpc_call('getbalance')
|
||||
except:
|
||||
await self.rpc_call('createwallet',
|
||||
user, # wallet_name
|
||||
user != 'miner', # disable_private_keys
|
||||
user != 'miner', # blank (no keys or seed)
|
||||
'', # passphrase (empty string for non-encrypted)
|
||||
False, # avoid_reuse (track address reuse)
|
||||
False, # descriptors (native descriptor wallet)
|
||||
False # load_on_startup
|
||||
)
|
||||
|
||||
async def setup(self):
|
||||
|
||||
try: os.makedirs(self.d.datadir)
|
||||
|
|
@ -101,6 +115,7 @@ class MMGenRegtest(MMGenObject):
|
|||
|
||||
gmsg('Creating miner wallet')
|
||||
self.start_daemon('miner')
|
||||
await self.create_tracking_wallet('miner')
|
||||
|
||||
await self.generate(432,silent=True)
|
||||
await self.rpc_call('stop')
|
||||
|
|
@ -109,6 +124,7 @@ class MMGenRegtest(MMGenObject):
|
|||
for user in ('alice','bob'):
|
||||
gmsg("Creating {}'s tracking wallet".format(user.capitalize()))
|
||||
self.start_daemon(user)
|
||||
await self.create_tracking_wallet(user)
|
||||
if user == 'bob' and opt.setup_no_stop_daemon:
|
||||
msg('Leaving daemon running with Bob as current user')
|
||||
else:
|
||||
|
|
|
|||
23
mmgen/rpc.py
23
mmgen/rpc.py
|
|
@ -386,6 +386,29 @@ class BitcoinRPCClient(RPCClient,metaclass=aInitMeta):
|
|||
if len((await self.call('help',func)).split('\n')) > 3:
|
||||
self.caps += (cap,)
|
||||
|
||||
if caller != 'regtest':
|
||||
try:
|
||||
await self.call('getbalance')
|
||||
except:
|
||||
await self.create_tracking_wallet()
|
||||
|
||||
async def create_tracking_wallet(self):
|
||||
"""
|
||||
Quirk: when --datadir is specified (even if standard), wallet is created directly in
|
||||
datadir, otherwise in datadir/wallets
|
||||
"""
|
||||
wname = self.daemon.tracking_wallet_name
|
||||
await self.call('createwallet',
|
||||
wname, # wallet_name
|
||||
True, # disable_private_keys
|
||||
True, # blank (no keys or seed)
|
||||
'', # passphrase (empty string for non-encrypted)
|
||||
False, # avoid_reuse (track address reuse)
|
||||
False, # descriptors (native descriptor wallet)
|
||||
True # load_on_startup
|
||||
)
|
||||
ymsg(f'Created {self.daemon.coind_name} wallet {wname!r}')
|
||||
|
||||
def get_daemon_cfg_fn(self):
|
||||
# Use dirname() to remove 'bob' or 'alice' component
|
||||
return os.path.join(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue