serialize txin-type in xpub/xprv
This commit is contained in:
parent
62fe3a411b
commit
a220932711
|
@ -299,7 +299,7 @@ class BaseWizard(object):
|
||||||
self.derivation_dialog(f)
|
self.derivation_dialog(f)
|
||||||
|
|
||||||
def create_keystore(self, seed, passphrase):
|
def create_keystore(self, seed, passphrase):
|
||||||
k = keystore.from_seed(seed, passphrase)
|
k = keystore.from_seed(seed, passphrase, self.wallet_type == 'multisig')
|
||||||
self.on_keystore(k)
|
self.on_keystore(k)
|
||||||
|
|
||||||
def on_bip43(self, seed, passphrase, derivation):
|
def on_bip43(self, seed, passphrase, derivation):
|
||||||
|
|
|
@ -47,19 +47,25 @@ def read_json_dict(filename):
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Version numbers for BIP32 extended keys
|
# Version numbers for BIP32 extended keys
|
||||||
# standard: xprv, xpub
|
# standard: xprv, xpub
|
||||||
# segwit in p2sh: yprv, ypub
|
# segwit in p2sh: yprv, ypub
|
||||||
# native segwit: zprv, zpub
|
# native segwit: zprv, zpub
|
||||||
XPRV_HEADERS = {
|
XPRV_HEADERS = {
|
||||||
'standard': 0x0488ade4,
|
'standard': 0x0488ade4,
|
||||||
'segwit_p2sh': 0x049d7878,
|
'p2wpkh-p2sh': 0x049d7878,
|
||||||
'segwit': 0x4b2430c
|
'p2wsh-p2sh': 0x295b004,
|
||||||
|
'p2wpkh': 0x4b2430c,
|
||||||
|
'p2wsh': 0x2aa7a99
|
||||||
}
|
}
|
||||||
XPUB_HEADERS = {
|
XPUB_HEADERS = {
|
||||||
'standard': 0x0488b21e,
|
'standard': 0x0488b21e,
|
||||||
'segwit_p2sh': 0x049d7cb2,
|
'p2wpkh-p2sh': 0x049d7cb2,
|
||||||
'segwit': 0x4b24746
|
'p2wsh-p2sh': 0x295b43e,
|
||||||
|
'p2wpkh': 0x4b24746,
|
||||||
|
'p2wsh': 0x2aa7ed3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -681,7 +681,7 @@ def bip44_derivation(account_id, segwit=False):
|
||||||
coin = 1 if bitcoin.TESTNET else 0
|
coin = 1 if bitcoin.TESTNET else 0
|
||||||
return "m/%d'/%d'/%d'" % (bip, coin, int(account_id))
|
return "m/%d'/%d'/%d'" % (bip, coin, int(account_id))
|
||||||
|
|
||||||
def from_seed(seed, passphrase):
|
def from_seed(seed, passphrase, is_p2sh):
|
||||||
t = seed_type(seed)
|
t = seed_type(seed)
|
||||||
if t == 'old':
|
if t == 'old':
|
||||||
keystore = Old_KeyStore({})
|
keystore = Old_KeyStore({})
|
||||||
|
@ -691,7 +691,13 @@ def from_seed(seed, passphrase):
|
||||||
keystore.add_seed(seed)
|
keystore.add_seed(seed)
|
||||||
keystore.passphrase = passphrase
|
keystore.passphrase = passphrase
|
||||||
bip32_seed = Mnemonic.mnemonic_to_seed(seed, passphrase)
|
bip32_seed = Mnemonic.mnemonic_to_seed(seed, passphrase)
|
||||||
keystore.add_xprv_from_seed(bip32_seed, t, "m/")
|
if t == 'standard':
|
||||||
|
der = "m/"
|
||||||
|
xtype = 'standard'
|
||||||
|
else:
|
||||||
|
der = "m/1'/" if is_p2sh else "m/0'/"
|
||||||
|
xtype = 'p2wsh' if is_p2sh else 'p2wpkh'
|
||||||
|
keystore.add_xprv_from_seed(bip32_seed, xtype, der)
|
||||||
else:
|
else:
|
||||||
raise BaseException(t)
|
raise BaseException(t)
|
||||||
return keystore
|
return keystore
|
||||||
|
|
|
@ -1662,14 +1662,7 @@ class Simple_Deterministic_Wallet(Simple_Wallet, Deterministic_Wallet):
|
||||||
xtype = deserialize_xpub(self.keystore.xpub)[0]
|
xtype = deserialize_xpub(self.keystore.xpub)[0]
|
||||||
except:
|
except:
|
||||||
xtype = 'standard'
|
xtype = 'standard'
|
||||||
if xtype == 'standard':
|
self.txin_type = 'p2pkh' if xtype == 'standard' else xtype
|
||||||
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)
|
|
||||||
|
|
||||||
def get_pubkey(self, c, i):
|
def get_pubkey(self, c, i):
|
||||||
return self.derive_pubkeys(c, i)
|
return self.derive_pubkeys(c, i)
|
||||||
|
@ -1731,14 +1724,7 @@ class Multisig_Wallet(Deterministic_Wallet):
|
||||||
self.keystores[name] = load_keystore(self.storage, name)
|
self.keystores[name] = load_keystore(self.storage, name)
|
||||||
self.keystore = self.keystores['x1/']
|
self.keystore = self.keystores['x1/']
|
||||||
xtype = deserialize_xpub(self.keystore.xpub)[0]
|
xtype = deserialize_xpub(self.keystore.xpub)[0]
|
||||||
if xtype == 'standard':
|
self.txin_type = 'p2sh' if xtype == 'standard' else 'xtype'
|
||||||
self.txin_type = 'p2sh'
|
|
||||||
elif xtype == 'segwit':
|
|
||||||
self.txin_type = 'p2wsh'
|
|
||||||
elif xtype == 'segwit_p2sh':
|
|
||||||
self.txin_type = 'p2wsh-p2sh'
|
|
||||||
else:
|
|
||||||
raise BaseException('unknown txin_type', xtype)
|
|
||||||
|
|
||||||
def save_keystore(self):
|
def save_keystore(self):
|
||||||
for name, k in self.keystores.items():
|
for name, k in self.keystores.items():
|
||||||
|
|
Loading…
Reference in New Issue