Skip to content

Commit b9683d3

Browse files
committed
params: avoid importing p2p/discover for bootnodes
params is imported by leaf-ish library packages and should not pull in the p2p stack.
1 parent bbc4ea4 commit b9683d3

File tree

3 files changed

+28
-38
lines changed

3 files changed

+28
-38
lines changed

cmd/utils/flags.go

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -337,10 +337,10 @@ var (
337337
Usage: "Network listening port",
338338
Value: 30303,
339339
}
340-
BootnodesFlag = cli.StringFlag{
340+
BootnodesFlag = cli.StringSliceFlag{
341341
Name: "bootnodes",
342342
Usage: "Comma separated enode URLs for P2P discovery bootstrap",
343-
Value: "",
343+
Value: nil,
344344
}
345345
NodeKeyFileFlag = cli.StringFlag{
346346
Name: "nodekey",
@@ -485,17 +485,15 @@ func makeNodeUserIdent(ctx *cli.Context) string {
485485
// MakeBootstrapNodes creates a list of bootstrap nodes from the command line
486486
// flags, reverting to pre-configured ones if none have been specified.
487487
func MakeBootstrapNodes(ctx *cli.Context) []*discover.Node {
488-
// Return pre-configured nodes if none were manually requested
489-
if !ctx.GlobalIsSet(BootnodesFlag.Name) {
490-
if ctx.GlobalBool(TestNetFlag.Name) {
491-
return params.TestnetBootnodes
492-
}
493-
return params.MainnetBootnodes
488+
urls := params.MainnetBootnodes
489+
if ctx.GlobalIsSet(BootnodesFlag.Name) {
490+
urls = ctx.GlobalStringSlice(BootnodesFlag.Name)
491+
} else if ctx.GlobalBool(TestNetFlag.Name) {
492+
urls = params.TestnetBootnodes
494493
}
495-
// Otherwise parse and use the CLI bootstrap nodes
496-
bootnodes := []*discover.Node{}
497494

498-
for _, url := range strings.Split(ctx.GlobalString(BootnodesFlag.Name), ",") {
495+
bootnodes := make([]*discover.Node, 0, len(urls))
496+
for _, url := range urls {
499497
node, err := discover.ParseNode(url)
500498
if err != nil {
501499
glog.V(logger.Error).Infof("Bootstrap URL %s: %v\n", url, err)
@@ -509,14 +507,13 @@ func MakeBootstrapNodes(ctx *cli.Context) []*discover.Node {
509507
// MakeBootstrapNodesV5 creates a list of bootstrap nodes from the command line
510508
// flags, reverting to pre-configured ones if none have been specified.
511509
func MakeBootstrapNodesV5(ctx *cli.Context) []*discv5.Node {
512-
// Return pre-configured nodes if none were manually requested
513-
if !ctx.GlobalIsSet(BootnodesFlag.Name) {
514-
return params.DiscoveryV5Bootnodes
510+
urls := params.DiscoveryV5Bootnodes
511+
if ctx.GlobalIsSet(BootnodesFlag.Name) {
512+
urls = ctx.GlobalStringSlice(BootnodesFlag.Name)
515513
}
516-
// Otherwise parse and use the CLI bootstrap nodes
517-
bootnodes := []*discv5.Node{}
518514

519-
for _, url := range strings.Split(ctx.GlobalString(BootnodesFlag.Name), ",") {
515+
bootnodes := make([]*discv5.Node, 0, len(urls))
516+
for _, url := range urls {
520517
node, err := discv5.ParseNode(url)
521518
if err != nil {
522519
glog.V(logger.Error).Infof("Bootstrap URL %s: %v\n", url, err)

mobile/params.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ func NewChainConfig() *ChainConfig {
8585
// by the foundation running the V5 discovery protocol.
8686
func FoundationBootnodes() *Enodes {
8787
nodes := &Enodes{nodes: make([]*discv5.Node, len(params.DiscoveryV5Bootnodes))}
88-
for i, node := range params.DiscoveryV5Bootnodes {
89-
nodes.nodes[i] = node
88+
for i, url := range params.DiscoveryV5Bootnodes {
89+
nodes.nodes[i] = discv5.MustParseNode(url)
9090
}
9191
return nodes
9292
}

params/bootnodes.go

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,37 +16,30 @@
1616

1717
package params
1818

19-
import (
20-
"github.com/ethereum/go-ethereum/p2p/discover"
21-
"github.com/ethereum/go-ethereum/p2p/discv5"
22-
)
23-
2419
// MainnetBootnodes are the enode URLs of the P2P bootstrap nodes running on
2520
// the main Ethereum network.
26-
var MainnetBootnodes = []*discover.Node{
21+
var MainnetBootnodes = []string{
2722
// ETH/DEV Go Bootnodes
28-
discover.MustParseNode("enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@52.16.188.185:30303"), // IE
29-
discover.MustParseNode("enode://de471bccee3d042261d52e9bff31458daecc406142b401d4cd848f677479f73104b9fdeb090af9583d3391b7f10cb2ba9e26865dd5fca4fcdc0fb1e3b723c786@54.94.239.50:30303"), // BR
30-
discover.MustParseNode("enode://1118980bf48b0a3640bdba04e0fe78b1add18e1cd99bf22d53daac1fd9972ad650df52176e7c7d89d1114cfef2bc23a2959aa54998a46afcf7d91809f0855082@52.74.57.123:30303"), // SG
23+
"enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@52.16.188.185:30303", // IE
24+
"enode://de471bccee3d042261d52e9bff31458daecc406142b401d4cd848f677479f73104b9fdeb090af9583d3391b7f10cb2ba9e26865dd5fca4fcdc0fb1e3b723c786@54.94.239.50:30303", // BR
25+
"enode://1118980bf48b0a3640bdba04e0fe78b1add18e1cd99bf22d53daac1fd9972ad650df52176e7c7d89d1114cfef2bc23a2959aa54998a46afcf7d91809f0855082@52.74.57.123:30303", // SG
3126

3227
// ETH/DEV Cpp Bootnodes
33-
discover.MustParseNode("enode://979b7fa28feeb35a4741660a16076f1943202cb72b6af70d327f053e248bab9ba81760f39d0701ef1d8f89cc1fbd2cacba0710a12cd5314d5e0c9021aa3637f9@5.1.83.226:30303"),
28+
"enode://979b7fa28feeb35a4741660a16076f1943202cb72b6af70d327f053e248bab9ba81760f39d0701ef1d8f89cc1fbd2cacba0710a12cd5314d5e0c9021aa3637f9@5.1.83.226:30303",
3429
}
3530

3631
// TestnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the
3732
// Morden test network.
38-
var TestnetBootnodes = []*discover.Node{
33+
var TestnetBootnodes = []string{
3934
// ETH/DEV Go Bootnodes
40-
discover.MustParseNode("enode://e4533109cc9bd7604e4ff6c095f7a1d807e15b38e9bfeb05d3b7c423ba86af0a9e89abbf40bd9dde4250fef114cd09270fa4e224cbeef8b7bf05a51e8260d6b8@94.242.229.4:40404"),
41-
discover.MustParseNode("enode://8c336ee6f03e99613ad21274f269479bf4413fb294d697ef15ab897598afb931f56beb8e97af530aee20ce2bcba5776f4a312bc168545de4d43736992c814592@94.242.229.203:30303"),
42-
43-
// ETH/DEV Cpp Bootnodes
35+
"enode://e4533109cc9bd7604e4ff6c095f7a1d807e15b38e9bfeb05d3b7c423ba86af0a9e89abbf40bd9dde4250fef114cd09270fa4e224cbeef8b7bf05a51e8260d6b8@94.242.229.4:40404",
36+
"enode://8c336ee6f03e99613ad21274f269479bf4413fb294d697ef15ab897598afb931f56beb8e97af530aee20ce2bcba5776f4a312bc168545de4d43736992c814592@94.242.229.203:30303",
4437
}
4538

4639
// DiscoveryV5Bootnodes are the enode URLs of the P2P bootstrap nodes for the
4740
// experimental RLPx v5 topic-discovery network.
48-
var DiscoveryV5Bootnodes = []*discv5.Node{
49-
discv5.MustParseNode("enode://0cc5f5ffb5d9098c8b8c62325f3797f56509bff942704687b6530992ac706e2cb946b90a34f1f19548cd3c7baccbcaea354531e5983c7d1bc0dee16ce4b6440b@40.118.3.223:30305"),
50-
discv5.MustParseNode("enode://1c7a64d76c0334b0418c004af2f67c50e36a3be60b5e4790bdac0439d21603469a85fad36f2473c9a80eb043ae60936df905fa28f1ff614c3e5dc34f15dcd2dc@40.118.3.223:30308"),
51-
discv5.MustParseNode("enode://85c85d7143ae8bb96924f2b54f1b3e70d8c4d367af305325d30a61385a432f247d2c75c45c6b4a60335060d072d7f5b35dd1d4c45f76941f62a4f83b6e75daaf@40.118.3.223:30309"),
41+
var DiscoveryV5Bootnodes = []string{
42+
"enode://0cc5f5ffb5d9098c8b8c62325f3797f56509bff942704687b6530992ac706e2cb946b90a34f1f19548cd3c7baccbcaea354531e5983c7d1bc0dee16ce4b6440b@40.118.3.223:30305",
43+
"enode://1c7a64d76c0334b0418c004af2f67c50e36a3be60b5e4790bdac0439d21603469a85fad36f2473c9a80eb043ae60936df905fa28f1ff614c3e5dc34f15dcd2dc@40.118.3.223:30308",
44+
"enode://85c85d7143ae8bb96924f2b54f1b3e70d8c4d367af305325d30a61385a432f247d2c75c45c6b4a60335060d072d7f5b35dd1d4c45f76941f62a4f83b6e75daaf@40.118.3.223:30309",
5245
}

0 commit comments

Comments
 (0)