Skip to content

Commit c1f430a

Browse files
committed
Add dual_funding cfg flags
Reintroduce the dual_funding cfg flags in the most minimal way possible, where we just gate the open_channel_v2 and accept_channel_v2 handlers and wire messages.
1 parent 66b1ccf commit c1f430a

File tree

10 files changed

+29
-1
lines changed

10 files changed

+29
-1
lines changed

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,5 @@ check-cfg = [
6666
"cfg(require_route_graph_test)",
6767
"cfg(splicing)",
6868
"cfg(async_payments)",
69+
"cfg(dual_funding)",
6970
]

ci/ci-tests.sh

+2
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,5 @@ RUSTFLAGS="--cfg=trampoline" cargo test --verbose --color always -p lightning
136136
RUSTFLAGS="--cfg=async_payments" cargo test --verbose --color always -p lightning
137137
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
138138
RUSTFLAGS="--cfg=lsps1_service" cargo test --verbose --color always -p lightning-liquidity
139+
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
140+
RUSTFLAGS="--cfg=dual_funding" cargo test --verbose --color always -p lightning

lightning-net-tokio/src/lib.rs

+2
Original file line numberDiff line numberDiff line change
@@ -743,7 +743,9 @@ mod tests {
743743
) {
744744
}
745745
fn handle_channel_update(&self, _their_node_id: PublicKey, _msg: &ChannelUpdate) {}
746+
#[cfg(dual_funding)]
746747
fn handle_open_channel_v2(&self, _their_node_id: PublicKey, _msg: &OpenChannelV2) {}
748+
#[cfg(dual_funding)]
747749
fn handle_accept_channel_v2(&self, _their_node_id: PublicKey, _msg: &AcceptChannelV2) {}
748750
fn handle_stfu(&self, _their_node_id: PublicKey, _msg: &Stfu) {}
749751
#[cfg(splicing)]

lightning/src/ln/channel.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4576,7 +4576,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
45764576
})
45774577
}
45784578

4579-
#[cfg(all(test))]
4579+
#[cfg(all(test, dual_funding))]
45804580
pub fn get_initial_counterparty_commitment_signature_for_test<L: Deref>(
45814581
&mut self, funding: &mut FundingScope, logger: &L,
45824582
counterparty_cur_commitment_point_override: PublicKey,

lightning/src/ln/channelmanager.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1454,6 +1454,7 @@ pub(super) enum OpenChannelMessage {
14541454

14551455
pub(super) enum OpenChannelMessageRef<'a> {
14561456
V1(&'a msgs::OpenChannel),
1457+
#[allow(dead_code)] // TODO(dual_funding): Remove once dual_funding cfg flags removed.
14571458
V2(&'a msgs::OpenChannelV2),
14581459
}
14591460

@@ -11650,6 +11651,7 @@ where
1165011651
});
1165111652
}
1165211653

11654+
#[cfg(dual_funding)]
1165311655
fn handle_open_channel_v2(&self, counterparty_node_id: PublicKey, msg: &msgs::OpenChannelV2) {
1165411656
// Note that we never need to persist the updated ChannelManager for an inbound
1165511657
// open_channel message - pre-funded channels are never written so there should be no
@@ -11678,6 +11680,7 @@ where
1167811680
});
1167911681
}
1168011682

11683+
#[cfg(dual_funding)]
1168111684
fn handle_accept_channel_v2(&self, counterparty_node_id: PublicKey, msg: &msgs::AcceptChannelV2) {
1168211685
let _: Result<(), _> = handle_error!(self, Err(MsgHandleErrInternal::send_err_msg_no_close(
1168311686
"Dual-funded channels not supported".to_owned(),

lightning/src/ln/dual_funding_tests.rs

+4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
//! Tests that test the creation of dual-funded channels in ChannelManager.
1111
12+
#[cfg(dual_funding)]
1213
use {
1314
crate::chain::chaininterface::{ConfirmationTarget, LowerBoundedFeeEstimator},
1415
crate::events::{Event, MessageSendEvent, MessageSendEventsProvider},
@@ -29,13 +30,15 @@ use {
2930
};
3031

3132
// Dual-funding: V2 Channel Establishment Tests
33+
#[cfg(dual_funding)]
3234
struct V2ChannelEstablishmentTestSession {
3335
funding_input_sats: u64,
3436
initiator_input_value_satoshis: u64,
3537
}
3638

3739
// TODO(dual_funding): Use real node and API for creating V2 channels as initiator when available,
3840
// instead of manually constructing messages.
41+
#[cfg(dual_funding)]
3942
fn do_test_v2_channel_establishment(session: V2ChannelEstablishmentTestSession) {
4043
let chanmon_cfgs = create_chanmon_cfgs(2);
4144
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
@@ -242,6 +245,7 @@ fn do_test_v2_channel_establishment(session: V2ChannelEstablishmentTestSession)
242245
}
243246

244247
#[test]
248+
#[cfg(dual_funding)]
245249
fn test_v2_channel_establishment() {
246250
do_test_v2_channel_establishment(V2ChannelEstablishmentTestSession {
247251
funding_input_sats: 100_00,

lightning/src/ln/msgs.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1538,10 +1538,12 @@ pub trait ChannelMessageHandler : MessageSendEventsProvider {
15381538
/// Handle an incoming `open_channel` message from the given peer.
15391539
fn handle_open_channel(&self, their_node_id: PublicKey, msg: &OpenChannel);
15401540
/// Handle an incoming `open_channel2` message from the given peer.
1541+
#[cfg(dual_funding)]
15411542
fn handle_open_channel_v2(&self, their_node_id: PublicKey, msg: &OpenChannelV2);
15421543
/// Handle an incoming `accept_channel` message from the given peer.
15431544
fn handle_accept_channel(&self, their_node_id: PublicKey, msg: &AcceptChannel);
15441545
/// Handle an incoming `accept_channel2` message from the given peer.
1546+
#[cfg(dual_funding)]
15451547
fn handle_accept_channel_v2(&self, their_node_id: PublicKey, msg: &AcceptChannelV2);
15461548
/// Handle an incoming `funding_created` message from the given peer.
15471549
fn handle_funding_created(&self, their_node_id: PublicKey, msg: &FundingCreated);

lightning/src/ln/peer_handler.rs

+4
Original file line numberDiff line numberDiff line change
@@ -361,10 +361,12 @@ impl ChannelMessageHandler for ErroringMessageHandler {
361361
None
362362
}
363363

364+
#[cfg(dual_funding)]
364365
fn handle_open_channel_v2(&self, their_node_id: PublicKey, msg: &msgs::OpenChannelV2) {
365366
ErroringMessageHandler::push_error(self, their_node_id, msg.common_fields.temporary_channel_id);
366367
}
367368

369+
#[cfg(dual_funding)]
368370
fn handle_accept_channel_v2(&self, their_node_id: PublicKey, msg: &msgs::AcceptChannelV2) {
369371
ErroringMessageHandler::push_error(self, their_node_id, msg.common_fields.temporary_channel_id);
370372
}
@@ -1832,12 +1834,14 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
18321834
wire::Message::OpenChannel(msg) => {
18331835
self.message_handler.chan_handler.handle_open_channel(their_node_id, &msg);
18341836
},
1837+
#[cfg(dual_funding)]
18351838
wire::Message::OpenChannelV2(_msg) => {
18361839
self.message_handler.chan_handler.handle_open_channel_v2(their_node_id, &_msg);
18371840
},
18381841
wire::Message::AcceptChannel(msg) => {
18391842
self.message_handler.chan_handler.handle_accept_channel(their_node_id, &msg);
18401843
},
1844+
#[cfg(dual_funding)]
18411845
wire::Message::AcceptChannelV2(msg) => {
18421846
self.message_handler.chan_handler.handle_accept_channel_v2(their_node_id, &msg);
18431847
},

lightning/src/ln/wire.rs

+8
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,10 @@ pub(crate) enum Message<T: core::fmt::Debug + Type + TestEq> {
5757
PeerStorage(msgs::PeerStorage),
5858
PeerStorageRetrieval(msgs::PeerStorageRetrieval),
5959
OpenChannel(msgs::OpenChannel),
60+
#[cfg(dual_funding)]
6061
OpenChannelV2(msgs::OpenChannelV2),
6162
AcceptChannel(msgs::AcceptChannel),
63+
#[cfg(dual_funding)]
6264
AcceptChannelV2(msgs::AcceptChannelV2),
6365
FundingCreated(msgs::FundingCreated),
6466
FundingSigned(msgs::FundingSigned),
@@ -117,8 +119,10 @@ impl<T: core::fmt::Debug + Type + TestEq> Writeable for Message<T> {
117119
&Message::PeerStorage(ref msg) => msg.write(writer),
118120
&Message::PeerStorageRetrieval(ref msg) => msg.write(writer),
119121
&Message::OpenChannel(ref msg) => msg.write(writer),
122+
#[cfg(dual_funding)]
120123
&Message::OpenChannelV2(ref msg) => msg.write(writer),
121124
&Message::AcceptChannel(ref msg) => msg.write(writer),
125+
#[cfg(dual_funding)]
122126
&Message::AcceptChannelV2(ref msg) => msg.write(writer),
123127
&Message::FundingCreated(ref msg) => msg.write(writer),
124128
&Message::FundingSigned(ref msg) => msg.write(writer),
@@ -177,8 +181,10 @@ impl<T: core::fmt::Debug + Type + TestEq> Type for Message<T> {
177181
&Message::PeerStorage(ref msg) => msg.type_id(),
178182
&Message::PeerStorageRetrieval(ref msg) => msg.type_id(),
179183
&Message::OpenChannel(ref msg) => msg.type_id(),
184+
#[cfg(dual_funding)]
180185
&Message::OpenChannelV2(ref msg) => msg.type_id(),
181186
&Message::AcceptChannel(ref msg) => msg.type_id(),
187+
#[cfg(dual_funding)]
182188
&Message::AcceptChannelV2(ref msg) => msg.type_id(),
183189
&Message::FundingCreated(ref msg) => msg.type_id(),
184190
&Message::FundingSigned(ref msg) => msg.type_id(),
@@ -267,8 +273,10 @@ where
267273
Ok(Message::PeerStorageRetrieval(Readable::read(buffer)?))
268274
},
269275
msgs::OpenChannel::TYPE => Ok(Message::OpenChannel(Readable::read(buffer)?)),
276+
#[cfg(dual_funding)]
270277
msgs::OpenChannelV2::TYPE => Ok(Message::OpenChannelV2(Readable::read(buffer)?)),
271278
msgs::AcceptChannel::TYPE => Ok(Message::AcceptChannel(Readable::read(buffer)?)),
279+
#[cfg(dual_funding)]
272280
msgs::AcceptChannelV2::TYPE => Ok(Message::AcceptChannelV2(Readable::read(buffer)?)),
273281
msgs::FundingCreated::TYPE => Ok(Message::FundingCreated(Readable::read(buffer)?)),
274282
msgs::FundingSigned::TYPE => Ok(Message::FundingSigned(Readable::read(buffer)?)),

lightning/src/util/test_utils.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1061,10 +1061,12 @@ impl msgs::ChannelMessageHandler for TestChannelMessageHandler {
10611061
Some(vec![self.chain_hash])
10621062
}
10631063

1064+
#[cfg(dual_funding)]
10641065
fn handle_open_channel_v2(&self, _their_node_id: PublicKey, msg: &msgs::OpenChannelV2) {
10651066
self.received_msg(wire::Message::OpenChannelV2(msg.clone()));
10661067
}
10671068

1069+
#[cfg(dual_funding)]
10681070
fn handle_accept_channel_v2(&self, _their_node_id: PublicKey, msg: &msgs::AcceptChannelV2) {
10691071
self.received_msg(wire::Message::AcceptChannelV2(msg.clone()));
10701072
}

0 commit comments

Comments
 (0)