mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-04-05 18:49:39 +02:00
server: disable DNS boostrap for SigNet nodes (#5564)
* server: disable DNS boostrap for SigNet nodes In this commit, we fix a bug that would cause nodes attempting to run using the signet chain, to waste CPU as they attempted to boostrap to a non-existent DNS seed. We fix this by ignoring the DNS boostrapper is signet is active. Along the way, we refactor the conditional sightly to be more readable, and easily extensible. * server: extract bootstrap logic into new function w/ unit test * docs/release-notes: update release notes for signet DNS fix
This commit is contained in:
commit
da1d0226bd
@ -106,6 +106,12 @@ you.
|
||||
* [Update MC store in blocks](https://github.com/lightningnetwork/lnd/pull/5515)
|
||||
to make payment throughput better when using etcd.
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
A bug has been fixed that would cause `lnd` to [try to bootstrap using the
|
||||
currnet DNS seeds when in SigNet
|
||||
mode](https://github.com/lightningnetwork/lnd/pull/5564).
|
||||
|
||||
# Contributors (Alphabetical Order)
|
||||
* ErikEk
|
||||
* Martin Habovstiak
|
||||
|
17
server.go
17
server.go
@ -1788,10 +1788,7 @@ func (s *server) Start() error {
|
||||
// configure the set of active bootstrappers, and launch a
|
||||
// dedicated goroutine to maintain a set of persistent
|
||||
// connections.
|
||||
if !s.cfg.NoNetBootstrap &&
|
||||
!(s.cfg.Bitcoin.SimNet || s.cfg.Litecoin.SimNet) &&
|
||||
!(s.cfg.Bitcoin.RegTest || s.cfg.Litecoin.RegTest) {
|
||||
|
||||
if shouldPeerBootstrap(s.cfg) {
|
||||
bootstrappers, err := initNetworkBootstrappers(s)
|
||||
if err != nil {
|
||||
startErr = err
|
||||
@ -3963,3 +3960,15 @@ func newSweepPkScriptGen(
|
||||
return txscript.PayToAddrScript(sweepAddr)
|
||||
}
|
||||
}
|
||||
|
||||
// shouldPeerBootstrap returns true if we should attempt to perform peer
|
||||
// boostrapping to actively seek our peers using the set of active network
|
||||
// bootsrappers.
|
||||
func shouldPeerBootstrap(cfg *Config) bool {
|
||||
isSimnet := (cfg.Bitcoin.SimNet || cfg.Litecoin.SimNet)
|
||||
isSignet := (cfg.Bitcoin.SigNet || cfg.Litecoin.SigNet)
|
||||
isRegtest := (cfg.Bitcoin.RegTest || cfg.Litecoin.RegTest)
|
||||
isDevNetwork := isSimnet || isSignet || isRegtest
|
||||
|
||||
return !cfg.NoNetBootstrap && !isDevNetwork
|
||||
}
|
||||
|
@ -17,6 +17,8 @@ import (
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/lightningnetwork/lnd/lncfg"
|
||||
)
|
||||
|
||||
func TestParseHexColor(t *testing.T) {
|
||||
@ -203,3 +205,84 @@ func genExpiredCertPair(t *testing.T, certDirPath string) ([]byte, []byte) {
|
||||
|
||||
return certDerBytes, keyBytes
|
||||
}
|
||||
|
||||
// TestShouldPeerBootstrap tests that we properly skip network bootstrap for
|
||||
// the developer networks, and also if bootstrapping is explicitly disabled.
|
||||
func TestShouldPeerBootstrap(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
testCases := []struct {
|
||||
cfg *Config
|
||||
shouldBoostrap bool
|
||||
}{
|
||||
// Simnet active, no bootstrap.
|
||||
{
|
||||
cfg: &Config{
|
||||
Bitcoin: &lncfg.Chain{
|
||||
SimNet: true,
|
||||
},
|
||||
Litecoin: &lncfg.Chain{},
|
||||
},
|
||||
},
|
||||
|
||||
// Regtest active, no bootstrap.
|
||||
{
|
||||
cfg: &Config{
|
||||
Bitcoin: &lncfg.Chain{
|
||||
RegTest: true,
|
||||
},
|
||||
Litecoin: &lncfg.Chain{},
|
||||
},
|
||||
},
|
||||
|
||||
// Signet active, no bootstrap.
|
||||
{
|
||||
cfg: &Config{
|
||||
Bitcoin: &lncfg.Chain{
|
||||
SigNet: true,
|
||||
},
|
||||
Litecoin: &lncfg.Chain{},
|
||||
},
|
||||
},
|
||||
|
||||
// Mainnet active, but boostrap disabled, no boostrap.
|
||||
{
|
||||
cfg: &Config{
|
||||
Bitcoin: &lncfg.Chain{
|
||||
MainNet: true,
|
||||
},
|
||||
Litecoin: &lncfg.Chain{},
|
||||
NoNetBootstrap: true,
|
||||
},
|
||||
},
|
||||
|
||||
// Mainnet active, should boostrap.
|
||||
{
|
||||
cfg: &Config{
|
||||
Bitcoin: &lncfg.Chain{
|
||||
MainNet: true,
|
||||
},
|
||||
Litecoin: &lncfg.Chain{},
|
||||
},
|
||||
shouldBoostrap: true,
|
||||
},
|
||||
|
||||
// Testnet active, should boostrap.
|
||||
{
|
||||
cfg: &Config{
|
||||
Bitcoin: &lncfg.Chain{
|
||||
TestNet3: true,
|
||||
},
|
||||
Litecoin: &lncfg.Chain{},
|
||||
},
|
||||
shouldBoostrap: true,
|
||||
},
|
||||
}
|
||||
for i, testCase := range testCases {
|
||||
bootstrapped := shouldPeerBootstrap(testCase.cfg)
|
||||
if bootstrapped != testCase.shouldBoostrap {
|
||||
t.Fatalf("#%v: expected bootstrap=%v, got bootstrap=%v",
|
||||
i, testCase.shouldBoostrap, bootstrapped)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user