electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit bd6bfcea0e020442e6809d145c6dae55a8f65f9c
parent 00ded10810be0e2c9119e3b54596f5d64d6e082c
Author: ThomasV <electrumdev@gmail.com>
Date:   Sun, 31 May 2015 07:53:43 +0200

Merge pull request #1267 from kyuupichan/spendable_coins

get_spendable_coins and frozen addrs
Diffstat:
Mgui/qt/main_window.py | 12+++++-------
Mlib/commands.py | 4++--
Mlib/wallet.py | 9+++------
3 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py @@ -1410,13 +1410,13 @@ class ElectrumWindow(QMainWindow): if addr_URL: menu.addAction(_("View on block explorer"), lambda: webbrowser.open(addr_URL)) - if any(addr not in self.wallet.frozen_addresses for addr in addrs): + if any(not self.wallet.is_frozen(addr) for addr in addrs): menu.addAction(_("Freeze"), lambda: self.set_frozen_state(addrs, True)) - if any(addr in self.wallet.frozen_addresses for addr in addrs): + if any(self.wallet.is_frozen(addr) for addr in addrs): menu.addAction(_("Unfreeze"), lambda: self.set_frozen_state(addrs, False)) def can_send(addr): - return addr not in self.wallet.frozen_addresses and self.wallet.get_addr_balance(addr) != (0, 0) + return not self.wallet.is_frozen(addr) and sum(self.wallet.get_addr_balance(addr)[:2]) if any(can_send(addr) for addr in addrs): menu.addAction(_("Send From"), lambda: self.send_from_addresses(addrs)) @@ -1433,13 +1433,11 @@ class ElectrumWindow(QMainWindow): return self.pay_from else: domain = self.wallet.get_account_addresses(self.current_account) - for i in self.wallet.frozen_addresses: - if i in domain: domain.remove(i) return self.wallet.get_spendable_coins(domain) def send_from_addresses(self, addrs): - self.set_pay_from( addrs ) + self.set_pay_from(addrs) self.tabs.setCurrentIndex(1) self.update_fee(False) @@ -1581,7 +1579,7 @@ class ElectrumWindow(QMainWindow): item.setFont(0, QFont(MONOSPACE_FONT)) item.setData(0, Qt.UserRole, address) item.setData(0, Qt.UserRole+1, True) # label can be edited - if address in self.wallet.frozen_addresses: + if self.wallet.is_frozen(address): item.setBackgroundColor(0, QColor('lightblue')) if self.wallet.is_beyond_limit(address, account, is_change): item.setBackgroundColor(0, QColor('red')) diff --git a/lib/commands.py b/lib/commands.py @@ -265,7 +265,7 @@ class Commands: return self.network.synchronous_get([ ('blockchain.address.get_history',[addr]) ])[0] def listunspent(self): - l = copy.deepcopy(self.wallet.get_spendable_coins()) + l = copy.deepcopy(self.wallet.get_spendable_coins(exclude_frozen = False)) for i in l: i["value"] = str(Decimal(i["value"])/100000000) return l @@ -278,7 +278,7 @@ class Commands: return {'address':r[0] } def createrawtransaction(self, inputs, outputs): - coins = self.wallet.get_spendable_coins(None) + coins = self.wallet.get_spendable_coins(exclude_frozen = False) tx_inputs = [] for i in inputs: prevout_hash = i['txid'] diff --git a/lib/wallet.py b/lib/wallet.py @@ -562,10 +562,12 @@ class Abstract_Wallet(object): return c, u, x - def get_spendable_coins(self, domain=None): + def get_spendable_coins(self, domain = None, exclude_frozen = True): coins = [] if domain is None: domain = self.addresses(True) + if exclude_frozen: + domain = set(domain) - self.frozen_addresses for addr in domain: c = self.get_addr_utxo(addr) for txo, v in c.items(): @@ -846,11 +848,6 @@ class Abstract_Wallet(object): # get coins if not coins: - if domain is None: - domain = self.addresses(True) - for i in self.frozen_addresses: - if i in domain: - domain.remove(i) coins = self.get_spendable_coins(domain) amount = sum(map(lambda x:x[2], outputs))