Package org.ldk.structs
Class ChannelConfig
- java.lang.Object
-
- org.ldk.structs.ChannelConfig
-
public class ChannelConfig extends Object
Options which apply on a per-channel basis and may change at runtime or based on negotiation with our counterparty.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ChannelConfig
clone()
Creates a copy of the ChannelConfigprotected void
finalize()
boolean
get_announced_channel()
Set to announce the channel publicly and notify all nodes that they can route via this channel.short
get_cltv_expiry_delta()
The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over the channel this config applies to.boolean
get_commit_upfront_shutdown_pubkey()
When set, we commit to an upfront shutdown_pubkey at channel open.long
get_force_close_avoidance_max_fee_satoshis()
The additional fee we're willing to pay to avoid waiting for the counterparty's `to_self_delay` to reclaim funds.int
get_forwarding_fee_base_msat()
Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in excess of [`forwarding_fee_proportional_millionths`].int
get_forwarding_fee_proportional_millionths()
Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound over the channel.long
get_max_dust_htlc_exposure_msat()
Limit our total exposure to in-flight HTLCs which are burned to fees as they are too small to claim on-chain.static ChannelConfig
of(int forwarding_fee_proportional_millionths_arg, int forwarding_fee_base_msat_arg, short cltv_expiry_delta_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg, long max_dust_htlc_exposure_msat_arg, long force_close_avoidance_max_fee_satoshis_arg)
Constructs a new ChannelConfig given each fieldstatic Result_ChannelConfigDecodeErrorZ
read(byte[] ser)
Read a ChannelConfig from a byte array, created by ChannelConfig_writevoid
set_announced_channel(boolean val)
Set to announce the channel publicly and notify all nodes that they can route via this channel.void
set_cltv_expiry_delta(short val)
The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over the channel this config applies to.void
set_commit_upfront_shutdown_pubkey(boolean val)
When set, we commit to an upfront shutdown_pubkey at channel open.void
set_force_close_avoidance_max_fee_satoshis(long val)
The additional fee we're willing to pay to avoid waiting for the counterparty's `to_self_delay` to reclaim funds.void
set_forwarding_fee_base_msat(int val)
Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in excess of [`forwarding_fee_proportional_millionths`].void
set_forwarding_fee_proportional_millionths(int val)
Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound over the channel.void
set_max_dust_htlc_exposure_msat(long val)
Limit our total exposure to in-flight HTLCs which are burned to fees as they are too small to claim on-chain.static ChannelConfig
with_default()
Creates a "default" ChannelConfig.byte[]
write()
Serialize the ChannelConfig object into a byte array which can be read by ChannelConfig_read
-
-
-
Method Detail
-
finalize
protected void finalize() throws Throwable
-
get_forwarding_fee_proportional_millionths
public int get_forwarding_fee_proportional_millionths()
Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound over the channel. This may be allowed to change at runtime in a later update, however doing so must result in update messages sent to notify all nodes of our updated relay fee. Default value: 0.
-
set_forwarding_fee_proportional_millionths
public void set_forwarding_fee_proportional_millionths(int val)
Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound over the channel. This may be allowed to change at runtime in a later update, however doing so must result in update messages sent to notify all nodes of our updated relay fee. Default value: 0.
-
get_forwarding_fee_base_msat
public int get_forwarding_fee_base_msat()
Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in excess of [`forwarding_fee_proportional_millionths`]. This may be allowed to change at runtime in a later update, however doing so must result in update messages sent to notify all nodes of our updated relay fee. The default value of a single satoshi roughly matches the market rate on many routing nodes as of July 2021. Adjusting it upwards or downwards may change whether nodes route through this node. Default value: 1000. [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
-
set_forwarding_fee_base_msat
public void set_forwarding_fee_base_msat(int val)
Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in excess of [`forwarding_fee_proportional_millionths`]. This may be allowed to change at runtime in a later update, however doing so must result in update messages sent to notify all nodes of our updated relay fee. The default value of a single satoshi roughly matches the market rate on many routing nodes as of July 2021. Adjusting it upwards or downwards may change whether nodes route through this node. Default value: 1000. [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
-
get_cltv_expiry_delta
public short get_cltv_expiry_delta()
The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over the channel this config applies to. This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight HTLC balance when a channel appears on-chain whereas [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining (non-HTLC-encumbered) balance. Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed, we (or one of our watchtowers) MUST be online to check for broadcast of the current commitment transaction at least once per this many blocks (minus some margin to allow us enough time to broadcast and confirm a transaction, possibly with time in between to RBF the spending transaction). Default value: 72 (12 hours at an average of 6 blocks/hour). Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as [`MIN_CLTV_EXPIRY_DELTA`] instead. [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
-
set_cltv_expiry_delta
public void set_cltv_expiry_delta(short val)
The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over the channel this config applies to. This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight HTLC balance when a channel appears on-chain whereas [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining (non-HTLC-encumbered) balance. Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed, we (or one of our watchtowers) MUST be online to check for broadcast of the current commitment transaction at least once per this many blocks (minus some margin to allow us enough time to broadcast and confirm a transaction, possibly with time in between to RBF the spending transaction). Default value: 72 (12 hours at an average of 6 blocks/hour). Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as [`MIN_CLTV_EXPIRY_DELTA`] instead. [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
-
get_announced_channel
public boolean get_announced_channel()
Set to announce the channel publicly and notify all nodes that they can route via this channel. This should only be set to true for nodes which expect to be online reliably. As the node which funds a channel picks this value this will only apply for new outbound channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set. This cannot be changed after the initial channel handshake. Default value: false.
-
set_announced_channel
public void set_announced_channel(boolean val)
Set to announce the channel publicly and notify all nodes that they can route via this channel. This should only be set to true for nodes which expect to be online reliably. As the node which funds a channel picks this value this will only apply for new outbound channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set. This cannot be changed after the initial channel handshake. Default value: false.
-
get_commit_upfront_shutdown_pubkey
public boolean get_commit_upfront_shutdown_pubkey()
When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty supports it, they will then enforce the mutual-close output to us matches what we provided at intialization, preventing us from closing to an alternate pubkey. This is set to true by default to provide a slight increase in security, though ultimately 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. This cannot be changed after a channel has been initialized. Default value: true.
-
set_commit_upfront_shutdown_pubkey
public void set_commit_upfront_shutdown_pubkey(boolean val)
When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty supports it, they will then enforce the mutual-close output to us matches what we provided at intialization, preventing us from closing to an alternate pubkey. This is set to true by default to provide a slight increase in security, though ultimately 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. This cannot be changed after a channel has been initialized. Default value: true.
-
get_max_dust_htlc_exposure_msat
public long get_max_dust_htlc_exposure_msat()
Limit our total exposure to in-flight HTLCs which are burned to fees as they are too small to claim on-chain. When an HTLC present in one of our channels is below a \"dust\" threshold, the HTLC will not be claimable on-chain, instead being turned into additional miner fees if either party force-closes the channel. Because the threshold is per-HTLC, our total exposure to such payments may be sustantial if there are many dust HTLCs present when the channel is force-closed. This limit is applied for sent, forwarded, and received HTLCs and limits the total exposure across all three types per-channel. Setting this too low may prevent the sending or receipt of low-value HTLCs on high-traffic nodes, and this limit is very important to prevent stealing of dust HTLCs by miners. Default value: 5_000_000 msat.
-
set_max_dust_htlc_exposure_msat
public void set_max_dust_htlc_exposure_msat(long val)
Limit our total exposure to in-flight HTLCs which are burned to fees as they are too small to claim on-chain. When an HTLC present in one of our channels is below a \"dust\" threshold, the HTLC will not be claimable on-chain, instead being turned into additional miner fees if either party force-closes the channel. Because the threshold is per-HTLC, our total exposure to such payments may be sustantial if there are many dust HTLCs present when the channel is force-closed. This limit is applied for sent, forwarded, and received HTLCs and limits the total exposure across all three types per-channel. Setting this too low may prevent the sending or receipt of low-value HTLCs on high-traffic nodes, and this limit is very important to prevent stealing of dust HTLCs by miners. Default value: 5_000_000 msat.
-
get_force_close_avoidance_max_fee_satoshis
public long get_force_close_avoidance_max_fee_satoshis()
The additional fee we're willing to pay to avoid waiting for the counterparty's `to_self_delay` to reclaim funds. When we close a channel cooperatively with our counterparty, we negotiate a fee for the closing transaction which both sides find acceptable, ultimately paid by the channel funder/initiator. When we are the funder, because we have to pay the channel closing fee, we bound the acceptable fee by our [`Background`] and [`Normal`] fees, with the upper bound increased by this value. Because the on-chain fee we'd pay to force-close the channel is kept near our [`Normal`] feerate during normal operation, this value represents the additional fee we're willing to pay in order to avoid waiting for our counterparty's to_self_delay to reclaim our funds. When we are not the funder, we require the closing transaction fee pay at least our [`Background`] fee estimate, but allow our counterparty to pay as much fee as they like. Thus, this value is ignored when we are not the funder. Default value: 1000 satoshis. [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
-
set_force_close_avoidance_max_fee_satoshis
public void set_force_close_avoidance_max_fee_satoshis(long val)
The additional fee we're willing to pay to avoid waiting for the counterparty's `to_self_delay` to reclaim funds. When we close a channel cooperatively with our counterparty, we negotiate a fee for the closing transaction which both sides find acceptable, ultimately paid by the channel funder/initiator. When we are the funder, because we have to pay the channel closing fee, we bound the acceptable fee by our [`Background`] and [`Normal`] fees, with the upper bound increased by this value. Because the on-chain fee we'd pay to force-close the channel is kept near our [`Normal`] feerate during normal operation, this value represents the additional fee we're willing to pay in order to avoid waiting for our counterparty's to_self_delay to reclaim our funds. When we are not the funder, we require the closing transaction fee pay at least our [`Background`] fee estimate, but allow our counterparty to pay as much fee as they like. Thus, this value is ignored when we are not the funder. Default value: 1000 satoshis. [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
-
of
public static ChannelConfig of(int forwarding_fee_proportional_millionths_arg, int forwarding_fee_base_msat_arg, short cltv_expiry_delta_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg, long max_dust_htlc_exposure_msat_arg, long force_close_avoidance_max_fee_satoshis_arg)
Constructs a new ChannelConfig given each field
-
clone
public ChannelConfig clone()
Creates a copy of the ChannelConfig
-
with_default
public static ChannelConfig with_default()
Creates a "default" ChannelConfig. See struct and individual field documentaiton for details on which values are used.
-
write
public byte[] write()
Serialize the ChannelConfig object into a byte array which can be read by ChannelConfig_read
-
read
public static Result_ChannelConfigDecodeErrorZ read(byte[] ser)
Read a ChannelConfig from a byte array, created by ChannelConfig_write
-
-