electrum

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

commit 1e518e7b640adaa0d504f1c8f52c1ace93ff91ce
parent d12661a385defc50b6c8f8a870d6366b302fe3dc
Author: ThomasV <thomasv@electrum.org>
Date:   Mon, 10 Oct 2016 19:13:34 +0200

add number of confirmations in payment request status. fixes #1757

Diffstat:
Mlib/wallet.py | 31++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)

diff --git a/lib/wallet.py b/lib/wallet.py @@ -1071,6 +1071,27 @@ class Abstract_Wallet(PrintError): if addrs: return addrs[0] + def get_payment_status(self, address, amount): + local_height = self.get_local_height() + received, sent = self.get_addr_io(address) + l = [] + for txo, x in received.items(): + h, v, is_cb = x + txid, n = txo.split(':') + info = self.verified_tx.get(txid) + if info: + tx_height, timestamp, pos = info + conf = local_height - tx_height + else: + conf = 0 + l.append((conf, v)) + vsum = 0 + for conf, v in reversed(sorted(l)): + vsum += v + if vsum >= amount: + return True, conf + return False, None + def get_payment_request(self, addr, config): import util r = self.receive_requests.get(addr) @@ -1078,7 +1099,10 @@ class Abstract_Wallet(PrintError): return out = copy.copy(r) out['URI'] = 'bitcoin:' + addr + '?amount=' + util.format_satoshis(out.get('amount')) - out['status'] = self.get_request_status(addr) + status, conf = self.get_request_status(addr) + out['status'] = status + if conf is not None: + out['confirmations'] = conf # check if bip70 file exists rdir = config.get('requests_dir') if rdir: @@ -1117,9 +1141,10 @@ class Abstract_Wallet(PrintError): expiration = r.get('exp') if expiration and type(expiration) != int: expiration = 0 + conf = None if amount: if self.up_to_date: - paid = amount <= self.get_addr_received(address) + paid, conf = self.get_payment_status(address, amount) status = PR_PAID if paid else PR_UNPAID if status == PR_UNPAID and expiration is not None and time.time() > timestamp + expiration: status = PR_EXPIRED @@ -1127,7 +1152,7 @@ class Abstract_Wallet(PrintError): status = PR_UNKNOWN else: status = PR_UNKNOWN - return status + return status, conf def make_payment_request(self, addr, amount, message, expiration): timestamp = int(time.time())