Skip to content

Commit 003b8ee

Browse files
committed
Make funding_transaction_generated take a ChannelId by value
`ChannelId` is just a 32-byte array, so there's not a lot of value in passing it by reference to `funding_transaction_generated`, which we fix here. This is also nice for bindings as languages like Java can better analyze whether the `ChannelManager` ends up with a reference to the `ChannelId`.
1 parent 50d21b7 commit 003b8ee

File tree

7 files changed

+43
-43
lines changed

7 files changed

+43
-43
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1628,8 +1628,8 @@ mod tests {
16281628
$node_a
16291629
.node
16301630
.funding_transaction_generated(
1631-
&temporary_channel_id,
1632-
&$node_b.node.get_our_node_id(),
1631+
temporary_channel_id,
1632+
$node_b.node.get_our_node_id(),
16331633
tx.clone(),
16341634
)
16351635
.unwrap();
@@ -2062,7 +2062,7 @@ mod tests {
20622062
.expect("FundingGenerationReady not handled within deadline");
20632063
nodes[0]
20642064
.node
2065-
.funding_transaction_generated(&temporary_channel_id, &node_1_id, funding_tx.clone())
2065+
.funding_transaction_generated(temporary_channel_id, node_1_id, funding_tx.clone())
20662066
.unwrap();
20672067
let msg_0 = get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, node_1_id);
20682068
nodes[1].node.handle_funding_created(&node_0_id, &msg_0);

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1861,7 +1861,7 @@ fn do_during_funding_monitor_fail(confirm_a_first: bool, restore_b_before_conf:
18611861

18621862
let (temporary_channel_id, funding_tx, funding_output) = create_funding_transaction(&nodes[0], &nodes[1].node.get_our_node_id(), 100000, 43);
18631863

1864-
nodes[0].node.funding_transaction_generated(&temporary_channel_id, &nodes[1].node.get_our_node_id(), funding_tx.clone()).unwrap();
1864+
nodes[0].node.funding_transaction_generated(temporary_channel_id, nodes[1].node.get_our_node_id(), funding_tx.clone()).unwrap();
18651865
check_added_monitors!(nodes[0], 0);
18661866

18671867
chanmon_cfgs[1].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
@@ -2795,7 +2795,7 @@ fn do_test_outbound_reload_without_init_mon(use_0conf: bool) {
27952795

27962796
let (temporary_channel_id, funding_tx, ..) = create_funding_transaction(&nodes[0], &nodes[1].node.get_our_node_id(), 100000, 43);
27972797

2798-
nodes[0].node.funding_transaction_generated(&temporary_channel_id, &nodes[1].node.get_our_node_id(), funding_tx.clone()).unwrap();
2798+
nodes[0].node.funding_transaction_generated(temporary_channel_id, nodes[1].node.get_our_node_id(), funding_tx.clone()).unwrap();
27992799
check_added_monitors!(nodes[0], 0);
28002800

28012801
let funding_created_msg = get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, nodes[1].node.get_our_node_id());
@@ -2886,7 +2886,7 @@ fn do_test_inbound_reload_without_init_mon(use_0conf: bool, lock_commitment: boo
28862886

28872887
let (temporary_channel_id, funding_tx, ..) = create_funding_transaction(&nodes[0], &nodes[1].node.get_our_node_id(), 100000, 43);
28882888

2889-
nodes[0].node.funding_transaction_generated(&temporary_channel_id, &nodes[1].node.get_our_node_id(), funding_tx.clone()).unwrap();
2889+
nodes[0].node.funding_transaction_generated(temporary_channel_id, nodes[1].node.get_our_node_id(), funding_tx.clone()).unwrap();
28902890
check_added_monitors!(nodes[0], 0);
28912891

28922892
let funding_created_msg = get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, nodes[1].node.get_our_node_id());

lightning/src/ln/channelmanager.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1452,7 +1452,7 @@ where
14521452
/// channel_value_satoshis, output_script
14531453
/// );
14541454
/// match channel_manager.funding_transaction_generated(
1455-
/// &temporary_channel_id, &counterparty_node_id, funding_transaction
1455+
/// temporary_channel_id, counterparty_node_id, funding_transaction
14561456
/// ) {
14571457
/// Ok(()) => println!("Funding channel {}", temporary_channel_id),
14581458
/// Err(e) => println!("Error funding channel {}: {:?}", temporary_channel_id, e),
@@ -4444,17 +4444,17 @@ where
44444444
/// Handles the generation of a funding transaction, optionally (for tests) with a function
44454445
/// which checks the correctness of the funding transaction given the associated channel.
44464446
fn funding_transaction_generated_intern<FundingOutput: FnMut(&OutboundV1Channel<SP>) -> Result<OutPoint, &'static str>>(
4447-
&self, temporary_channel_id: &ChannelId, counterparty_node_id: &PublicKey, funding_transaction: Transaction, is_batch_funding: bool,
4447+
&self, temporary_channel_id: ChannelId, counterparty_node_id: PublicKey, funding_transaction: Transaction, is_batch_funding: bool,
44484448
mut find_funding_output: FundingOutput, is_manual_broadcast: bool,
44494449
) -> Result<(), APIError> {
44504450
let per_peer_state = self.per_peer_state.read().unwrap();
4451-
let peer_state_mutex = per_peer_state.get(counterparty_node_id)
4451+
let peer_state_mutex = per_peer_state.get(&counterparty_node_id)
44524452
.ok_or_else(|| APIError::ChannelUnavailable { err: format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id) })?;
44534453

44544454
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
44554455
let peer_state = &mut *peer_state_lock;
44564456
let funding_txo;
4457-
let (mut chan, msg_opt) = match peer_state.channel_by_id.remove(temporary_channel_id) {
4457+
let (mut chan, msg_opt) = match peer_state.channel_by_id.remove(&temporary_channel_id) {
44584458
Some(ChannelPhase::UnfundedOutboundV1(mut chan)) => {
44594459
macro_rules! close_chan { ($err: expr, $api_err: expr, $chan: expr) => { {
44604460
let counterparty;
@@ -4490,7 +4490,7 @@ where
44904490
}
44914491
},
44924492
Some(phase) => {
4493-
peer_state.channel_by_id.insert(*temporary_channel_id, phase);
4493+
peer_state.channel_by_id.insert(temporary_channel_id, phase);
44944494
return Err(APIError::APIMisuseError {
44954495
err: format!(
44964496
"Channel with id {} for the passed counterparty node_id {} is not an unfunded, outbound V1 channel",
@@ -4540,7 +4540,7 @@ where
45404540
}
45414541

45424542
#[cfg(test)]
4543-
pub(crate) fn funding_transaction_generated_unchecked(&self, temporary_channel_id: &ChannelId, counterparty_node_id: &PublicKey, funding_transaction: Transaction, output_index: u16) -> Result<(), APIError> {
4543+
pub(crate) fn funding_transaction_generated_unchecked(&self, temporary_channel_id: ChannelId, counterparty_node_id: PublicKey, funding_transaction: Transaction, output_index: u16) -> Result<(), APIError> {
45444544
let txid = funding_transaction.txid();
45454545
self.funding_transaction_generated_intern(temporary_channel_id, counterparty_node_id, funding_transaction, false, |_| {
45464546
Ok(OutPoint { txid, index: output_index })
@@ -4577,8 +4577,8 @@ where
45774577
///
45784578
/// [`Event::FundingGenerationReady`]: crate::events::Event::FundingGenerationReady
45794579
/// [`Event::ChannelClosed`]: crate::events::Event::ChannelClosed
4580-
pub fn funding_transaction_generated(&self, temporary_channel_id: &ChannelId, counterparty_node_id: &PublicKey, funding_transaction: Transaction) -> Result<(), APIError> {
4581-
self.batch_funding_transaction_generated(&[(temporary_channel_id, counterparty_node_id)], funding_transaction)
4580+
pub fn funding_transaction_generated(&self, temporary_channel_id: ChannelId, counterparty_node_id: PublicKey, funding_transaction: Transaction) -> Result<(), APIError> {
4581+
self.batch_funding_transaction_generated(&[(&temporary_channel_id, &counterparty_node_id)], funding_transaction)
45824582
}
45834583

45844584

@@ -4609,10 +4609,10 @@ where
46094609
/// [`Event::FundingTxBroadcastSafe`]: crate::events::Event::FundingTxBroadcastSafe
46104610
/// [`Event::ChannelClosed`]: crate::events::Event::ChannelClosed
46114611
/// [`ChannelManager::funding_transaction_generated`]: crate::ln::channelmanager::ChannelManager::funding_transaction_generated
4612-
pub fn unsafe_manual_funding_transaction_generated(&self, temporary_channel_id: &ChannelId, counterparty_node_id: &PublicKey, funding: OutPoint) -> Result<(), APIError> {
4612+
pub fn unsafe_manual_funding_transaction_generated(&self, temporary_channel_id: ChannelId, counterparty_node_id: PublicKey, funding: OutPoint) -> Result<(), APIError> {
46134613
let _persistence_guard = PersistenceNotifierGuard::notify_on_drop(self);
46144614

4615-
let temporary_channels = &[(temporary_channel_id, counterparty_node_id)];
4615+
let temporary_channels = &[(&temporary_channel_id, &counterparty_node_id)];
46164616
return self.batch_funding_transaction_generated_intern(temporary_channels, FundingType::Unchecked(funding));
46174617

46184618
}
@@ -4686,8 +4686,8 @@ where
46864686
let is_manual_broadcast = funding.is_manual_broadcast();
46874687
for &(temporary_channel_id, counterparty_node_id) in temporary_channels {
46884688
result = result.and_then(|_| self.funding_transaction_generated_intern(
4689-
temporary_channel_id,
4690-
counterparty_node_id,
4689+
*temporary_channel_id,
4690+
*counterparty_node_id,
46914691
funding.transaction_or_dummy(),
46924692
is_batch_funding,
46934693
|chan| {
@@ -13325,7 +13325,7 @@ mod tests {
1332513325
assert_eq!(nodes[1].node.outpoint_to_peer.lock().unwrap().len(), 0);
1332613326
}
1332713327

13328-
nodes[0].node.funding_transaction_generated(&temporary_channel_id, &nodes[1].node.get_our_node_id(), tx.clone()).unwrap();
13328+
nodes[0].node.funding_transaction_generated(temporary_channel_id, nodes[1].node.get_our_node_id(), tx.clone()).unwrap();
1332913329
{
1333013330
// Assert that `nodes[0]`'s `outpoint_to_peer` map is populated with the channel as soon as
1333113331
// as it has the funding transaction.
@@ -13537,7 +13537,7 @@ mod tests {
1353713537
nodes[0].node.handle_accept_channel(&nodes[1].node.get_our_node_id(), &accept_channel);
1353813538
let (temporary_channel_id, tx, _) = create_funding_transaction(&nodes[0], &nodes[1].node.get_our_node_id(), 100_000, 42);
1353913539
funding_tx = Some(tx.clone());
13540-
nodes[0].node.funding_transaction_generated(&temporary_channel_id, &nodes[1].node.get_our_node_id(), tx).unwrap();
13540+
nodes[0].node.funding_transaction_generated(temporary_channel_id, nodes[1].node.get_our_node_id(), tx).unwrap();
1354113541
let funding_created_msg = get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, nodes[1].node.get_our_node_id());
1354213542

1354313543
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &funding_created_msg);
@@ -14192,7 +14192,7 @@ pub mod bench {
1419214192
tx = Transaction { version: Version::TWO, lock_time: LockTime::ZERO, input: Vec::new(), output: vec![TxOut {
1419314193
value: Amount::from_sat(8_000_000), script_pubkey: output_script,
1419414194
}]};
14195-
node_a.funding_transaction_generated(&temporary_channel_id, &node_b.get_our_node_id(), tx.clone()).unwrap();
14195+
node_a.funding_transaction_generated(temporary_channel_id, node_b.get_our_node_id(), tx.clone()).unwrap();
1419614196
} else { panic!(); }
1419714197

1419814198
node_b.handle_funding_created(&node_a.get_our_node_id(), &get_event_msg!(node_a_holder, MessageSendEvent::SendFundingCreated, node_b.get_our_node_id()));

lightning/src/ln/functional_test_utils.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1218,7 +1218,7 @@ pub fn sign_funding_transaction<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &
12181218
let (temporary_channel_id, tx, funding_output) = create_funding_transaction(node_a, &node_b.node.get_our_node_id(), channel_value, 42);
12191219
assert_eq!(temporary_channel_id, expected_temporary_channel_id);
12201220

1221-
assert!(node_a.node.funding_transaction_generated(&temporary_channel_id, &node_b.node.get_our_node_id(), tx.clone()).is_ok());
1221+
assert!(node_a.node.funding_transaction_generated(temporary_channel_id, node_b.node.get_our_node_id(), tx.clone()).is_ok());
12221222
check_added_monitors!(node_a, 0);
12231223

12241224
let funding_created_msg = get_event_msg!(node_a, MessageSendEvent::SendFundingCreated, node_b.node.get_our_node_id());
@@ -1249,7 +1249,7 @@ pub fn sign_funding_transaction<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &
12491249
node_a.tx_broadcaster.txn_broadcasted.lock().unwrap().clear();
12501250

12511251
// Ensure that funding_transaction_generated is idempotent.
1252-
assert!(node_a.node.funding_transaction_generated(&temporary_channel_id, &node_b.node.get_our_node_id(), tx.clone()).is_err());
1252+
assert!(node_a.node.funding_transaction_generated(temporary_channel_id, node_b.node.get_our_node_id(), tx.clone()).is_err());
12531253
assert!(node_a.node.get_and_clear_pending_msg_events().is_empty());
12541254
check_added_monitors!(node_a, 0);
12551255

@@ -1279,7 +1279,7 @@ pub fn open_zero_conf_channel<'a, 'b, 'c, 'd>(initiator: &'a Node<'b, 'c, 'd>, r
12791279
initiator.node.handle_accept_channel(&receiver.node.get_our_node_id(), &accept_channel);
12801280

12811281
let (temporary_channel_id, tx, _) = create_funding_transaction(&initiator, &receiver.node.get_our_node_id(), 100_000, 42);
1282-
initiator.node.funding_transaction_generated(&temporary_channel_id, &receiver.node.get_our_node_id(), tx.clone()).unwrap();
1282+
initiator.node.funding_transaction_generated(temporary_channel_id, receiver.node.get_our_node_id(), tx.clone()).unwrap();
12831283
let funding_created = get_event_msg!(initiator, MessageSendEvent::SendFundingCreated, receiver.node.get_our_node_id());
12841284

12851285
receiver.node.handle_funding_created(&initiator.node.get_our_node_id(), &funding_created);
@@ -1456,7 +1456,7 @@ pub fn create_unannounced_chan_between_nodes_with_value<'a, 'b, 'c, 'd>(nodes: &
14561456
nodes[a].node.handle_accept_channel(&nodes[b].node.get_our_node_id(), &accept_channel);
14571457

14581458
let (temporary_channel_id, tx, _) = create_funding_transaction(&nodes[a], &nodes[b].node.get_our_node_id(), channel_value, 42);
1459-
nodes[a].node.funding_transaction_generated(&temporary_channel_id, &nodes[b].node.get_our_node_id(), tx.clone()).unwrap();
1459+
nodes[a].node.funding_transaction_generated(temporary_channel_id, nodes[b].node.get_our_node_id(), tx.clone()).unwrap();
14601460
nodes[b].node.handle_funding_created(&nodes[a].node.get_our_node_id(), &get_event_msg!(nodes[a], MessageSendEvent::SendFundingCreated, nodes[b].node.get_our_node_id()));
14611461
check_added_monitors!(nodes[b], 1);
14621462

0 commit comments

Comments
 (0)