From e586047c7d89deeeb1175207e02a104a009604ba Mon Sep 17 00:00:00 2001 From: Wilmer Paulino Date: Mon, 14 Aug 2023 09:03:00 -0700 Subject: [PATCH] Add anchors flag to openchannel CLI command --- src/cli.rs | 28 +++++++++++++++++----------- src/main.rs | 1 + 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/cli.rs b/src/cli.rs index 8e96fd8..dab8bac 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -93,7 +93,7 @@ pub(crate) async fn poll_for_user_input( let peer_pubkey_and_ip_addr = words.next(); let channel_value_sat = words.next(); if peer_pubkey_and_ip_addr.is_none() || channel_value_sat.is_none() { - println!("ERROR: openchannel has 2 required arguments: `openchannel pubkey@host:port channel_amt_satoshis` [--public]"); + println!("ERROR: openchannel has 2 required arguments: `openchannel pubkey@host:port channel_amt_satoshis` [--public] [--with-anchors]"); continue; } let peer_pubkey_and_ip_addr = peer_pubkey_and_ip_addr.unwrap(); @@ -119,20 +119,25 @@ pub(crate) async fn poll_for_user_input( continue; }; - let announce_channel = match words.next() { - Some("--public") | Some("--public=true") => true, - Some("--public=false") => false, - Some(_) => { - println!("ERROR: invalid `--public` command format. Valid formats: `--public`, `--public=true` `--public=false`"); - continue; + let (mut announce_channel, mut with_anchors) = (false, false); + while let Some(word) = words.next() { + match word { + "--public" | "--public=true" => announce_channel = true, + "--public=false" => announce_channel = false, + "--with-anchors" | "--with-anchors=true" => with_anchors = true, + "--with-anchors=false" => with_anchors = false, + _ => { + println!("ERROR: invalid boolean flag format. Valid formats: `--option`, `--option=true` `--option=false`"); + continue; + } } - None => false, - }; + } if open_channel( pubkey, chan_amt_sat.unwrap(), announce_channel, + with_anchors, channel_manager.clone(), ) .is_ok() @@ -455,7 +460,7 @@ fn help() { println!(" help\tShows a list of commands."); println!(" quit\tClose the application."); println!("\n Channels:"); - println!(" openchannel pubkey@host:port [--public]"); + println!(" openchannel pubkey@host:port [--public] [--with-anchors]"); println!(" closechannel "); println!(" forceclosechannel "); println!(" listchannels"); @@ -638,7 +643,7 @@ fn do_disconnect_peer( } fn open_channel( - peer_pubkey: PublicKey, channel_amt_sat: u64, announced_channel: bool, + peer_pubkey: PublicKey, channel_amt_sat: u64, announced_channel: bool, with_anchors: bool, channel_manager: Arc, ) -> Result<(), ()> { let config = UserConfig { @@ -649,6 +654,7 @@ fn open_channel( }, channel_handshake_config: ChannelHandshakeConfig { announced_channel, + negotiate_anchors_zero_fee_htlc_tx: with_anchors, ..Default::default() }, ..Default::default() diff --git a/src/main.rs b/src/main.rs index f1e1cbf..9fd1190 100644 --- a/src/main.rs +++ b/src/main.rs @@ -607,6 +607,7 @@ async fn start_ldk() { // Step 11: Initialize the ChannelManager let mut user_config = UserConfig::default(); user_config.channel_handshake_limits.force_announced_channel_preference = false; + user_config.channel_handshake_config.negotiate_anchors_zero_fee_htlc_tx = true; user_config.manually_accept_inbound_channels = true; let mut restarting_node = true; let (channel_manager_blockhash, channel_manager) = { -- 2.30.2