generic multisig wallet constructor. fixes #1129
This commit is contained in:
@@ -1798,12 +1798,15 @@ class Wallet(object):
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
def from_seed(self, seed, storage):
|
||||
def from_seed(self, seed, password, storage):
|
||||
if is_old_seed(seed):
|
||||
klass = OldWallet
|
||||
elif is_new_seed(seed):
|
||||
klass = NewWallet
|
||||
w = klass(storage)
|
||||
w.add_seed(text, password)
|
||||
w.create_master_keys(password)
|
||||
w.create_main_account(password)
|
||||
return w
|
||||
|
||||
@classmethod
|
||||
@@ -1840,3 +1843,30 @@ class Wallet(object):
|
||||
w = BIP32_Simple_Wallet(storage)
|
||||
w.create_xprv_wallet(xprv, password)
|
||||
return w
|
||||
|
||||
@classmethod
|
||||
def from_multisig(klass, key_list, password, storage):
|
||||
if len(key_list) == 2:
|
||||
self = Wallet_2of2(storage)
|
||||
elif len(key_list) == 3:
|
||||
self = Wallet_2of3(storage)
|
||||
key_list = sorted(key_list, key = lambda x: klass.is_xpub(x))
|
||||
for i, text in enumerate(key_list):
|
||||
assert klass.is_seed(text) or klass.is_xprv(text) or klass.is_xpub(text)
|
||||
name = "x%d/"%(i+1)
|
||||
if klass.is_seed(text):
|
||||
if name == 'x1/':
|
||||
self.add_seed(text1, password)
|
||||
self.create_master_keys(password)
|
||||
else:
|
||||
self.add_cosigner_seed(text, name, password)
|
||||
elif klass.is_xprv(text):
|
||||
xpub = bitcoin.xpub_from_xprv(text)
|
||||
self.add_master_public_key(name, xpub)
|
||||
self.add_master_private_key(name, text, password)
|
||||
elif klass.is_xpub(text):
|
||||
self.add_master_public_key(name, text)
|
||||
self.use_encryption = (password != None)
|
||||
self.storage.put('use_encryption', self.use_encryption, True)
|
||||
self.create_main_account(password)
|
||||
return self
|
||||
|
||||
Reference in New Issue
Block a user