URI: 
       tswaps: mapping of prepay_hash to payment_hash - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit a1e8f9e2aa3d1a2bd1d17b91e5f445c86e6556f4
   DIR parent c8506eaa3944d0cdd9f5d6dfb1a33bc06aa44d75
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Mon, 15 Jun 2020 11:48:49 +0200
       
       swaps: mapping of prepay_hash to payment_hash
       
       Diffstat:
         M electrum/lnworker.py                |       2 --
         M electrum/submarine_swaps.py         |      25 +++++++++++++------------
         M electrum/wallet.py                  |       2 ++
       
       3 files changed, 15 insertions(+), 14 deletions(-)
       ---
   DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py
       t@@ -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
   DIR diff --git a/electrum/submarine_swaps.py b/electrum/submarine_swaps.py
       t@@ -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)
       t@@ -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)
       t@@ -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)
       t@@ -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,
       t@@ -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(
       t@@ -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,
   DIR diff --git a/electrum/wallet.py b/electrum/wallet.py
       t@@ -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: