@@ -2767,8 +2767,8 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
27672767 /// our counterparty!)
27682768 /// The result is a transaction which we can revoke broadcastership of (ie a "local" transaction)
27692769 /// TODO Some magic rust shit to compile-time check this?
2770- fn build_holder_transaction_keys(&self, commitment_number: u64 ) -> TxCreationKeys {
2771- let per_commitment_point = self.holder_signer.as_ref().get_per_commitment_point(commitment_number, &self.secp_ctx );
2770+ fn build_holder_transaction_keys(&self) -> TxCreationKeys {
2771+ let per_commitment_point = self.holder_commitment_point.current_point( );
27722772 let delayed_payment_base = &self.get_holder_pubkeys().delayed_payment_basepoint;
27732773 let htlc_basepoint = &self.get_holder_pubkeys().htlc_basepoint;
27742774 let counterparty_pubkeys = self.get_counterparty_pubkeys();
@@ -4464,7 +4464,7 @@ impl<SP: Deref> Channel<SP> where
44644464
44654465 let funding_script = self.context.get_funding_redeemscript();
44664466
4467- let keys = self.context.build_holder_transaction_keys(self.context.holder_commitment_point.transaction_number() );
4467+ let keys = self.context.build_holder_transaction_keys();
44684468
44694469 let commitment_stats = self.context.build_commitment_transaction(self.context.holder_commitment_point.transaction_number(), &keys, true, false, logger);
44704470 let commitment_txid = {
@@ -5140,7 +5140,7 @@ impl<SP: Deref> Channel<SP> where
51405140 // Before proposing a feerate update, check that we can actually afford the new fee.
51415141 let dust_exposure_limiting_feerate = self.context.get_dust_exposure_limiting_feerate(&fee_estimator);
51425142 let htlc_stats = self.context.get_pending_htlc_stats(Some(feerate_per_kw), dust_exposure_limiting_feerate);
5143- let keys = self.context.build_holder_transaction_keys(self.context.holder_commitment_point.transaction_number() );
5143+ let keys = self.context.build_holder_transaction_keys();
51445144 let commitment_stats = self.context.build_commitment_transaction(self.context.holder_commitment_point.transaction_number(), &keys, true, true, logger);
51455145 let buffer_fee_msat = commit_tx_fee_sat(feerate_per_kw, commitment_stats.num_nondust_htlcs + htlc_stats.on_holder_tx_outbound_holding_cell_htlcs_count as usize + CONCURRENT_INBOUND_HTLC_FEE_BUFFER as usize, self.context.get_channel_type()) * 1000;
51465146 let holder_balance_msat = commitment_stats.local_balance_msat - htlc_stats.outbound_holding_cell_msat;
@@ -5425,7 +5425,10 @@ impl<SP: Deref> Channel<SP> where
54255425 }
54265426
54275427 fn get_last_revoke_and_ack(&self) -> msgs::RevokeAndACK {
5428- let next_per_commitment_point = self.context.holder_signer.as_ref().get_per_commitment_point(self.context.holder_commitment_point.transaction_number(), &self.context.secp_ctx);
5428+ debug_assert!(self.context.holder_commitment_point.transaction_number() <= INITIAL_COMMITMENT_NUMBER + 2);
5429+ // TODO: handle non-available case when get_per_commitment_point becomes async
5430+ debug_assert!(self.context.holder_commitment_point.is_available());
5431+ let next_per_commitment_point = self.context.holder_commitment_point.current_point();
54295432 let per_commitment_secret = self.context.holder_signer.as_ref().release_commitment_secret(self.context.holder_commitment_point.transaction_number() + 2);
54305433 msgs::RevokeAndACK {
54315434 channel_id: self.context.channel_id,
@@ -7629,7 +7632,8 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
76297632 panic!("Tried to send an open_channel for a channel that has already advanced");
76307633 }
76317634
7632- let first_per_commitment_point = self.context.holder_signer.as_ref().get_per_commitment_point(self.context.holder_commitment_point.transaction_number(), &self.context.secp_ctx);
7635+ debug_assert!(self.context.holder_commitment_point.is_available());
7636+ let first_per_commitment_point = self.context.holder_commitment_point.current_point();
76337637 let keys = self.context.get_holder_pubkeys();
76347638
76357639 msgs::OpenChannel {
@@ -7824,7 +7828,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
78247828 log_trace!(logger, "Initial counterparty tx for channel {} is: txid {} tx {}",
78257829 &self.context.channel_id(), counterparty_initial_bitcoin_tx.txid, encode::serialize_hex(&counterparty_initial_bitcoin_tx.transaction));
78267830
7827- let holder_signer = self.context.build_holder_transaction_keys(self.context.holder_commitment_point.transaction_number() );
7831+ let holder_signer = self.context.build_holder_transaction_keys();
78287832 let initial_commitment_tx = self.context.build_commitment_transaction(self.context.holder_commitment_point.transaction_number(), &holder_signer, true, false, logger).tx;
78297833 {
78307834 let trusted_tx = initial_commitment_tx.trust();
@@ -8027,7 +8031,8 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
80278031 ///
80288032 /// [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
80298033 fn generate_accept_channel_message(&self) -> msgs::AcceptChannel {
8030- let first_per_commitment_point = self.context.holder_signer.as_ref().get_per_commitment_point(self.context.holder_commitment_point.transaction_number(), &self.context.secp_ctx);
8034+ debug_assert!(self.context.holder_commitment_point.is_available());
8035+ let first_per_commitment_point = self.context.holder_commitment_point.current_point();
80318036 let keys = self.context.get_holder_pubkeys();
80328037
80338038 msgs::AcceptChannel {
@@ -8069,7 +8074,7 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
80698074 fn check_funding_created_signature<L: Deref>(&mut self, sig: &Signature, logger: &L) -> Result<CommitmentTransaction, ChannelError> where L::Target: Logger {
80708075 let funding_script = self.context.get_funding_redeemscript();
80718076
8072- let keys = self.context.build_holder_transaction_keys(self.context.holder_commitment_point.transaction_number() );
8077+ let keys = self.context.build_holder_transaction_keys();
80738078 let initial_commitment_tx = self.context.build_commitment_transaction(self.context.holder_commitment_point.transaction_number(), &keys, true, false, logger).tx;
80748079 let trusted_tx = initial_commitment_tx.trust();
80758080 let initial_commitment_bitcoin_tx = trusted_tx.built_transaction();
0 commit comments