URI: 
       tlnbase: use sign_next_commitment for initial remote_ctx - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 9010ea7e6ee227f5918c321b1eecfb3ecbd5d052
   DIR parent 434ce49451e958fa4fb103d39001237aa4c50d51
  HTML Author: Janus <ysangkok@gmail.com>
       Date:   Wed, 13 Jun 2018 16:27:44 +0200
       
       lnbase: use sign_next_commitment for initial remote_ctx
       
       Diffstat:
         M lib/lnbase.py                       |      40 +++++++++++--------------------
       
       1 file changed, 14 insertions(+), 26 deletions(-)
       ---
   DIR diff --git a/lib/lnbase.py b/lib/lnbase.py
       t@@ -866,36 +866,11 @@ class Peer(PrintError):
                funding_tx = wallet.mktx([funding_output], password, config, 1000)
                funding_txid = funding_tx.txid()
                funding_index = funding_tx.outputs().index(funding_output)
       -        # derive keys
       -        local_payment_pubkey = derive_pubkey(local_config.payment_basepoint.pubkey, remote_per_commitment_point)
       -        #local_payment_privkey = derive_privkey(base_secret, remote_per_commitment_point)
       -        remote_payment_pubkey = derive_pubkey(remote_config.payment_basepoint.pubkey, per_commitment_point_first)
       -        revocation_pubkey = derive_blinded_pubkey(local_config.revocation_basepoint.pubkey, remote_per_commitment_point)
       -        remote_revocation_pubkey = derive_blinded_pubkey(remote_config.revocation_basepoint.pubkey, per_commitment_point_first)
       -        local_delayedpubkey = derive_pubkey(local_config.delayed_basepoint.pubkey, per_commitment_point_first)
       -        remote_delayedpubkey = derive_pubkey(remote_config.delayed_basepoint.pubkey, remote_per_commitment_point)
                # compute amounts
       -        htlcs = []
                local_amount = funding_sat*1000 - push_msat
                remote_amount = push_msat
                # remote commitment transaction
       -        remote_ctx = make_commitment(
       -            0,
       -            remote_config.multisig_key.pubkey, local_config.multisig_key.pubkey, local_payment_pubkey,
       -            local_config.payment_basepoint.pubkey, remote_config.payment_basepoint.pubkey,
       -            revocation_pubkey, remote_delayedpubkey, local_config.to_self_delay,
       -            funding_txid, funding_index, funding_sat,
       -            remote_amount, local_amount, remote_config.dust_limit_sat, local_feerate, False, we_are_initiator=True, htlcs=[])
       -        sig_64 = sign_and_get_sig_string(remote_ctx, local_config, remote_config)
                channel_id, funding_txid_bytes = channel_id_from_funding_tx(funding_txid, funding_index)
       -        self.send_message(gen_msg("funding_created",
       -            temporary_channel_id=temp_channel_id,
       -            funding_txid=funding_txid_bytes,
       -            funding_output_index=funding_index,
       -            signature=sig_64))
       -        payload = await self.funding_signed[channel_id].get()
       -        self.print_error('received funding_signed')
       -        remote_sig = payload['signature']
                their_revocation_store = RevocationStore()
                chan = OpenChannel(
                        node_id=self.pubkey,
       t@@ -921,7 +896,20 @@ class Peer(PrintError):
                        ),
                        constraints=ChannelConstraints(capacity=funding_sat, feerate=local_feerate, is_initiator=True, funding_txn_minimum_depth=funding_txn_minimum_depth)
                )
       -        m = HTLCStateMachine(chan._replace(local_state=chan.local_state._replace(ctn=-1)))
       +        m = HTLCStateMachine(chan._replace(
       +            local_state=chan.local_state._replace(ctn=-1),
       +            remote_state=chan.remote_state._replace(
       +                next_per_commitment_point=remote_per_commitment_point,
       +                last_per_commitment_point=None, ctn=-1)))
       +        sig_64, _ = m.sign_next_commitment()
       +        self.send_message(gen_msg("funding_created",
       +            temporary_channel_id=temp_channel_id,
       +            funding_txid=funding_txid_bytes,
       +            funding_output_index=funding_index,
       +            signature=sig_64))
       +        payload = await self.funding_signed[channel_id].get()
       +        self.print_error('received funding_signed')
       +        remote_sig = payload['signature']
                m.receive_new_commitment(remote_sig, [])
                # broadcast funding tx
                success, _txid = self.network.broadcast_transaction(funding_tx)