@@ -2750,8 +2750,8 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
2750
2750
/// our counterparty!)
2751
2751
/// The result is a transaction which we can revoke broadcastership of (ie a "local" transaction)
2752
2752
/// TODO Some magic rust shit to compile-time check this?
2753
- fn build_holder_transaction_keys(&self, commitment_number: u64 ) -> TxCreationKeys {
2754
- let per_commitment_point = self.holder_signer.as_ref().get_per_commitment_point(commitment_number, &self.secp_ctx );
2753
+ fn build_holder_transaction_keys(&self) -> TxCreationKeys {
2754
+ let per_commitment_point = self.holder_commitment_point.current_point( );
2755
2755
let delayed_payment_base = &self.get_holder_pubkeys().delayed_payment_basepoint;
2756
2756
let htlc_basepoint = &self.get_holder_pubkeys().htlc_basepoint;
2757
2757
let counterparty_pubkeys = self.get_counterparty_pubkeys();
@@ -4447,7 +4447,7 @@ impl<SP: Deref> Channel<SP> where
4447
4447
4448
4448
let funding_script = self.context.get_funding_redeemscript();
4449
4449
4450
- let keys = self.context.build_holder_transaction_keys(self.context.holder_commitment_point.transaction_number() );
4450
+ let keys = self.context.build_holder_transaction_keys();
4451
4451
4452
4452
let commitment_stats = self.context.build_commitment_transaction(self.context.holder_commitment_point.transaction_number(), &keys, true, false, logger);
4453
4453
let commitment_txid = {
@@ -5123,7 +5123,7 @@ impl<SP: Deref> Channel<SP> where
5123
5123
// Before proposing a feerate update, check that we can actually afford the new fee.
5124
5124
let dust_exposure_limiting_feerate = self.context.get_dust_exposure_limiting_feerate(&fee_estimator);
5125
5125
let htlc_stats = self.context.get_pending_htlc_stats(Some(feerate_per_kw), dust_exposure_limiting_feerate);
5126
- let keys = self.context.build_holder_transaction_keys(self.context.holder_commitment_point.transaction_number() );
5126
+ let keys = self.context.build_holder_transaction_keys();
5127
5127
let commitment_stats = self.context.build_commitment_transaction(self.context.holder_commitment_point.transaction_number(), &keys, true, true, logger);
5128
5128
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;
5129
5129
let holder_balance_msat = commitment_stats.local_balance_msat - htlc_stats.outbound_holding_cell_msat;
@@ -5408,7 +5408,10 @@ impl<SP: Deref> Channel<SP> where
5408
5408
}
5409
5409
5410
5410
fn get_last_revoke_and_ack(&self) -> msgs::RevokeAndACK {
5411
- 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);
5411
+ debug_assert!(self.context.holder_commitment_point.transaction_number() <= INITIAL_COMMITMENT_NUMBER + 2);
5412
+ // TODO: handle non-available case when get_per_commitment_point becomes async
5413
+ debug_assert!(self.context.holder_commitment_point.is_available());
5414
+ let next_per_commitment_point = self.context.holder_commitment_point.current_point();
5412
5415
let per_commitment_secret = self.context.holder_signer.as_ref().release_commitment_secret(self.context.holder_commitment_point.transaction_number() + 2);
5413
5416
msgs::RevokeAndACK {
5414
5417
channel_id: self.context.channel_id,
@@ -7610,7 +7613,8 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
7610
7613
panic!("Tried to send an open_channel for a channel that has already advanced");
7611
7614
}
7612
7615
7613
- 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);
7616
+ debug_assert!(self.context.holder_commitment_point.is_available());
7617
+ let first_per_commitment_point = self.context.holder_commitment_point.current_point();
7614
7618
let keys = self.context.get_holder_pubkeys();
7615
7619
7616
7620
msgs::OpenChannel {
@@ -7805,7 +7809,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
7805
7809
log_trace!(logger, "Initial counterparty tx for channel {} is: txid {} tx {}",
7806
7810
&self.context.channel_id(), counterparty_initial_bitcoin_tx.txid, encode::serialize_hex(&counterparty_initial_bitcoin_tx.transaction));
7807
7811
7808
- let holder_signer = self.context.build_holder_transaction_keys(self.context.holder_commitment_point.transaction_number() );
7812
+ let holder_signer = self.context.build_holder_transaction_keys();
7809
7813
let initial_commitment_tx = self.context.build_commitment_transaction(self.context.holder_commitment_point.transaction_number(), &holder_signer, true, false, logger).tx;
7810
7814
{
7811
7815
let trusted_tx = initial_commitment_tx.trust();
@@ -8008,7 +8012,8 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
8008
8012
///
8009
8013
/// [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
8010
8014
fn generate_accept_channel_message(&self) -> msgs::AcceptChannel {
8011
- 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);
8015
+ debug_assert!(self.context.holder_commitment_point.is_available());
8016
+ let first_per_commitment_point = self.context.holder_commitment_point.current_point();
8012
8017
let keys = self.context.get_holder_pubkeys();
8013
8018
8014
8019
msgs::AcceptChannel {
@@ -8050,7 +8055,7 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
8050
8055
fn check_funding_created_signature<L: Deref>(&mut self, sig: &Signature, logger: &L) -> Result<CommitmentTransaction, ChannelError> where L::Target: Logger {
8051
8056
let funding_script = self.context.get_funding_redeemscript();
8052
8057
8053
- let keys = self.context.build_holder_transaction_keys(self.context.holder_commitment_point.transaction_number() );
8058
+ let keys = self.context.build_holder_transaction_keys();
8054
8059
let initial_commitment_tx = self.context.build_commitment_transaction(self.context.holder_commitment_point.transaction_number(), &keys, true, false, logger).tx;
8055
8060
let trusted_tx = initial_commitment_tx.trust();
8056
8061
let initial_commitment_bitcoin_tx = trusted_tx.built_transaction();
0 commit comments