electrum

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

commit 646881f437ee651e464a4e391b186e3be30394f4
parent a071aafcc7b5be45f801fa03776e9ba63c3b1ce8
Author: Janus <ysangkok@gmail.com>
Date:   Mon,  1 Oct 2018 18:06:47 +0200

lnworker.pay(): lightning-integration support

Diffstat:
Melectrum/commands.py | 2+-
Melectrum/gui/qt/main_window.py | 2+-
Melectrum/lnbase.py | 4++++
Melectrum/lnworker.py | 2+-
4 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/electrum/commands.py b/electrum/commands.py @@ -775,7 +775,7 @@ class Commands: @command('wn') def lnpay(self, invoice): - f = self.wallet.lnworker.pay(invoice) + addr, peer, f = self.wallet.lnworker.pay(invoice) return f.result() @command('wn') diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py @@ -1683,7 +1683,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): failure_list = [] for i in range(LN_NUM_PAYMENT_ATTEMPTS): try: - future = self.wallet.lnworker.pay(invoice, amount_sat=amount) + addr, peer, future = self.wallet.lnworker.pay(invoice, amount_sat=amount) future.result() break except PaymentFailure as e: diff --git a/electrum/lnbase.py b/electrum/lnbase.py @@ -289,6 +289,7 @@ class Peer(PrintError): self.commitment_signed = defaultdict(asyncio.Queue) self.announcement_signatures = defaultdict(asyncio.Queue) self.closing_signed = defaultdict(asyncio.Queue) + self.payment_preimages = defaultdict(asyncio.Queue) self.localfeatures = (0x08 if request_initial_sync else 0) self.invoices = lnworker.invoices self.attempted_route = {} @@ -959,6 +960,9 @@ class Peer(PrintError): await self.receive_revoke(chan) self.lnworker.save_channel(chan) + # used in lightning-integration + self.payment_preimages[sha256(preimage)].put_nowait(preimage) + def on_update_fail_malformed_htlc(self, payload): self.on_error(payload) diff --git a/electrum/lnworker.py b/electrum/lnworker.py @@ -227,7 +227,7 @@ class LNWorker(PrintError): else: raise Exception("ChannelDB returned path with short_channel_id {} that is not in channel list".format(bh2u(short_channel_id))) coro = peer.pay(path, chan, amount_msat, payment_hash, invoice_pubkey, addr.min_final_cltv_expiry) - return asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop) + return addr, peer, asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop) def add_invoice(self, amount_sat, message): payment_preimage = os.urandom(32)