config: add channel commit interval parameter

This commit is contained in:
Joost Jager 2021-04-08 14:29:03 +02:00
parent cd87fe89eb
commit a181d26287
No known key found for this signature in database
GPG Key ID: A61B9D4C393C59C7
4 changed files with 21 additions and 2 deletions

View File

@ -141,6 +141,10 @@ const (
// commitment output. // commitment output.
// TODO(halseth): find a more scientific choice of value. // TODO(halseth): find a more scientific choice of value.
defaultMaxLocalCSVDelay = 10000 defaultMaxLocalCSVDelay = 10000
// defaultChannelCommitInterval is the default maximum time between receiving a
// channel state update and signing a new commitment.
defaultChannelCommitInterval = 50 * time.Millisecond
) )
var ( var (
@ -289,6 +293,8 @@ type Config struct {
MaxChanSize int64 `long:"maxchansize" description:"The largest channel size (in satoshis) that we should accept. Incoming channels larger than this will be rejected"` MaxChanSize int64 `long:"maxchansize" description:"The largest channel size (in satoshis) that we should accept. Incoming channels larger than this will be rejected"`
CoopCloseTargetConfs uint32 `long:"coop-close-target-confs" description:"The target number of blocks that a cooperative channel close transaction should confirm in. This is used to estimate the fee to use as the lower bound during fee negotiation for the channel closure."` CoopCloseTargetConfs uint32 `long:"coop-close-target-confs" description:"The target number of blocks that a cooperative channel close transaction should confirm in. This is used to estimate the fee to use as the lower bound during fee negotiation for the channel closure."`
ChannelCommitInterval time.Duration `long:"channel-commit-interval" description:"The maximum time that is allowed to pass between receiving a channel state update and signing the next commitment. Setting this to a longer duration allows for more efficient channel operations at the cost of latency."`
DefaultRemoteMaxHtlcs uint16 `long:"default-remote-max-htlcs" description:"The default max_htlc applied when opening or accepting channels. This value limits the number of concurrent HTLCs that the remote party can add to the commitment. The maximum possible value is 483."` DefaultRemoteMaxHtlcs uint16 `long:"default-remote-max-htlcs" description:"The default max_htlc applied when opening or accepting channels. This value limits the number of concurrent HTLCs that the remote party can add to the commitment. The maximum possible value is 483."`
NumGraphSyncPeers int `long:"numgraphsyncpeers" description:"The number of peers that we should receive new graph updates from. This option can be tuned to save bandwidth for light clients or routing nodes."` NumGraphSyncPeers int `long:"numgraphsyncpeers" description:"The number of peers that we should receive new graph updates from. This option can be tuned to save bandwidth for light clients or routing nodes."`
@ -507,6 +513,7 @@ func DefaultConfig() Config {
DB: lncfg.DefaultDB(), DB: lncfg.DefaultDB(),
registeredChains: chainreg.NewChainRegistry(), registeredChains: chainreg.NewChainRegistry(),
ActiveNetParams: chainreg.BitcoinTestNetParams, ActiveNetParams: chainreg.BitcoinTestNetParams,
ChannelCommitInterval: defaultChannelCommitInterval,
} }
} }

View File

@ -308,6 +308,12 @@ type Config struct {
// ChannelLink. // ChannelLink.
ServerPubKey [33]byte ServerPubKey [33]byte
// ChannelCommitInterval is the maximum time that is allowed to pass between
// receiving a channel state update and signing the next commitment.
// Setting this to a longer duration allows for more efficient channel
// operations at the cost of latency.
ChannelCommitInterval time.Duration
// Quit is the server's quit channel. If this is closed, we halt operation. // Quit is the server's quit channel. If this is closed, we halt operation.
Quit chan struct{} Quit chan struct{}
} }
@ -813,7 +819,7 @@ func (p *Brontide) addLink(chanPoint *wire.OutPoint,
UpdateContractSignals: updateContractSignals, UpdateContractSignals: updateContractSignals,
OnChannelFailure: onChannelFailure, OnChannelFailure: onChannelFailure,
SyncStates: syncStates, SyncStates: syncStates,
BatchTicker: ticker.New(50 * time.Millisecond), BatchTicker: ticker.New(p.cfg.ChannelCommitInterval),
FwdPkgGCTicker: ticker.New(time.Hour), FwdPkgGCTicker: ticker.New(time.Hour),
PendingCommitTicker: ticker.New(time.Minute), PendingCommitTicker: ticker.New(time.Minute),
BatchSize: 10, BatchSize: 10,

View File

@ -264,6 +264,11 @@
; for the channel closure is not set. ; for the channel closure is not set.
; coop-close-target-confs=10 ; coop-close-target-confs=10
; The maximum time that is allowed to pass between receiving a channel state
; update and signing the next commitment. Setting this to a longer duration
; allows for more efficient channel operations at the cost of latency.
; channel-commit-interval=50ms
; The default max_htlc applied when opening or accepting channels. This value ; The default max_htlc applied when opening or accepting channels. This value
; limits the number of concurrent HTLCs that the remote party can add to the ; limits the number of concurrent HTLCs that the remote party can add to the
; commitment. The maximum possible value is 483. ; commitment. The maximum possible value is 483.

View File

@ -3137,7 +3137,8 @@ func (s *server) peerConnected(conn net.Conn, connReq *connmgr.ConnReq,
CoopCloseTargetConfs: s.cfg.CoopCloseTargetConfs, CoopCloseTargetConfs: s.cfg.CoopCloseTargetConfs,
MaxAnchorsCommitFeeRate: chainfee.SatPerKVByte( MaxAnchorsCommitFeeRate: chainfee.SatPerKVByte(
s.cfg.MaxCommitFeeRateAnchors * 1000).FeePerKWeight(), s.cfg.MaxCommitFeeRateAnchors * 1000).FeePerKWeight(),
Quit: s.quit, ChannelCommitInterval: s.cfg.ChannelCommitInterval,
Quit: s.quit,
} }
copy(pCfg.PubKeyBytes[:], peerAddr.IdentityKey.SerializeCompressed()) copy(pCfg.PubKeyBytes[:], peerAddr.IdentityKey.SerializeCompressed())