Skip to content

Commit

Permalink
Formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
optout21 committed Nov 13, 2024
1 parent 562a111 commit 3a3ff71
Showing 1 changed file with 152 additions and 40 deletions.
192 changes: 152 additions & 40 deletions lightning/src/ln/functional_tests_splice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,7 @@ use crate::util::config::{ChannelHandshakeConfig, UserConfig};
fn test_v1_splice_in() {
// Set up a network of 2 nodes
let cfg = UserConfig {
channel_handshake_config: ChannelHandshakeConfig {
..Default::default()
},
channel_handshake_config: ChannelHandshakeConfig { ..Default::default() },
..Default::default()
};
let chanmon_cfgs = create_chanmon_cfgs(2);
Expand All @@ -43,27 +41,69 @@ fn test_v1_splice_in() {
let push_msat = 0;
let channel_reserve_amnt_sat = 1_000;

let expected_funded_channel_id = "ae3367da2c13bc1ceb86bf56418f62828f7ce9d6bfb15a46af5ba1f1ed8b124f";
let expected_funded_channel_id =
"ae3367da2c13bc1ceb86bf56418f62828f7ce9d6bfb15a46af5ba1f1ed8b124f";

// Have initiator_node initiate a channel to acceptor_node with aforementioned parameters
let channel_id_temp1 = initiator_node.node.create_channel(acceptor_node.node.get_our_node_id(), channel_value_sat, push_msat, 42, None, None).unwrap();
let channel_id_temp1 = initiator_node
.node
.create_channel(
acceptor_node.node.get_our_node_id(),
channel_value_sat,
push_msat,
42,
None,
None,
)
.unwrap();

// Extract the channel open message from initiator_node to acceptor_node
let open_channel_message = get_event_msg!(initiator_node, MessageSendEvent::SendOpenChannel, acceptor_node.node.get_our_node_id());

let _res = acceptor_node.node.handle_open_channel(initiator_node.node.get_our_node_id(), &open_channel_message.clone());
let open_channel_message = get_event_msg!(
initiator_node,
MessageSendEvent::SendOpenChannel,
acceptor_node.node.get_our_node_id()
);

let _res = acceptor_node
.node
.handle_open_channel(initiator_node.node.get_our_node_id(), &open_channel_message.clone());
// Extract the accept channel message from acceptor_node to initiator_node
let accept_channel_message = get_event_msg!(acceptor_node, MessageSendEvent::SendAcceptChannel, initiator_node.node.get_our_node_id());
let _res = initiator_node.node.handle_accept_channel(acceptor_node.node.get_our_node_id(), &accept_channel_message.clone());
let accept_channel_message = get_event_msg!(
acceptor_node,
MessageSendEvent::SendAcceptChannel,
initiator_node.node.get_our_node_id()
);
let _res = initiator_node.node.handle_accept_channel(
acceptor_node.node.get_our_node_id(),
&accept_channel_message.clone(),
);
// Note: FundingGenerationReady emitted, checked and used below
let (_channel_id_temp2, funding_tx, _funding_output) = create_funding_transaction(&initiator_node, &acceptor_node.node.get_our_node_id(), channel_value_sat, 42);
let (_channel_id_temp2, funding_tx, _funding_output) = create_funding_transaction(
&initiator_node,
&acceptor_node.node.get_our_node_id(),
channel_value_sat,
42,
);

// Funding transation created, provide it
let _res = initiator_node.node.funding_transaction_generated(channel_id_temp1, acceptor_node.node.get_our_node_id(), funding_tx.clone()).unwrap();

let funding_created_message = get_event_msg!(initiator_node, MessageSendEvent::SendFundingCreated, acceptor_node.node.get_our_node_id());

let _res = acceptor_node.node.handle_funding_created(initiator_node.node.get_our_node_id(), &funding_created_message);
let _res = initiator_node
.node
.funding_transaction_generated(
channel_id_temp1,
acceptor_node.node.get_our_node_id(),
funding_tx.clone(),
)
.unwrap();

let funding_created_message = get_event_msg!(
initiator_node,
MessageSendEvent::SendFundingCreated,
acceptor_node.node.get_our_node_id()
);

let _res = acceptor_node
.node
.handle_funding_created(initiator_node.node.get_our_node_id(), &funding_created_message);

assert_eq!(initiator_node.node.list_channels().len(), 1);
{
Expand All @@ -77,15 +117,26 @@ fn test_v1_splice_in() {
assert!(!channel.is_channel_ready);
}

let funding_signed_message = get_event_msg!(acceptor_node, MessageSendEvent::SendFundingSigned, initiator_node.node.get_our_node_id());
let _res = initiator_node.node.handle_funding_signed(acceptor_node.node.get_our_node_id(), &funding_signed_message);
let funding_signed_message = get_event_msg!(
acceptor_node,
MessageSendEvent::SendFundingSigned,
initiator_node.node.get_our_node_id()
);
let _res = initiator_node
.node
.handle_funding_signed(acceptor_node.node.get_our_node_id(), &funding_signed_message);
// Take new channel ID
let channel_id2 = funding_signed_message.channel_id;
assert_eq!(channel_id2.to_string(), expected_funded_channel_id);

// Check that funding transaction has been broadcasted
assert_eq!(chanmon_cfgs[initiator_node_index].tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1);
let broadcasted_funding_tx = chanmon_cfgs[initiator_node_index].tx_broadcaster.txn_broadcasted.lock().unwrap()[0].clone();
assert_eq!(
chanmon_cfgs[initiator_node_index].tx_broadcaster.txn_broadcasted.lock().unwrap().len(),
1
);
let broadcasted_funding_tx =
chanmon_cfgs[initiator_node_index].tx_broadcaster.txn_broadcasted.lock().unwrap()[0]
.clone();

check_added_monitors!(initiator_node, 1);
let _ev = get_event!(initiator_node, Event::ChannelPending);
Expand All @@ -94,18 +145,38 @@ fn test_v1_splice_in() {

// Simulate confirmation of the funding tx
confirm_transaction(&initiator_node, &broadcasted_funding_tx);
let channel_ready_message = get_event_msg!(initiator_node, MessageSendEvent::SendChannelReady, acceptor_node.node.get_our_node_id());
let channel_ready_message = get_event_msg!(
initiator_node,
MessageSendEvent::SendChannelReady,
acceptor_node.node.get_our_node_id()
);

confirm_transaction(&acceptor_node, &broadcasted_funding_tx);
let channel_ready_message2 = get_event_msg!(acceptor_node, MessageSendEvent::SendChannelReady, initiator_node.node.get_our_node_id());

let _res = acceptor_node.node.handle_channel_ready(initiator_node.node.get_our_node_id(), &channel_ready_message);
let channel_ready_message2 = get_event_msg!(
acceptor_node,
MessageSendEvent::SendChannelReady,
initiator_node.node.get_our_node_id()
);

let _res = acceptor_node
.node
.handle_channel_ready(initiator_node.node.get_our_node_id(), &channel_ready_message);
let _ev = get_event!(acceptor_node, Event::ChannelReady);
let _channel_update = get_event_msg!(acceptor_node, MessageSendEvent::SendChannelUpdate, initiator_node.node.get_our_node_id());

let _res = initiator_node.node.handle_channel_ready(acceptor_node.node.get_our_node_id(), &channel_ready_message2);
let _channel_update = get_event_msg!(
acceptor_node,
MessageSendEvent::SendChannelUpdate,
initiator_node.node.get_our_node_id()
);

let _res = initiator_node
.node
.handle_channel_ready(acceptor_node.node.get_our_node_id(), &channel_ready_message2);
let _ev = get_event!(initiator_node, Event::ChannelReady);
let _channel_update = get_event_msg!(initiator_node, MessageSendEvent::SendChannelUpdate, acceptor_node.node.get_our_node_id());
let _channel_update = get_event_msg!(
initiator_node,
MessageSendEvent::SendChannelUpdate,
acceptor_node.node.get_our_node_id()
);

// check channel capacity and other parameters
assert_eq!(initiator_node.node.list_channels().len(), 1);
Expand All @@ -115,7 +186,10 @@ fn test_v1_splice_in() {
assert!(channel.is_usable);
assert!(channel.is_channel_ready);
assert_eq!(channel.channel_value_satoshis, channel_value_sat);
assert_eq!(channel.outbound_capacity_msat, 1000 * (channel_value_sat - channel_reserve_amnt_sat));
assert_eq!(
channel.outbound_capacity_msat,
1000 * (channel_value_sat - channel_reserve_amnt_sat)
);
assert_eq!(channel.funding_txo.unwrap().txid, funding_tx.compute_txid());
assert_eq!(channel.confirmations.unwrap(), 10);
}
Expand Down Expand Up @@ -143,13 +217,32 @@ fn test_v1_splice_in() {
let locktime = 0; // TODO

// Initiate splice-in (on initiator_node)
let _res = initiator_node.node.splice_channel(&channel_id2, &acceptor_node.node.get_our_node_id(), splice_in_sats as i64, Vec::new(), funding_feerate_perkw, locktime).unwrap();
let _res = initiator_node
.node
.splice_channel(
&channel_id2,
&acceptor_node.node.get_our_node_id(),
splice_in_sats as i64,
Vec::new(),
funding_feerate_perkw,
locktime,
)
.unwrap();
// Extract the splice message from node0 to node1
let splice_msg = get_event_msg!(initiator_node, MessageSendEvent::SendSpliceInit, acceptor_node.node.get_our_node_id());

let _res = acceptor_node.node.handle_splice_init(initiator_node.node.get_our_node_id(), &splice_msg);
let splice_msg = get_event_msg!(
initiator_node,
MessageSendEvent::SendSpliceInit,
acceptor_node.node.get_our_node_id()
);

let _res =
acceptor_node.node.handle_splice_init(initiator_node.node.get_our_node_id(), &splice_msg);
// Extract the splice_ack message from node1 to node0
let splice_ack_msg = get_event_msg!(acceptor_node, MessageSendEvent::SendSpliceAck, initiator_node.node.get_our_node_id());
let splice_ack_msg = get_event_msg!(
acceptor_node,
MessageSendEvent::SendSpliceAck,
initiator_node.node.get_our_node_id()
);

// still pre-splice channel: capacity not updated, channel usable, and funding tx set
assert_eq!(acceptor_node.node.list_channels().len(), 1);
Expand All @@ -164,7 +257,9 @@ fn test_v1_splice_in() {
assert!(channel.confirmations.unwrap() > 0);
}

let _res = initiator_node.node.handle_splice_ack(acceptor_node.node.get_our_node_id(), &splice_ack_msg);
let _res = initiator_node
.node
.handle_splice_ack(acceptor_node.node.get_our_node_id(), &splice_ack_msg);

// still pre-splice channel: capacity not updated, channel usable, and funding tx set
assert_eq!(initiator_node.node.list_channels().len(), 1);
Expand All @@ -174,7 +269,10 @@ fn test_v1_splice_in() {
assert!(channel.is_usable);
assert!(channel.is_channel_ready);
assert_eq!(channel.channel_value_satoshis, channel_value_sat);
assert_eq!(channel.outbound_capacity_msat, 1000 * (channel_value_sat - channel_reserve_amnt_sat));
assert_eq!(
channel.outbound_capacity_msat,
1000 * (channel_value_sat - channel_reserve_amnt_sat)
);
assert!(channel.funding_txo.is_some());
assert!(channel.confirmations.unwrap() > 0);
}
Expand All @@ -185,9 +283,23 @@ fn test_v1_splice_in() {

// === Close channel, cooperatively
initiator_node.node.close_channel(&channel_id2, &acceptor_node.node.get_our_node_id()).unwrap();
let node0_shutdown_message = get_event_msg!(initiator_node, MessageSendEvent::SendShutdown, acceptor_node.node.get_our_node_id());
acceptor_node.node.handle_shutdown(initiator_node.node.get_our_node_id(), &node0_shutdown_message);
let nodes_1_shutdown = get_event_msg!(acceptor_node, MessageSendEvent::SendShutdown, initiator_node.node.get_our_node_id());
let node0_shutdown_message = get_event_msg!(
initiator_node,
MessageSendEvent::SendShutdown,
acceptor_node.node.get_our_node_id()
);
acceptor_node
.node
.handle_shutdown(initiator_node.node.get_our_node_id(), &node0_shutdown_message);
let nodes_1_shutdown = get_event_msg!(
acceptor_node,
MessageSendEvent::SendShutdown,
initiator_node.node.get_our_node_id()
);
initiator_node.node.handle_shutdown(acceptor_node.node.get_our_node_id(), &nodes_1_shutdown);
let _ = get_event_msg!(initiator_node, MessageSendEvent::SendClosingSigned, acceptor_node.node.get_our_node_id());
let _ = get_event_msg!(
initiator_node,
MessageSendEvent::SendClosingSigned,
acceptor_node.node.get_our_node_id()
);
}

0 comments on commit 3a3ff71

Please sign in to comment.