4
4
use ln:: channelmanager:: { BREAKDOWN_TIMEOUT , MAX_LOCAL_BREAKDOWN_TIMEOUT } ;
5
5
6
6
/// Top-level config which holds ChannelHandshakeLimits and ChannelConfig.
7
+ ///
8
+ /// Default::default() provides sane defaults for most configurations
9
+ /// (but currently with 0 relay fees!)
7
10
#[ derive( Clone , Debug ) ]
8
11
pub struct UserConfig {
9
12
/// Channel config that we propose to our counterparty.
@@ -14,41 +17,44 @@ pub struct UserConfig {
14
17
pub channel_options : ChannelConfig ,
15
18
}
16
19
17
- impl UserConfig {
18
- /// Provides sane defaults for most configurations (but with 0 relay fees!)
19
- pub fn new ( ) -> Self {
20
+ impl Default for UserConfig {
21
+ fn default ( ) -> Self {
20
22
UserConfig {
21
- own_channel_config : ChannelHandshakeConfig :: new ( ) ,
22
- peer_channel_config_limits : ChannelHandshakeLimits :: new ( ) ,
23
- channel_options : ChannelConfig :: new ( ) ,
23
+ own_channel_config : ChannelHandshakeConfig :: default ( ) ,
24
+ peer_channel_config_limits : ChannelHandshakeLimits :: default ( ) ,
25
+ channel_options : ChannelConfig :: default ( ) ,
24
26
}
25
27
}
26
28
}
27
29
28
30
/// Configuration we set when applicable.
31
+ ///
32
+ /// Default::default() provides sane defaults.
29
33
#[ derive( Clone , Debug ) ]
30
34
pub struct ChannelHandshakeConfig {
31
35
/// Confirmations we will wait for before considering the channel locked in.
32
36
/// Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
33
37
/// equivalent limit applied to outbound channels).
38
+ ///
39
+ /// Default value: 6.
34
40
pub minimum_depth : u32 ,
35
41
/// Set to the amount of time we require our counterparty to wait to claim their money.
36
42
///
37
43
/// It's one of the main parameter of our security model. We (or one of our watchtowers) MUST
38
44
/// be online to check for peer having broadcast a revoked transaction to steal our funds
39
45
/// at least once every our_to_self_delay blocks.
40
- /// Default is BREAKDOWN_TIMEOUT, we enforce it as a minimum at channel opening so you can
41
- /// tweak config to ask for more security, not less.
42
46
///
43
47
/// Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
44
48
/// case of an honest unilateral channel close, which implicitly decrease the economic value of
45
49
/// our channel.
50
+ ///
51
+ /// Default value: BREAKDOWN_TIMEOUT (currently 144), we enforce it as a minimum at channel
52
+ /// opening so you can tweak config to ask for more security, not less.
46
53
pub our_to_self_delay : u16 ,
47
54
}
48
55
49
- impl ChannelHandshakeConfig {
50
- /// Provides sane defaults for `ChannelHandshakeConfig`
51
- pub fn new ( ) -> ChannelHandshakeConfig {
56
+ impl Default for ChannelHandshakeConfig {
57
+ fn default ( ) -> ChannelHandshakeConfig {
52
58
ChannelHandshakeConfig {
53
59
minimum_depth : 6 ,
54
60
our_to_self_delay : BREAKDOWN_TIMEOUT ,
@@ -61,23 +67,39 @@ impl ChannelHandshakeConfig {
61
67
/// These limits are only applied to our counterparty's limits, not our own.
62
68
///
63
69
/// Use 0/<type>::max_value() as appropriate to skip checking.
70
+ ///
71
+ /// Provides sane defaults for most configurations.
72
+ ///
73
+ /// Most additional limits are disabled except those with which specify a default in individual
74
+ /// field documentation. Note that this may result in barely-usable channels, but since they
75
+ /// are applied mostly only to incoming channels that's not much of a problem.
64
76
#[ derive( Copy , Clone , Debug ) ]
65
77
pub struct ChannelHandshakeLimits {
66
78
/// Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
67
79
/// only applies to inbound channels.
80
+ ///
81
+ /// Default value: 0.
68
82
pub min_funding_satoshis : u64 ,
69
83
/// The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
70
84
/// you to limit the maximum minimum-size they can require.
85
+ ///
86
+ /// Default value: u64::max_value.
71
87
pub max_htlc_minimum_msat : u64 ,
72
88
/// The remote node sets a limit on the maximum value of pending HTLCs to them at any given
73
89
/// time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
90
+ ///
91
+ /// Default value: 0.
74
92
pub min_max_htlc_value_in_flight_msat : u64 ,
75
93
/// The remote node will require we keep a certain amount in direct payment to ourselves at all
76
94
/// time, ensuring that we are able to be punished if we broadcast an old state. This allows to
77
95
/// you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
96
+ ///
97
+ /// Default value: u64::max_value.
78
98
pub max_channel_reserve_satoshis : u64 ,
79
99
/// The remote node sets a limit on the maximum number of pending HTLCs to them at any given
80
100
/// time. This allows you to set a minimum such value.
101
+ ///
102
+ /// Default value: 0.
81
103
pub min_max_accepted_htlcs : u16 ,
82
104
/// Outputs below a certain value will not be added to on-chain transactions. The dust value is
83
105
/// required to always be higher than this value so this only applies to HTLC outputs (and
@@ -86,39 +108,40 @@ pub struct ChannelHandshakeLimits {
86
108
/// This setting allows you to set a minimum dust limit for their commitment transactions,
87
109
/// reflecting the reality that tiny outputs are not considered standard transactions and will
88
110
/// not propagate through the Bitcoin network.
89
- /// Defaults to 546, or the current dust limit on the Bitcoin network.
111
+ ///
112
+ /// Default value: 546, the current dust limit on the Bitcoin network.
90
113
pub min_dust_limit_satoshis : u64 ,
91
114
/// Maximum allowed threshold above which outputs will not be generated in their commitment
92
115
/// transactions.
93
116
/// HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
117
+ ///
118
+ /// Default value: u64::max_value.
94
119
pub max_dust_limit_satoshis : u64 ,
95
120
/// Before a channel is usable the funding transaction will need to be confirmed by at least a
96
121
/// certain number of blocks, specified by the node which is not the funder (as the funder can
97
122
/// assume they aren't going to double-spend themselves).
98
- /// This config allows you to set a limit on the maximum amount of time to wait. Defaults to
99
- /// 144 blocks or roughly one day and only applies to outbound channels.
123
+ /// This config allows you to set a limit on the maximum amount of time to wait.
124
+ ///
125
+ /// Default value: 144, or roughly one day and only applies to outbound channels.
100
126
pub max_minimum_depth : u32 ,
101
127
/// Set to force the incoming channel to match our announced channel preference in
102
128
/// ChannelConfig.
103
- /// Defaults to true to make the default that no announced channels are possible (which is
129
+ ///
130
+ /// Default value: true, to make the default that no announced channels are possible (which is
104
131
/// appropriate for any nodes which are not online very reliably).
105
132
pub force_announced_channel_preference : bool ,
106
133
/// Set to the amount of time we're willing to wait to claim money back to us.
107
134
///
108
135
/// Not checking this value would be a security issue, as our peer would be able to set it to
109
136
/// max relative lock-time (a year) and we would "lose" money as it would be locked for a long time.
110
- /// Default is MAX_LOCAL_BREAKDOWN_TIMEOUT, which we also enforce as a maximum value
137
+ ///
138
+ /// Default value: MAX_LOCAL_BREAKDOWN_TIMEOUT (1008), which we also enforce as a maximum value
111
139
/// so you can tweak config to reduce the loss of having useless locked funds (if your peer accepts)
112
140
pub their_to_self_delay : u16
113
141
}
114
142
115
- impl ChannelHandshakeLimits {
116
- /// Provides sane defaults for most configurations.
117
- ///
118
- /// Most additional limits are disabled except those with which specify a default in individual
119
- /// field documentation. Note that this may result in barely-usable channels, but since they
120
- /// are applied mostly only to incoming channels that's not much of a problem.
121
- pub fn new ( ) -> Self {
143
+ impl Default for ChannelHandshakeLimits {
144
+ fn default ( ) -> Self {
122
145
ChannelHandshakeLimits {
123
146
min_funding_satoshis : 0 ,
124
147
max_htlc_minimum_msat : <u64 >:: max_value ( ) ,
@@ -141,6 +164,8 @@ pub struct ChannelConfig {
141
164
/// Amount (in millionths of a satoshi) the channel will charge per transferred satoshi.
142
165
/// This may be allowed to change at runtime in a later update, however doing so must result in
143
166
/// update messages sent to notify all nodes of our updated relay fee.
167
+ ///
168
+ /// Default value: 0.
144
169
pub fee_proportional_millionths : u32 ,
145
170
/// Set to announce the channel publicly and notify all nodes that they can route via this
146
171
/// channel.
@@ -151,6 +176,8 @@ pub struct ChannelConfig {
151
176
/// channels unless ChannelHandshakeLimits::force_announced_channel_preferences is set.
152
177
///
153
178
/// This cannot be changed after the initial channel handshake.
179
+ ///
180
+ /// Default value: false.
154
181
pub announced_channel : bool ,
155
182
/// When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
156
183
/// supports it, they will then enforce the mutual-close output to us matches what we provided
@@ -161,12 +188,14 @@ pub struct ChannelConfig {
161
188
/// lightning payments, so we never require that our counterparties support this option.
162
189
///
163
190
/// This cannot be changed after a channel has been initialized.
191
+ ///
192
+ /// Default value: true.
164
193
pub commit_upfront_shutdown_pubkey : bool
165
194
}
166
195
167
- impl ChannelConfig {
196
+ impl Default for ChannelConfig {
168
197
/// Provides sane defaults for most configurations (but with zero relay fees!).
169
- pub fn new ( ) -> Self {
198
+ fn default ( ) -> Self {
170
199
ChannelConfig {
171
200
fee_proportional_millionths : 0 ,
172
201
announced_channel : false ,
0 commit comments