electrum

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

commit c95c80163da9dfa8d6f2dae86e973d87a689e47f
parent 827e29c1dce4574770e9e3ccd9707c7ab393eb5d
Author: ecdsa <ecdsa@github>
Date:   Sat, 27 Apr 2013 17:48:27 +0200

distinction between unconfirmed and unverified transactions

Diffstat:
Mgui/gui_classic.py | 20++++++++++----------
Mgui/gui_gtk.py | 5++++-
Mlib/verifier.py | 22++++++++++++++++++++--
Mlib/wallet.py | 2+-
4 files changed, 35 insertions(+), 14 deletions(-)

diff --git a/gui/gui_classic.py b/gui/gui_classic.py @@ -606,22 +606,22 @@ class ElectrumWindow(QMainWindow): self.history_list.clear() for item in self.wallet.get_tx_history(self.current_account): tx_hash, conf, is_mine, value, fee, balance, timestamp = item - if conf: + if conf > 0: try: time_str = datetime.datetime.fromtimestamp( timestamp).isoformat(' ')[:-3] except: time_str = "unknown" - if conf == -1: - icon = None - if conf == 0: - icon = QIcon(":icons/unconfirmed.png") - elif conf < 6: - icon = QIcon(":icons/clock%d.png"%conf) - else: - icon = QIcon(":icons/confirmed.png") - else: + + if conf == -1: + time_str = 'unverified' + icon = None + elif conf == 0: time_str = 'pending' icon = QIcon(":icons/unconfirmed.png") + elif conf < 6: + icon = QIcon(":icons/clock%d.png"%conf) + else: + icon = QIcon(":icons/confirmed.png") if value is not None: v_str = self.format_amount(value, True) diff --git a/gui/gui_gtk.py b/gui/gui_gtk.py @@ -1167,12 +1167,15 @@ class ElectrumWindow: for item in self.wallet.get_tx_history(): tx_hash, conf, is_mine, value, fee, balance, timestamp = item - if conf: + if conf > 0: try: time_str = datetime.datetime.fromtimestamp( timestamp).isoformat(' ')[:-3] except: time_str = "------" conf_icon = gtk.STOCK_APPLY + elif conf == -1: + time_str = 'unverified' + conf_icon = None else: time_str = 'pending' conf_icon = gtk.STOCK_EXECUTE diff --git a/lib/verifier.py b/lib/verifier.py @@ -52,15 +52,33 @@ class WalletVerifier(threading.Thread): if tx in self.verified_tx: height, timestamp, pos = self.verified_tx[tx] conf = (self.local_height - height + 1) + if conf <= 0: timestamp = None + + elif tx in self.transactions: + conf = -1 + timestamp = None + else: conf = 0 - - if conf <= 0: timestamp = None return conf, timestamp + def get_txpos(self, tx_hash): + "return position, even if the tx is unverified" + with self.lock: + x = self.verified_tx.get(tx_hash) + y = self.transactions.get(tx_hash) + if x: + height, timestamp, pos = x + return height, pos + elif y: + return y, 0 + else: + return 1e12, 0 + + def get_height(self, tx_hash): with self.lock: v = self.verified_tx.get(tx_hash) diff --git a/lib/wallet.py b/lib/wallet.py @@ -670,7 +670,7 @@ class Wallet: def get_tx_history(self, account=None): with self.transaction_lock: history = self.transactions.items() - history.sort(key = lambda x: self.verifier.verified_tx.get(x[0]) if self.verifier.verified_tx.get(x[0]) else (1e12,0,0)) + history.sort(key = lambda x: self.verifier.get_txpos(x[0])) result = [] balance = 0