Merge pull request #1957 from TheBlueMatt/2022-01-mon-ref-lockorder
[rust-lightning] / lightning / src / util / config.rs
index b2004df3e9cbd0c043c2b2ef184e538f267ea02a..18bba29fef414434b1fe4df2215e1dd59cbc3e7c 100644 (file)
@@ -10,8 +10,8 @@
 //! Various user-configurable channel limits and settings which ChannelManager
 //! applies for you.
 
-use ln::channel::MAX_FUNDING_SATOSHIS_NO_WUMBO;
-use ln::channelmanager::{BREAKDOWN_TIMEOUT, MAX_LOCAL_BREAKDOWN_TIMEOUT};
+use crate::ln::channel::MAX_FUNDING_SATOSHIS_NO_WUMBO;
+use crate::ln::channelmanager::{BREAKDOWN_TIMEOUT, MAX_LOCAL_BREAKDOWN_TIMEOUT};
 
 /// Configuration we set when applicable.
 ///
@@ -120,11 +120,11 @@ pub struct ChannelHandshakeConfig {
        /// any attacker who is able to take control of a channel can just as easily send the funds via
        /// lightning payments, so we never require that our counterparties support this option.
        ///
-       /// The upfront key committed is provided from [`KeysInterface::get_shutdown_scriptpubkey`].
+       /// The upfront key committed is provided from [`SignerProvider::get_shutdown_scriptpubkey`].
        ///
        /// Default value: true.
        ///
-       /// [`KeysInterface::get_shutdown_scriptpubkey`]: crate::chain::keysinterface::KeysInterface::get_shutdown_scriptpubkey
+       /// [`SignerProvider::get_shutdown_scriptpubkey`]: crate::chain::keysinterface::SignerProvider::get_shutdown_scriptpubkey
        pub commit_upfront_shutdown_pubkey: bool,
 
        /// The Proportion of the channel value to configure as counterparty's channel reserve,
@@ -171,7 +171,7 @@ impl Default for ChannelHandshakeConfig {
 ///
 /// These limits are only applied to our counterparty's limits, not our own.
 ///
-/// Use 0/<type>::max_value() as appropriate to skip checking.
+/// Use 0/`<type>::max_value()` as appropriate to skip checking.
 ///
 /// Provides sane defaults for most configurations.
 ///
@@ -274,7 +274,7 @@ impl Default for ChannelHandshakeLimits {
 
 /// Options which apply on a per-channel basis and may change at runtime or based on negotiation
 /// with our counterparty.
-#[derive(Copy, Clone, Debug, PartialEq)]
+#[derive(Copy, Clone, Debug, PartialEq, Eq)]
 pub struct ChannelConfig {
        /// Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound
        /// over the channel.
@@ -412,8 +412,8 @@ impl Default for LegacyChannelConfig {
        }
 }
 
-impl ::util::ser::Writeable for LegacyChannelConfig {
-       fn write<W: ::util::ser::Writer>(&self, writer: &mut W) -> Result<(), ::io::Error> {
+impl crate::util::ser::Writeable for LegacyChannelConfig {
+       fn write<W: crate::util::ser::Writer>(&self, writer: &mut W) -> Result<(), crate::io::Error> {
                write_tlv_fields!(writer, {
                        (0, self.options.forwarding_fee_proportional_millionths, required),
                        (1, self.options.max_dust_htlc_exposure_msat, (default_value, 5_000_000)),
@@ -427,8 +427,8 @@ impl ::util::ser::Writeable for LegacyChannelConfig {
        }
 }
 
-impl ::util::ser::Readable for LegacyChannelConfig {
-       fn read<R: ::io::Read>(reader: &mut R) -> Result<Self, ::ln::msgs::DecodeError> {
+impl crate::util::ser::Readable for LegacyChannelConfig {
+       fn read<R: crate::io::Read>(reader: &mut R) -> Result<Self, crate::ln::msgs::DecodeError> {
                let mut forwarding_fee_proportional_millionths = 0;
                let mut max_dust_htlc_exposure_msat = 5_000_000;
                let mut cltv_expiry_delta = 0;
@@ -505,6 +505,17 @@ pub struct UserConfig {
        /// [`msgs::OpenChannel`]: crate::ln::msgs::OpenChannel
        /// [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
        pub manually_accept_inbound_channels: bool,
+       ///  If this is set to true, LDK will intercept HTLCs that are attempting to be forwarded over
+       ///  fake short channel ids generated via [`ChannelManager::get_intercept_scid`]. Upon HTLC
+       ///  intercept, LDK will generate an [`Event::HTLCIntercepted`] which MUST be handled by the user.
+       ///
+       ///  Setting this to true may break backwards compatibility with LDK versions < 0.0.113.
+       ///
+       ///  Default value: false.
+       ///
+       /// [`ChannelManager::get_intercept_scid`]: crate::ln::channelmanager::ChannelManager::get_intercept_scid
+       /// [`Event::HTLCIntercepted`]: crate::util::events::Event::HTLCIntercepted
+       pub accept_intercept_htlcs: bool,
 }
 
 impl Default for UserConfig {
@@ -516,6 +527,7 @@ impl Default for UserConfig {
                        accept_forwards_to_priv_channels: false,
                        accept_inbound_channels: true,
                        manually_accept_inbound_channels: false,
+                       accept_intercept_htlcs: false,
                }
        }
 }