detect txintype in keystore. fix #2912
This commit is contained in:
parent
1bd60d4c3a
commit
9bdac1aae0
|
@ -180,6 +180,9 @@ class Imported_KeyStore(Software_KeyStore):
|
|||
c = pw_encode(b, new_password)
|
||||
self.keypairs[k] = c
|
||||
|
||||
def txin_type(self):
|
||||
return 'standard'
|
||||
|
||||
|
||||
class Deterministic_KeyStore(Software_KeyStore):
|
||||
|
||||
|
@ -274,6 +277,17 @@ class Xpub:
|
|||
return
|
||||
return derivation
|
||||
|
||||
def txin_type(self):
|
||||
xtype = deserialize_xpub(self.xpub)[0]
|
||||
if xtype == 'standard':
|
||||
return 'p2pkh'
|
||||
elif xtype == 'segwit':
|
||||
return 'p2wpkh'
|
||||
elif xtype == 'segwit_p2sh':
|
||||
return 'p2wpkh-p2sh'
|
||||
else:
|
||||
raise BaseException('unknown txin_type', xtype)
|
||||
|
||||
|
||||
class BIP32_KeyStore(Deterministic_KeyStore, Xpub):
|
||||
|
||||
|
@ -477,6 +491,9 @@ class Old_KeyStore(Deterministic_KeyStore):
|
|||
decoded = pw_decode(self.seed, old_password)
|
||||
self.seed = pw_encode(decoded, new_password)
|
||||
|
||||
def txin_type(self):
|
||||
return 'standard'
|
||||
|
||||
|
||||
class Hardware_KeyStore(KeyStore, Xpub):
|
||||
# Derived classes must set:
|
||||
|
|
|
@ -1544,15 +1544,7 @@ class Simple_Wallet(Abstract_Wallet):
|
|||
|
||||
def load_keystore(self):
|
||||
self.keystore = load_keystore(self.storage, 'keystore')
|
||||
xtype = deserialize_xpub(self.keystore.xpub)[0]
|
||||
if xtype == 'standard':
|
||||
self.txin_type = 'p2pkh'
|
||||
elif xtype == 'segwit':
|
||||
self.txin_type = 'p2wpkh'
|
||||
elif xtype == 'segwit_p2sh':
|
||||
self.txin_type = 'p2wpkh-p2sh'
|
||||
else:
|
||||
raise BaseException('unknown txin_type', xtype)
|
||||
self.txin_type = self.keystore.txin_type()
|
||||
|
||||
def get_pubkey(self, c, i):
|
||||
return self.derive_pubkeys(c, i)
|
||||
|
@ -1696,13 +1688,7 @@ class Multisig_Wallet(Deterministic_Wallet):
|
|||
name = 'x%d/'%(i+1)
|
||||
self.keystores[name] = load_keystore(self.storage, name)
|
||||
self.keystore = self.keystores['x1/']
|
||||
xtype = deserialize_xpub(self.keystore.xpub)[0]
|
||||
if xtype == 'standard':
|
||||
self.txin_type = 'p2sh'
|
||||
elif xtype == 'segwit':
|
||||
self.txin_type = 'p2wsh'
|
||||
elif xtype == 'segwit_p2sh':
|
||||
self.txin_type = 'p2wsh-p2sh'
|
||||
self.txin_type = self.keystore.txin_type()
|
||||
|
||||
def save_keystore(self):
|
||||
for name, k in self.keystores.items():
|
||||
|
|
Loading…
Reference in New Issue