Skip to content

Commit 395728c

Browse files
committed
WIP Introduce AnchorChannelsConfig
1 parent eb192a9 commit 395728c

File tree

3 files changed

+57
-1
lines changed

3 files changed

+57
-1
lines changed

bindings/ldk_node.udl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ dictionary Config {
1515
sequence<PublicKey> trusted_peers_0conf;
1616
u64 probing_liquidity_limit_multiplier;
1717
LogLevel log_level;
18+
AnchorChannelsConfig? anchor_channels_config;
19+
};
20+
21+
dictionary AnchorChannelsConfig {
22+
sequence<PublicKey> trusted_peers_no_reserve;
23+
u64 per_channel_reserve_sats;
1824
};
1925

2026
interface Builder {

src/config.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const DEFAULT_LDK_WALLET_SYNC_INTERVAL_SECS: u64 = 30;
1515
const DEFAULT_FEE_RATE_CACHE_UPDATE_INTERVAL_SECS: u64 = 60 * 10;
1616
const DEFAULT_PROBING_LIQUIDITY_LIMIT_MULTIPLIER: u64 = 3;
1717
const DEFAULT_LOG_LEVEL: LogLevel = LogLevel::Debug;
18+
const DEFAULT_ANCHOR_PER_CHANNEL_RESERVE_SATS: u64 = 25_000;
1819

1920
// The 'stop gap' parameter used by BDK's wallet sync. This seems to configure the threshold
2021
// number of derivation indexes after which BDK stops looking for new scripts belonging to the wallet.
@@ -104,6 +105,17 @@ pub struct Config {
104105
///
105106
/// Any messages below this level will be excluded from the logs.
106107
pub log_level: LogLevel,
108+
/// Configuration options pertaining to 'Anchor' channels, i.e., channels for which the
109+
/// `option_anchors_zero_fee_htlc_tx` channel type is negotiated.
110+
///
111+
/// If set to `None`, new channels will be negotiated with the legacy `option_static_remotekey` channel type.
112+
///
113+
/// TODO: improve docs/explanation of Anchor channels.
114+
///
115+
/// See [`BOLT 3`] for more information.
116+
///
117+
/// [`BOLT3`]: https://github.com/lightning/bolts/blob/master/03-transactions.md#htlc-timeout-and-htlc-success-transactions
118+
pub anchor_channels_config: Option<AnchorChannelsConfig>,
107119
}
108120

109121
impl Default for Config {
@@ -120,6 +132,44 @@ impl Default for Config {
120132
trusted_peers_0conf: Vec::new(),
121133
probing_liquidity_limit_multiplier: DEFAULT_PROBING_LIQUIDITY_LIMIT_MULTIPLIER,
122134
log_level: DEFAULT_LOG_LEVEL,
135+
anchor_channels_config: Some(AnchorChannelsConfig::default()),
136+
}
137+
}
138+
}
139+
140+
/// Configuration options pertaining to 'Anchor' channels, i.e., channels for which the
141+
/// `option_anchors_zero_fee_htlc_tx` channel type is negotiated.
142+
///
143+
/// ### Defaults
144+
///
145+
/// | Parameter | Value |
146+
/// |--------------------------|--------|
147+
/// | trusted_peers_no_reserve | [] |
148+
/// | per_channel_reserve_sats | 25000 |
149+
///
150+
#[derive(Debug, Clone)]
151+
pub struct AnchorChannelsConfig {
152+
/// A list of peers which we trust to spend the anchor output *for us* on channel closing.
153+
///
154+
/// Channels with these peers won't count towards the retained on-chain reserve.
155+
///
156+
/// **Note:** Trusting the channel counterparty to spend the anchor output is potentially
157+
/// insecure as the channel may not be closed if they refuse to do so, potentially leaving the
158+
/// user funds stuck.
159+
pub trusted_peers_no_reserve: Vec<PublicKey>,
160+
/// The amount of satoshis we keep as an emergency reserve in our on-chain wallet in order to
161+
/// be able to spend the Anchor output on channel close.
162+
///
163+
/// Note that, depending on the fee market at the time of closure, this amount might or might
164+
/// not suffice to successfully spend the Anchor output.
165+
pub per_channel_reserve_sats: u64,
166+
}
167+
168+
impl Default for AnchorChannelsConfig {
169+
fn default() -> Self {
170+
Self {
171+
trusted_peers_no_reserve: Vec::new(),
172+
per_channel_reserve_sats: DEFAULT_ANCHOR_PER_CHANNEL_RESERVE_SATS,
123173
}
124174
}
125175
}

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ pub use lightning;
100100
pub use lightning_invoice;
101101

102102
pub use balance::{BalanceDetails, LightningBalance, PendingSweepBalance};
103-
pub use config::{default_config, Config};
103+
pub use config::{default_config, AnchorChannelsConfig, Config};
104104
pub use error::Error as NodeError;
105105
use error::Error;
106106

0 commit comments

Comments
 (0)