URI: 
       tfunction that returns map from commitment number to list of HTLCs - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 783cac1f2357810cff780a90ee5f841e7d0c6823
   DIR parent 5b7c801ca44a1c2323953abcc19c120058f127fc
  HTML Author: Janus <ysangkok@gmail.com>
       Date:   Mon,  5 Nov 2018 20:30:56 +0100
       
       function that returns map from commitment number to list of HTLCs
       
       Diffstat:
         M electrum/lnchan.py                  |      19 +++++++++++++++++--
         M electrum/tests/test_lnchan.py       |      11 +++++++++++
       
       2 files changed, 28 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/electrum/lnchan.py b/electrum/lnchan.py
       t@@ -579,14 +579,14 @@ class Channel(PrintError):
                  unsettled_local + remote_settled - local_settled
                return remote_msat, local_msat
        
       -    def included_htlcs(self, subject, htlc_initiator):
       +    def included_htlcs(self, subject, htlc_initiator, only_pending=True):
                """
                return filter of non-dust htlcs for subjects commitment transaction, initiated by given party
                """
                feerate = self.pending_feerate(subject)
                conf = self.config[subject]
                weight = HTLC_SUCCESS_WEIGHT if subject != htlc_initiator else HTLC_TIMEOUT_WEIGHT
       -        htlcs = self.htlcs(htlc_initiator, only_pending=True)
       +        htlcs = self.htlcs(htlc_initiator, only_pending=only_pending)
                fee_for_htlc = lambda htlc: htlc.amount_msat // 1000 - (weight * feerate // 1000)
                return filter(lambda htlc: fee_for_htlc(htlc) >= conf.dust_limit_sat, htlcs)
        
       t@@ -853,6 +853,21 @@ class Channel(PrintError):
                assert tx.is_complete()
                return tx
        
       +    def included_htlcs_in_latest_ctxs(self):
       +        """ A map from commitment number to list of HTLCs in
       +            their latest two commitment transactions.
       +            The oldest might have been revoked.  """
       +        old_htlcs = list(self.included_htlcs(REMOTE, REMOTE, only_pending=False)) \
       +                  + list(self.included_htlcs(REMOTE, LOCAL,  only_pending=False))
       +
       +        old_logs = dict(self.lock_in_htlc_changes(LOCAL))
       +        new_htlcs = list(self.included_htlcs(REMOTE, REMOTE)) \
       +                  + list(self.included_htlcs(REMOTE, LOCAL))
       +        self.log = old_logs
       +
       +        return {self.config[REMOTE].ctn:   old_htlcs,
       +                self.config[REMOTE].ctn+1: new_htlcs, }
       +
        def maybe_create_sweeptx_for_their_ctx_to_remote(chan, ctx, their_pcp: bytes,
                                                         sweep_address) -> Optional[EncumberedTransaction]:
            assert isinstance(their_pcp, bytes)
   DIR diff --git a/electrum/tests/test_lnchan.py b/electrum/tests/test_lnchan.py
       t@@ -199,6 +199,11 @@ class TestChannel(unittest.TestCase):
                alice_channel, bob_channel = self.alice_channel, self.bob_channel
                htlc = self.htlc
        
       +        ctn_to_htlcs = alice_channel.included_htlcs_in_latest_ctxs()
       +        self.assertEqual(list(ctn_to_htlcs.keys()), [0,1])
       +        self.assertEqual(ctn_to_htlcs[0], [])
       +        self.assertEqual(ctn_to_htlcs[1], [htlc])
       +
                # Next alice commits this change by sending a signature message. Since
                # we expect the messages to be ordered, Bob will receive the HTLC we
                # just sent before he receives this signature, so the signature will
       t@@ -273,6 +278,12 @@ class TestChannel(unittest.TestCase):
                alice_channel.receive_htlc_settle(preimage, self.aliceHtlcIndex)
        
                bobSig2, bobHtlcSigs2 = bob_channel.sign_next_commitment()
       +
       +        ctn_to_htlcs = bob_channel.included_htlcs_in_latest_ctxs()
       +        self.assertEqual(list(ctn_to_htlcs.keys()), [1,2])
       +        self.assertEqual(len(ctn_to_htlcs[1]), 1)
       +        self.assertEqual(len(ctn_to_htlcs[2]), 0)
       +
                alice_channel.receive_new_commitment(bobSig2, bobHtlcSigs2)
        
                aliceRevocation2, _ = alice_channel.revoke_current_commitment()