2022-08-12 15:16:35 +08:00
//go:build !integration
2021-05-10 10:16:59 +02:00
2020-07-08 14:26:05 -07:00
package lncfg
// ProtocolOptions is a struct that we use to be able to test backwards
// compatibility of protocol additions, while defaulting to the latest within
// lnd, or to enable experimental protocol changes.
2022-10-20 16:48:19 +08:00
//
2022-11-18 07:01:42 +08:00
//nolint:lll
2020-07-08 14:26:05 -07:00
type ProtocolOptions struct {
// LegacyProtocol is a sub-config that houses all the legacy protocol
// options. These are mostly used for integration tests as most modern
2022-01-13 18:29:43 +02:00
// nodes should always run with them on by default.
2020-07-08 14:26:05 -07:00
LegacyProtocol ` group:"legacy" namespace:"legacy" `
// ExperimentalProtocol is a sub-config that houses any experimental
// protocol features that also require a build-tag to activate.
ExperimentalProtocol
2020-07-01 21:04:25 -07:00
// WumboChans should be set if we want to enable support for wumbo
// (channels larger than 0.16 BTC) channels, which is the opposite of
// mini.
WumboChans bool ` long:"wumbo-channels" description:"if set, then lnd will create and accept requests for channels larger chan 0.16 BTC" `
2020-12-14 20:51:35 +01:00
2023-07-25 17:44:59 -07:00
// TaprootChans should be set if we want to enable support for the
// experimental simple taproot chans commitment type.
2023-08-08 20:21:55 -07:00
TaprootChans bool ` long:"simple-taproot-chans" description:"if set, then lnd will create and accept requests for channels using the simple taproot commitment type" `
2023-07-25 17:44:59 -07:00
2021-05-10 10:16:59 +02:00
// NoAnchors should be set if we don't want to support opening or accepting
// channels having the anchor commitment type.
NoAnchors bool ` long:"no-anchors" description:"disable support for anchor commitments" `
2021-07-13 15:11:14 -07:00
// NoScriptEnforcedLease should be set if we don't want to support
// opening or accepting channels having the script enforced commitment
// type for leased channel.
NoScriptEnforcedLease bool ` long:"no-script-enforced-lease" description:"disable support for script enforced lease commitments" `
2022-04-04 15:22:26 -04:00
// OptionScidAlias should be set if we want to signal the
// option-scid-alias feature bit. This allows scid aliases and the
// option-scid-alias channel-type.
OptionScidAlias bool ` long:"option-scid-alias" description:"enable support for option_scid_alias channels" `
// OptionZeroConf should be set if we want to signal the zero-conf
// feature bit.
OptionZeroConf bool ` long:"zero-conf" description:"enable support for zero-conf channels, must have option-scid-alias set also" `
2022-08-04 19:09:39 -07:00
// NoOptionAnySegwit should be set to true if we don't want to use any
// Taproot (and beyond) addresses for co-op closing.
2023-09-20 09:34:21 +02:00
NoOptionAnySegwit bool ` long:"no-any-segwit" description:"disallow using any segwit witness version as a co-op close address" `
// NoTimestampQueryOption should be set to true if we don't want our
// syncing peers to also send us the timestamps of announcement messages
// when we send them a channel range query. Setting this to true will
// also mean that we won't respond with timestamps if requested by our
// peers.
NoTimestampQueryOption bool ` long:"no-timestamp-query-option" description:"do not query syncing peers for announcement timestamps and do not respond with timestamps if requested" `
2024-04-02 09:04:27 -04:00
// NoRouteBlindingOption disables forwarding of payments in blinded routes.
NoRouteBlindingOption bool ` long:"no-route-blinding" description:"do not forward payments that are a part of a blinded route" `
2020-07-01 21:04:25 -07:00
}
2024-03-22 13:39:17 -04:00
// DefaultProtocol returns a protocol config with route blinding turned off,
// temporarily in place until full handling of blinded route errors is merged.
func DefaultProtocol ( ) * ProtocolOptions {
return & ProtocolOptions {
NoRouteBlindingOption : true ,
}
}
2020-07-01 21:04:25 -07:00
// Wumbo returns true if lnd should permit the creation and acceptance of wumbo
// channels.
func ( l * ProtocolOptions ) Wumbo ( ) bool {
return l . WumboChans
2020-07-08 14:26:05 -07:00
}
2020-12-14 20:51:35 +01:00
// NoAnchorCommitments returns true if we have disabled support for the anchor
// commitment type.
func ( l * ProtocolOptions ) NoAnchorCommitments ( ) bool {
2021-05-10 10:16:59 +02:00
return l . NoAnchors
2020-12-14 20:51:35 +01:00
}
2021-07-13 15:11:14 -07:00
// NoScriptEnforcementLease returns true if we have disabled support for the
// script enforcement commitment type for leased channels.
func ( l * ProtocolOptions ) NoScriptEnforcementLease ( ) bool {
return l . NoScriptEnforcedLease
}
2022-04-04 15:22:26 -04:00
// ScidAlias returns true if we have enabled the option-scid-alias feature bit.
func ( l * ProtocolOptions ) ScidAlias ( ) bool {
return l . OptionScidAlias
}
// ZeroConf returns true if we have enabled the zero-conf feature bit.
func ( l * ProtocolOptions ) ZeroConf ( ) bool {
return l . OptionZeroConf
}
2022-08-04 19:09:39 -07:00
// NoAnySegwit returns true if we don't signal that we understand other newer
// segwit witness versions for co-op close addresses.
func ( l * ProtocolOptions ) NoAnySegwit ( ) bool {
return l . NoOptionAnySegwit
}
2023-09-20 09:34:21 +02:00
// NoTimestampsQuery returns true if we should not ask our syncing peers to also
// send us the timestamps of announcement messages when we send them a channel
// range query, and it also means that we will not respond with timestamps if
// requested by our peer.
func ( l * ProtocolOptions ) NoTimestampsQuery ( ) bool {
return l . NoTimestampQueryOption
}
2024-04-02 09:04:27 -04:00
// NoRouteBlinding returns true if forwarding of blinded payments is disabled.
func ( l * ProtocolOptions ) NoRouteBlinding ( ) bool {
return l . NoRouteBlindingOption
}