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:
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 = {