URI: 
       tlnbase: simplify commitment transaction building with open channel - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 5f380194204fbff4bdeeffe80aa972c292f4f69d
   DIR parent 39dcc2413303addae2fb5dac5c334c31abc06f3a
  HTML Author: Janus <ysangkok@gmail.com>
       Date:   Tue,  1 May 2018 00:15:41 +0200
       
       lnbase: simplify commitment transaction building with open channel
       
       Diffstat:
         M lib/lnbase.py                       |      53 ++++++++++++++++---------------
       
       1 file changed, 27 insertions(+), 26 deletions(-)
       ---
   DIR diff --git a/lib/lnbase.py b/lib/lnbase.py
       t@@ -448,6 +448,28 @@ def make_received_htlc(revocation_pubkey, remote_htlcpubkey, local_htlcpubkey, p
                + bitcoin.add_number_to_script(cltv_expiry) \
                + bytes([opcodes.OP_CLTV, opcodes.OP_DROP, opcodes.OP_CHECKSIG, opcodes.OP_ENDIF, opcodes.OP_ENDIF])
        
       +def make_commitment_using_open_channel(openchannel, ctn, for_us, pcp, local_sat, remote_sat, htlcs=[]):
       +    conf = openchannel.local_config if for_us else openchannel.remote_config
       +    other_conf = openchannel.local_config if not for_us else openchannel.remote_config
       +    payment_pubkey = derive_pubkey(other_conf.payment_key.pubkey, pcp)
       +    remote_revocation_pubkey = derive_blinded_pubkey(other_conf.revocation_key.pubkey, pcp)
       +    return make_commitment(
       +        ctn,
       +        conf.multisig_key.pubkey,
       +        other_conf.multisig_key.pubkey,
       +        payment_pubkey,
       +        openchannel.local_config.payment_key.pubkey,
       +        openchannel.remote_config.payment_key.pubkey,
       +        remote_revocation_pubkey,
       +        derive_pubkey(conf.delayed_key.pubkey, pcp),
       +        conf.to_self_delay,
       +        *openchannel.funding_outpoint,
       +        openchannel.constraints.capacity,
       +        local_sat,
       +        remote_sat,
       +        openchannel.local_config.dust_limit_sat,
       +        openchannel.constraints.feerate,
       +        for_us, htlcs=htlcs)
        
        def make_commitment(ctn, local_funding_pubkey, remote_funding_pubkey, remote_payment_pubkey,
                            payment_basepoint, remote_payment_basepoint,
       t@@ -965,23 +987,11 @@ class Peer(PrintError):
                    )
                ]
        
       -        new_commitment = make_commitment(
       -                1,
       -                openchannel.local_config.multisig_key.pubkey,
       -                openchannel.remote_config.multisig_key.pubkey,
       -                derive_pubkey(openchannel.remote_config.payment_key.pubkey, local_next_per_commitment_point),
       -                openchannel.local_config.payment_key.pubkey,
       -                openchannel.remote_config.payment_key.pubkey,
       -                remote_revocation_pubkey,
       -                derive_pubkey(delayed_payment_basepoint, local_next_per_commitment_point),
       -                openchannel.local_config.to_self_delay,
       -                *openchannel.funding_outpoint,
       -                openchannel.constraints.capacity,
       +        new_commitment = make_commitment_using_open_channel(openchannel, 1, True, local_next_per_commitment_point,
                        openchannel.local_state.amount_sat,
                        openchannel.remote_state.amount_sat - expected_received_sat,
       -                openchannel.local_config.dust_limit_sat,
       -                openchannel.constraints.feerate,
       -                True, htlcs=htlcs_in_local)
       +                htlcs_in_local)
       +
                preimage_hex = new_commitment.serialize_preimage(0)
                pre_hash = bitcoin.Hash(bfh(preimage_hex))
                if not bitcoin.verify_signature(remote_funding_pubkey, commitment_signed_msg["signature"], pre_hash):
       t@@ -1059,18 +1069,9 @@ class Peer(PrintError):
        
                remote_next_commitment_point = revoke_and_ack_msg["next_per_commitment_point"]
        
       -        revocation_pubkey = derive_blinded_pubkey(revocation_basepoint, remote_next_commitment_point)
       -        remote_delayedpubkey = derive_pubkey(remote_delayed_payment_basepoint, remote_next_commitment_point)
       -        local_payment_pubkey = derive_pubkey(openchannel.local_config.payment_key.pubkey, remote_next_commitment_point)
                # remote commitment transaction without htlcs
       -        bare_ctx = make_commitment(
       -            2,
       -            remote_funding_pubkey, funding_pubkey, local_payment_pubkey,
       -            openchannel.local_config.payment_key.pubkey, openchannel.remote_config.payment_key.pubkey,
       -            revocation_pubkey, remote_delayedpubkey, remote_delay,
       -            *openchannel.funding_outpoint, openchannel.constraints.capacity,
       -            openchannel.remote_state.amount_sat - expected_received_sat, openchannel.local_state.amount_sat + expected_received_sat,
       -            remote_dust_limit_sat, openchannel.constraints.feerate, False, htlcs=[])
       +        bare_ctx = make_commitment_using_open_channel(openchannel, 2, False, remote_next_commitment_point,
       +            openchannel.remote_state.amount_sat - expected_received_sat, openchannel.local_state.amount_sat + expected_received_sat)
        
                bare_ctx.sign({bh2u(funding_pubkey): (funding_privkey, True)})
                sig_index = pubkeys.index(bh2u(funding_pubkey))