Browse Source

wallet.num_accounts and account_id method

283
ThomasV 12 years ago
parent
commit
70445da940
  1. 1
      gui/plugins.py
  2. 4
      lib/bitcoin.py
  3. 20
      lib/wallet.py

1
gui/plugins.py

@ -4,6 +4,7 @@ class BasePlugin:
def __init__(self, gui, name): def __init__(self, gui, name):
self.gui = gui self.gui = gui
self.wallet = self.gui.wallet
self.name = name self.name = name
self.config = gui.config self.config = gui.config

4
lib/bitcoin.py

@ -614,7 +614,7 @@ class Transaction:
signatures = txin.get("signatures",[]) signatures = txin.get("signatures",[])
# continue if this txin is complete # continue if this txin is complete
if len(signatures == num): if len(signatures) == num:
continue continue
# build list of public/private keys # build list of public/private keys
@ -643,7 +643,7 @@ class Transaction:
# for p2sh, pubkeysig is a tuple (may be incomplete) # for p2sh, pubkeysig is a tuple (may be incomplete)
txin["signatures"] = signatures txin["signatures"] = signatures
print_error("signatures", signatures) print_error("signatures", signatures)
is_complete = is_complete and len(signatures == num) is_complete = is_complete and len(signatures) == num
else: else:

20
lib/wallet.py

@ -207,24 +207,30 @@ class Wallet:
self.create_account('Main account') self.create_account('Main account')
def account_id(self, account_type, i):
def create_account(self, name, account_type = None):
if account_type is None: if account_type is None:
derivation = lambda i: "m/0'/%d'"%i return "m/0'/%d'"%i
elif account_type == '2of2': elif account_type == '2of2':
derivation = lambda i: "m/1'/%d & m/2'/%d"%(i,i) return "m/1'/%d & m/2'/%d"%(i,i)
elif account_type == '2of3': elif account_type == '2of3':
derivation = lambda i: "m/3'/%d & m/4'/%d & m/5'/%d"%(i,i,i) return "m/3'/%d & m/4'/%d & m/5'/%d"%(i,i,i)
else: else:
raise BaseException('unknown account type') raise BaseException('unknown account type')
def num_accounts(self, account_type):
keys = self.accounts.keys() keys = self.accounts.keys()
i = 0 i = 0
while True: while True:
account_id = derivation(i) account_id = self.account_id(account_type, i)
if account_id not in keys: break if account_id not in keys: break
i += 1 i += 1
return i
def create_account(self, name, account_type = None):
i = self.num_accounts(account_type)
acount_id = self.account_id(account_type,i)
if account_type is None: if account_type is None:
master_c0, master_K0, _ = self.master_public_keys["m/0'/"] master_c0, master_K0, _ = self.master_public_keys["m/0'/"]

Loading…
Cancel
Save