electrum

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

commit 02c39a950f5f547ed9b294f81e3f064d4cd7f319
parent 095de2dd2260aa4e7edbf38ca138b0d5513f1917
Author: ThomasV <thomasv@electrum.org>
Date:   Thu, 18 Oct 2018 13:17:29 +0200

encapsulate get_invoice in lnworker

Diffstat:
Melectrum/lnbase.py | 13+++----------
Melectrum/lnworker.py | 8++++++++
2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/electrum/lnbase.py b/electrum/lnbase.py @@ -214,7 +214,6 @@ class Peer(PrintError): if request_initial_sync: self.localfeatures |= LnLocalFeatures.INITIAL_ROUTING_SYNC self.localfeatures |= LnLocalFeatures.OPTION_DATA_LOSS_PROTECT_OPT - self.invoices = lnworker.invoices self.attempted_route = {} def send_message(self, message_name, **kwargs): @@ -996,16 +995,11 @@ class Peer(PrintError): @log_exceptions async def on_update_add_htlc(self, payload): # no onion routing for the moment: we assume we are the end node - self.print_error('on_update_add_htlc', payload) + self.print_error('on_update_add_htlc') # check if this in our list of requests payment_hash = payload["payment_hash"] - for k in self.invoices.keys(): - preimage = bfh(k) - if sha256(preimage) == payment_hash: - break - else: - raise Exception('unknown payment hash') - request = lndecode(self.invoices[k], expected_hrp=constants.net.SEGWIT_HRP) + preimage, invoice = self.lnworker.get_invoice(payment_hash) + expected_received_msat = int(invoice.amount * bitcoin.COIN * 1000) channel_id = payload['channel_id'] htlc_id = int.from_bytes(payload["id"], 'big') cltv_expiry = int.from_bytes(payload["cltv_expiry"], 'big') @@ -1014,7 +1008,6 @@ class Peer(PrintError): assert htlc_id == chan.config[REMOTE].next_htlc_id, (htlc_id, chan.config[REMOTE].next_htlc_id) assert chan.get_state() == "OPEN" # TODO verify sanity of their cltv expiry - expected_received_msat = int(request.amount * bitcoin.COIN * 1000) assert amount_msat == expected_received_msat htlc = {'amount_msat': amount_msat, 'payment_hash':payment_hash, 'cltv_expiry':cltv_expiry} chan.receive_htlc(htlc) diff --git a/electrum/lnworker.py b/electrum/lnworker.py @@ -325,6 +325,14 @@ class LNWorker(PrintError): self.wallet.storage.write() return pay_req + def get_invoice(self, payment_hash): + for k in self.invoices.keys(): + preimage = bfh(k) + if sha256(preimage) == payment_hash: + return preimage, lndecode(self.invoices[k], expected_hrp=constants.net.SEGWIT_HRP) + else: + raise Exception('unknown payment hash') + def _calc_routing_hints_for_invoice(self, amount_sat): """calculate routing hints (BOLT-11 'r' field)""" routing_hints = []