43a355321f
In this commit, we split off the protocol options into a normal and legacy sub-config. The legacy sub-config protected by a built tag, and will only be populated if thet tag is set. Legacy options now have a `legacy` prefix. So `--protocol.legacyonion` is now `--protocol.onion`, and `--protocol.committweak`, is now `--protocol.legacy.committweak`. We also create a new experimental protocol feature sub-config for newer features that may not yet been fully complete, so they require a build tag.
33 lines
1.3 KiB
Go
33 lines
1.3 KiB
Go
// +build dev
|
|
|
|
package lncfg
|
|
|
|
// Legacy is a sub-config that houses all the legacy protocol options. These
|
|
// are mostly used for integration tests as most modern nodes shuld always run
|
|
// with them on by default.
|
|
type LegacyProtocol struct {
|
|
// LegacyOnionFormat if set to true, then we won't signal
|
|
// TLVOnionPayloadOptional. As a result, nodes that include us in the
|
|
// route won't use the new modern onion framing.
|
|
LegacyOnionFormat bool `long:"onion" description:"force node to not advertise the new modern TLV onion format"`
|
|
|
|
// CommitmentTweak guards if we should use the old legacy commitment
|
|
// protocol, or the newer variant that doesn't have a tweak for the
|
|
// remote party's output in the commitment. If set to true, then we
|
|
// won't signal StaticRemoteKeyOptional.
|
|
CommitmentTweak bool `long:"committweak" description:"force node to not advertise the new commitment format"`
|
|
}
|
|
|
|
// LegacyOnion returns true if the old legacy onion format should be used when
|
|
// we're an intermediate or final hop. This controls if we set the
|
|
// TLVOnionPayloadOptional bit or not.
|
|
func (l *LegacyProtocol) LegacyOnion() bool {
|
|
return l.LegacyOnionFormat
|
|
}
|
|
|
|
// NoStaticRemoteKey returns true if the old commitment format with a tweaked
|
|
// remote key should be used for new funded channels.
|
|
func (l *LegacyProtocol) NoStaticRemoteKey() bool {
|
|
return l.CommitmentTweak
|
|
}
|