electrum

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

commit a1e8f9e2aa3d1a2bd1d17b91e5f445c86e6556f4
parent c8506eaa3944d0cdd9f5d6dfb1a33bc06aa44d75
Author: ThomasV <thomasv@electrum.org>
Date:   Mon, 15 Jun 2020 11:48:49 +0200

swaps: mapping of prepay_hash to payment_hash

Diffstat:
Melectrum/lnworker.py | 2--
Melectrum/submarine_swaps.py | 25+++++++++++++------------
Melectrum/wallet.py | 2++
3 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/electrum/lnworker.py b/electrum/lnworker.py @@ -632,8 +632,6 @@ class LNWallet(LNWorker): } # add txid to merge item with onchain item swap = self.swap_manager.get_swap(payment_hash) - if swap is None: - swap = self.swap_manager.get_swap_by_prepay(payment_hash) if swap: if swap.is_reverse: item['txid'] = swap.spending_txid diff --git a/electrum/submarine_swaps.py b/electrum/submarine_swaps.py @@ -68,7 +68,7 @@ class SwapData(StoredObject): lightning_amount = attr.ib(type=int) redeem_script = attr.ib(type=bytes, converter=hex_to_bytes) preimage = attr.ib(type=bytes, converter=hex_to_bytes) - fee_preimage = attr.ib(type=bytes, converter=hex_to_bytes) + prepay_hash = attr.ib(type=bytes, converter=hex_to_bytes) privkey = attr.ib(type=bytes, converter=hex_to_bytes) lockup_address = attr.ib(type=str) funding_txid = attr.ib(type=str) @@ -109,8 +109,10 @@ class SwapManager(Logger): self.lnworker = wallet.lnworker self.lnwatcher = self.wallet.lnworker.lnwatcher self.swaps = self.wallet.db.get_dict('submarine_swaps') - self.prepayments = {} - for swap in self.swaps.values(): + self.prepayments = {} # fee_preimage -> preimage + for k, swap in self.swaps.items(): + if swap.is_reverse and swap.prepay_hash is not None: + self.prepayments[swap.prepay_hash] = bytes.fromhex(k) if swap.is_redeemed: continue self.add_lnwatcher_callback(swap) @@ -154,12 +156,10 @@ class SwapManager(Logger): return self.lnwatcher.config.estimate_fee(136, allow_fallback_to_static_rates=True) def get_swap(self, payment_hash): - return self.swaps.get(payment_hash.hex()) - - def get_swap_by_prepay(self, prepay_payment_hash): - payment_hash = self.prepayments.get(prepay_payment_hash) - if payment_hash: - return self.swaps.get(payment_hash.hex()) + # for history + swap = self.swaps.get(payment_hash.hex()) + if swap: + return swap def add_lnwatcher_callback(self, swap): callback = lambda: self._claim_swap(swap) @@ -222,6 +222,7 @@ class SwapManager(Logger): locktime = locktime, privkey = privkey, preimage = preimage, + prepay_hash = None, lockup_address = lockup_address, onchain_amount = onchain_amount, lightning_amount = lightning_amount, @@ -282,9 +283,9 @@ class SwapManager(Logger): if fee_invoice: fee_lnaddr = self.lnworker._check_invoice(fee_invoice) invoice_amount += fee_lnaddr.get_amount_sat() - fee_preimage = fee_lnaddr.paymenthash + prepay_hash = fee_lnaddr.paymenthash else: - fee_preimage = None + prepay_hash = None assert int(invoice_amount) == amount_sat, (invoice_amount, amount_sat) # save swap data to wallet file swap = SwapData( @@ -292,7 +293,7 @@ class SwapManager(Logger): locktime = locktime, privkey = privkey, preimage = preimage, - fee_preimage = fee_preimage, + prepay_hash = prepay_hash, lockup_address = lockup_address, onchain_amount = onchain_amount, lightning_amount = amount_sat, diff --git a/electrum/wallet.py b/electrum/wallet.py @@ -841,6 +841,8 @@ class Abstract_Wallet(AddressSynchronizer, ABC): item = transactions_tmp[txid] item['label'] = tx_item['label'] item['type'] = tx_item['type'] # fixme: do we need this? + if 'ln_value' not in item: + item['ln_value'] = 0 item['ln_value'] = Satoshis(ln_value) # fixme: we need to add value item['amount_msat'] = tx_item['amount_msat'] else: