Skip to content

Commit 53bc6db

Browse files
committed
Remove the ChannelMonitor secp context
`ChannelMonitor` indirectly already has a context - the `OnchainTxHandler` has one. This makes it trivial to remove the existing one, so we do so for a free memory usage reduction.
1 parent d9dfc16 commit 53bc6db

File tree

1 file changed

+7
-16
lines changed

1 file changed

+7
-16
lines changed

lightning/src/chain/channelmonitor.rs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -848,8 +848,6 @@ pub(crate) struct ChannelMonitorImpl<Signer: WriteableEcdsaChannelSigner> {
848848

849849
/// The node_id of our counterparty
850850
counterparty_node_id: Option<PublicKey>,
851-
852-
secp_ctx: Secp256k1<secp256k1::All>, //TODO: dedup this a bit...
853851
}
854852

855853
/// Transaction outputs to watch for on-chain spends.
@@ -1091,7 +1089,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
10911089

10921090
let onchain_tx_handler =
10931091
OnchainTxHandler::new(destination_script.clone(), keys,
1094-
channel_parameters.clone(), initial_holder_commitment_tx, secp_ctx.clone());
1092+
channel_parameters.clone(), initial_holder_commitment_tx, secp_ctx);
10951093

10961094
let mut outputs_to_watch = HashMap::new();
10971095
outputs_to_watch.insert(funding_info.0.txid, vec![(funding_info.0.index as u32, funding_info.1.clone())]);
@@ -1147,8 +1145,6 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
11471145

11481146
best_block,
11491147
counterparty_node_id: Some(counterparty_node_id),
1150-
1151-
secp_ctx,
11521148
})
11531149
}
11541150

@@ -2463,9 +2459,9 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
24632459
if commitment_number >= self.get_min_seen_secret() {
24642460
let secret = self.get_secret(commitment_number).unwrap();
24652461
let per_commitment_key = ignore_error!(SecretKey::from_slice(&secret));
2466-
let per_commitment_point = PublicKey::from_secret_key(&self.secp_ctx, &per_commitment_key);
2467-
let revocation_pubkey = chan_utils::derive_public_revocation_key(&self.secp_ctx, &per_commitment_point, &self.holder_revocation_basepoint);
2468-
let delayed_key = chan_utils::derive_public_key(&self.secp_ctx, &PublicKey::from_secret_key(&self.secp_ctx, &per_commitment_key), &self.counterparty_commitment_params.counterparty_delayed_payment_base_key);
2462+
let per_commitment_point = PublicKey::from_secret_key(&self.onchain_tx_handler.secp_ctx, &per_commitment_key);
2463+
let revocation_pubkey = chan_utils::derive_public_revocation_key(&self.onchain_tx_handler.secp_ctx, &per_commitment_point, &self.holder_revocation_basepoint);
2464+
let delayed_key = chan_utils::derive_public_key(&self.onchain_tx_handler.secp_ctx, &PublicKey::from_secret_key(&self.onchain_tx_handler.secp_ctx, &per_commitment_key), &self.counterparty_commitment_params.counterparty_delayed_payment_base_key);
24692465

24702466
let revokeable_redeemscript = chan_utils::get_revokeable_redeemscript(&revocation_pubkey, self.counterparty_commitment_params.on_counterparty_tx_csv, &delayed_key);
24712467
let revokeable_p2wsh = revokeable_redeemscript.to_v0_p2wsh();
@@ -2578,8 +2574,8 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
25782574

25792575
if let Some(transaction) = tx {
25802576
let revocation_pubkey = chan_utils::derive_public_revocation_key(
2581-
&self.secp_ctx, &per_commitment_point, &self.holder_revocation_basepoint);
2582-
let delayed_key = chan_utils::derive_public_key(&self.secp_ctx,
2577+
&self.onchain_tx_handler.secp_ctx, &per_commitment_point, &self.holder_revocation_basepoint);
2578+
let delayed_key = chan_utils::derive_public_key(&self.onchain_tx_handler.secp_ctx,
25832579
&per_commitment_point,
25842580
&self.counterparty_commitment_params.counterparty_delayed_payment_base_key);
25852581
let revokeable_p2wsh = chan_utils::get_revokeable_redeemscript(&revocation_pubkey,
@@ -2636,7 +2632,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
26362632
Ok(key) => key,
26372633
Err(_) => return (Vec::new(), None)
26382634
};
2639-
let per_commitment_point = PublicKey::from_secret_key(&self.secp_ctx, &per_commitment_key);
2635+
let per_commitment_point = PublicKey::from_secret_key(&self.onchain_tx_handler.secp_ctx, &per_commitment_key);
26402636

26412637
let htlc_txid = tx.txid();
26422638
let mut claimable_outpoints = vec![];
@@ -3882,9 +3878,6 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
38823878
(13, spendable_txids_confirmed, vec_type),
38833879
});
38843880

3885-
let mut secp_ctx = Secp256k1::new();
3886-
secp_ctx.seeded_randomize(&entropy_source.get_secure_random_bytes());
3887-
38883881
Ok((best_block.block_hash(), ChannelMonitor::from_impl(ChannelMonitorImpl {
38893882
latest_update_id,
38903883
commitment_transaction_number_obscure_factor,
@@ -3936,8 +3929,6 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
39363929

39373930
best_block,
39383931
counterparty_node_id,
3939-
3940-
secp_ctx,
39413932
})))
39423933
}
39433934
}

0 commit comments

Comments
 (0)