mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-07-20 18:12:30 +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:
@ -106,6 +106,12 @@ you.
|
|||||||
* [Update MC store in blocks](https://github.com/lightningnetwork/lnd/pull/5515)
|
* [Update MC store in blocks](https://github.com/lightningnetwork/lnd/pull/5515)
|
||||||
to make payment throughput better when using etcd.
|
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)
|
# Contributors (Alphabetical Order)
|
||||||
* ErikEk
|
* ErikEk
|
||||||
* Martin Habovstiak
|
* 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
|
// configure the set of active bootstrappers, and launch a
|
||||||
// dedicated goroutine to maintain a set of persistent
|
// dedicated goroutine to maintain a set of persistent
|
||||||
// connections.
|
// connections.
|
||||||
if !s.cfg.NoNetBootstrap &&
|
if shouldPeerBootstrap(s.cfg) {
|
||||||
!(s.cfg.Bitcoin.SimNet || s.cfg.Litecoin.SimNet) &&
|
|
||||||
!(s.cfg.Bitcoin.RegTest || s.cfg.Litecoin.RegTest) {
|
|
||||||
|
|
||||||
bootstrappers, err := initNetworkBootstrappers(s)
|
bootstrappers, err := initNetworkBootstrappers(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
startErr = err
|
startErr = err
|
||||||
@ -3963,3 +3960,15 @@ func newSweepPkScriptGen(
|
|||||||
return txscript.PayToAddrScript(sweepAddr)
|
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"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/lightningnetwork/lnd/lncfg"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestParseHexColor(t *testing.T) {
|
func TestParseHexColor(t *testing.T) {
|
||||||
@ -203,3 +205,84 @@ func genExpiredCertPair(t *testing.T, certDirPath string) ([]byte, []byte) {
|
|||||||
|
|
||||||
return certDerBytes, keyBytes
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user