electrum

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

commit 4344ca47b3af998fa1e260f66711b8eda62bab67
parent 3665f5d3fdaed760134de0032969cbd0ec2607d7
Author: ThomasV <thomasv@electrum.org>
Date:   Fri, 19 Jun 2020 10:23:07 +0200

swaps: create invoice without saving the request

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

diff --git a/electrum/lnworker.py b/electrum/lnworker.py @@ -1090,7 +1090,7 @@ class LNWallet(LNWorker): raise Exception(_("add invoice timed out")) @log_exceptions - async def _add_request_coro(self, amount_sat: Optional[int], message, expiry: int): + async def create_invoice(self, amount_sat: Optional[int], message, expiry: int): timestamp = int(time.time()) routing_hints = await self._calc_routing_hints_for_invoice(amount_sat) if not routing_hints: @@ -1098,7 +1098,6 @@ class LNWallet(LNWorker): "Other clients will likely not be able to send to us.") payment_preimage = os.urandom(32) payment_hash = sha256(payment_preimage) - info = PaymentInfo(payment_hash, amount_sat, RECEIVED, PR_UNPAID) amount_btc = amount_sat/Decimal(COIN) if amount_sat else None if expiry == 0: @@ -1113,10 +1112,14 @@ class LNWallet(LNWorker): date=timestamp, payment_secret=derive_payment_secret_from_payment_preimage(payment_preimage)) invoice = lnencode(lnaddr, self.node_keypair.privkey) - key = bh2u(lnaddr.paymenthash) - req = LNInvoice.from_bech32(invoice) self.save_preimage(payment_hash, payment_preimage) self.save_payment_info(info) + return lnaddr, invoice + + async def _add_request_coro(self, amount_sat: Optional[int], message, expiry: int): + lnaddr, invoice = await self.create_invoice(amount_sat, message, expiry) + key = bh2u(lnaddr.paymenthash) + req = LNInvoice.from_bech32(invoice) self.wallet.add_payment_request(req) self.wallet.set_label(key, message) return key diff --git a/electrum/submarine_swaps.py b/electrum/submarine_swaps.py @@ -188,10 +188,7 @@ class SwapManager(Logger): """send on-chain BTC, receive on Lightning""" privkey = os.urandom(32) pubkey = ECPrivkey(privkey).get_public_key_bytes(compressed=True) - key = await self.lnworker._add_request_coro(lightning_amount, 'swap', expiry=3600*24) - request = self.wallet.get_request(key) - invoice = request.invoice - lnaddr = self.lnworker._check_invoice(invoice, lightning_amount) + lnaddr, invoice = await self.lnworker.create_invoice(lightning_amount, 'swap', expiry=3600*24) payment_hash = lnaddr.paymenthash preimage = self.lnworker.get_preimage(payment_hash) request_data = {