Skip to content

Commit 6555344

Browse files
committed
Add update channel config cli command
This was hooked up on the backend but not in the cli
1 parent a88e44d commit 6555344

2 files changed

Lines changed: 61 additions & 4 deletions

File tree

ldk-server-cli/src/main.rs

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ use ldk_server_client::ldk_server_protos::api::{
88
Bolt11ReceiveRequest, Bolt11SendRequest, Bolt12ReceiveRequest, Bolt12SendRequest,
99
CloseChannelRequest, ForceCloseChannelRequest, GetBalancesRequest, GetNodeInfoRequest,
1010
ListChannelsRequest, ListPaymentsRequest, OnchainReceiveRequest, OnchainSendRequest,
11-
OpenChannelRequest,
11+
OpenChannelRequest, UpdateChannelConfigRequest,
1212
};
1313
use ldk_server_client::ldk_server_protos::types::{
14-
bolt11_invoice_description, Bolt11InvoiceDescription, PageToken, Payment,
14+
bolt11_invoice_description, Bolt11InvoiceDescription, ChannelConfig, PageToken, Payment,
1515
};
1616
use std::fmt::Debug;
1717

@@ -110,6 +110,27 @@ enum Commands {
110110
)]
111111
number_of_payments: Option<u64>,
112112
},
113+
UpdateChannelConfig {
114+
#[arg(short, long)]
115+
user_channel_id: String,
116+
#[arg(short, long)]
117+
counterparty_node_id: String,
118+
#[arg(
119+
long,
120+
help = "Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound over the channel. This can be updated by using update-channel-config."
121+
)]
122+
forwarding_fee_proportional_millionths: Option<u32>,
123+
#[arg(
124+
long,
125+
help = "Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in excess of forwarding_fee_proportional_millionths. This can be updated by using update-channel-config."
126+
)]
127+
forwarding_fee_base_msat: Option<u32>,
128+
#[arg(
129+
long,
130+
help = "The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over the channel."
131+
)]
132+
cltv_expiry_delta: Option<u32>,
133+
},
113134
}
114135

115136
#[tokio::main]
@@ -233,6 +254,32 @@ async fn main() {
233254
Commands::ListPayments { number_of_payments } => {
234255
handle_response_result(list_n_payments(client, number_of_payments).await);
235256
},
257+
Commands::UpdateChannelConfig {
258+
user_channel_id,
259+
counterparty_node_id,
260+
forwarding_fee_proportional_millionths,
261+
forwarding_fee_base_msat,
262+
cltv_expiry_delta,
263+
} => {
264+
let channel_config = ChannelConfig {
265+
forwarding_fee_proportional_millionths,
266+
forwarding_fee_base_msat,
267+
cltv_expiry_delta,
268+
force_close_avoidance_max_fee_satoshis: None,
269+
accept_underpaying_htlcs: None,
270+
max_dust_htlc_exposure: None,
271+
};
272+
273+
handle_response_result(
274+
client
275+
.update_channel_config(UpdateChannelConfigRequest {
276+
user_channel_id,
277+
counterparty_node_id,
278+
channel_config: Some(channel_config),
279+
})
280+
.await,
281+
);
282+
},
236283
}
237284
}
238285

ldk-server-client/src/client.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@ use ldk_server_protos::api::{
1111
GetBalancesRequest, GetBalancesResponse, GetNodeInfoRequest, GetNodeInfoResponse,
1212
ListChannelsRequest, ListChannelsResponse, ListPaymentsRequest, ListPaymentsResponse,
1313
OnchainReceiveRequest, OnchainReceiveResponse, OnchainSendRequest, OnchainSendResponse,
14-
OpenChannelRequest, OpenChannelResponse,
14+
OpenChannelRequest, OpenChannelResponse, UpdateChannelConfigRequest,
15+
UpdateChannelConfigResponse,
1516
};
1617
use ldk_server_protos::endpoints::{
1718
BOLT11_RECEIVE_PATH, BOLT11_SEND_PATH, BOLT12_RECEIVE_PATH, BOLT12_SEND_PATH,
1819
CLOSE_CHANNEL_PATH, FORCE_CLOSE_CHANNEL_PATH, GET_BALANCES_PATH, GET_NODE_INFO_PATH,
1920
LIST_CHANNELS_PATH, LIST_PAYMENTS_PATH, ONCHAIN_RECEIVE_PATH, ONCHAIN_SEND_PATH,
20-
OPEN_CHANNEL_PATH,
21+
OPEN_CHANNEL_PATH, UPDATE_CHANNEL_CONFIG_PATH,
2122
};
2223
use ldk_server_protos::error::{ErrorCode, ErrorResponse};
2324
use reqwest::header::CONTENT_TYPE;
@@ -155,6 +156,15 @@ impl LdkServerClient {
155156
self.post_request(&request, &url).await
156157
}
157158

159+
/// Updates the config for a previously opened channel.
160+
/// For API contract/usage, refer to docs for [`UpdateChannelConfigRequest`] and [`UpdateChannelConfigResponse`].
161+
pub async fn update_channel_config(
162+
&self, request: UpdateChannelConfigRequest,
163+
) -> Result<UpdateChannelConfigResponse, LdkServerError> {
164+
let url = format!("http://{}/{UPDATE_CHANNEL_CONFIG_PATH}", self.base_url);
165+
self.post_request(&request, &url).await
166+
}
167+
158168
async fn post_request<Rq: Message, Rs: Message + Default>(
159169
&self, request: &Rq, url: &str,
160170
) -> Result<Rs, LdkServerError> {

0 commit comments

Comments
 (0)