Testnet-specific addrlists

This commit is contained in:
The MMGen Project 2018-05-30 14:45:10 +00:00
commit 1a21ce2bce
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
4 changed files with 21 additions and 8 deletions

View file

@ -462,15 +462,17 @@ Removed {{}} duplicate WIF key{{}} from keylist (also in {pnm} key-address file
def scramble_seed(self,seed):
is_btcfork = g.proto.base_coin == 'BTC'
if is_btcfork and self.al_id.mmtype == 'L':
if is_btcfork and self.al_id.mmtype == 'L' and not g.proto.is_testnet():
dmsg_sc('str','(none)')
return seed
if g.proto.base_coin == 'ETH':
scramble_key = g.coin.lower()
else:
scramble_key = (g.coin.lower()+':','')[is_btcfork] + self.al_id.mmtype.name
dmsg_sc('str',scramble_key)
from mmgen.crypto import scramble_seed
if g.proto.is_testnet():
scramble_key += ':testnet'
dmsg_sc('str',scramble_key)
return scramble_seed(seed,scramble_key,self.scramble_hash_rounds)
def encrypt(self,desc='new key list'):
@ -479,7 +481,8 @@ Removed {{}} duplicate WIF key{{}} from keylist (also in {pnm} key-address file
self.ext += '.'+g.mmenc_ext
def write_to_file(self,ask_tty=True,ask_write_default_yes=False,binary=False,desc=None):
fn = u'{}{x}.{}'.format(self.id_str,self.ext,x=u'' if g.debug_utf8 else '')
tn = ('','.testnet')[g.proto.is_testnet()]
fn = u'{}{x}{}.{}'.format(self.id_str,tn,self.ext,x=u'' if g.debug_utf8 else '')
ask_tty = self.has_keys and not opt.quiet
write_data_to_file(fn,self.fmt_data,desc or self.file_desc,ask_tty=ask_tty,binary=binary)
@ -570,7 +573,8 @@ Removed {{}} duplicate WIF key{{}} from keylist (also in {pnm} key-address file
bc,mt = g.proto.base_coin,self.al_id.mmtype
l_coin = [] if bc == 'BTC' else [g.coin] if bc == 'ETH' else [bc]
l_type = [] if mt in ('L','E') else [mt.name.upper()]
lbl_p2 = ':'.join(l_coin+l_type)
l_tn = [] if not g.proto.is_testnet() else ['TESTNET']
lbl_p2 = ':'.join(l_coin+l_type+l_tn)
lbl = self.al_id.sid + ('',' ')[bool(lbl_p2)] + lbl_p2
dmsg_sc('lbl',lbl[9:])
@ -643,6 +647,12 @@ Removed {{}} duplicate WIF key{{}} from keylist (also in {pnm} key-address file
def parse_addrfile_label(lbl): # we must maintain backwards compat, so parse is tricky
al_coin,al_mmtype = None,None
tn = lbl[-8:] == ':TESTNET'
if tn:
assert g.proto.is_testnet(),'{} file is testnet but protocol is mainnet!'.format(self.data_desc)
lbl = lbl[:-8]
else:
assert not g.proto.is_testnet(),'{} file is mainnet but protocol is testnet!'.format(self.data_desc)
lbl = lbl.split(':',1)
if len(lbl) == 2:
al_coin,al_mmtype = lbl[0],lbl[1].lower()

View file

@ -91,6 +91,10 @@ class BitcoinProtocol(MMGenObject):
witness_vernum = int(witness_vernum_hex,16)
bech32_hrp = 'bc'
@classmethod
def is_testnet(cls):
return cls.__name__[-15:] == 'TestnetProtocol'
@staticmethod
def get_protocol_by_chain(chain):
return CoinProtocol(g.coin,{'mainnet':False,'testnet':True,'regtest':True}[chain])

View file

@ -177,8 +177,7 @@ watch-only wallet using '{}-addrimport' and then re-run this program.
b.skip = (k,'addr')[k=='twmmid']
out = [self.hdr_fmt.format(' '.join(self.sort_info()),g.coin,self.total.hl())]
if g.chain in ('testnet','regtest'):
out += [green('Chain: {}'.format(g.chain.upper()))]
if g.chain != 'mainnet': out += ['Chain: '+green(g.chain.upper())]
if self.show_txid:
fs = u' {n:%s} {t:%s} {v:2} {a} {A} {c:<}' % (col1_w,tx_w)
else:
@ -417,7 +416,7 @@ class TwAddrList(MMGenDict):
self[label.mmid]['addr'] = CoinAddr(addr_arr[0])
def format(self,showbtcaddrs,sort,show_age,show_days):
out = ([],[green('Chain: {}'.format(g.chain.upper()))])[g.chain in ('testnet','regtest')]
out = ['Chain: '+green(g.chain.upper())] if g.chain != 'mainnet' else []
fs = u'{{mid}}{} {{cmt}} {{amt}}{}'.format(('',' {addr}')[showbtcaddrs],('',' {age}')[show_age])
mmaddrs = [k for k in self.keys() if k.type == 'mmgen']
max_mmid_len = max(len(k) for k in mmaddrs) + 2 if mmaddrs else 10

View file

@ -1050,7 +1050,7 @@ class MMGenTX(MMGenObject):
s=self.marked_signed(color=True),
l=(green('None'),orange(strfmt_locktime(self.locktime,terse=True)))[bool(self.locktime)])
if self.chain in ('testnet','regtest'):
if self.chain != 'mainnet':
out += green('Chain: {}\n'.format(self.chain.upper()))
if self.coin_txid:
out += '{} TxID: {}\n'.format(g.coin,self.coin_txid.hl())