aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/utils
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-11-09 22:35:04 +0800
committerPéter Szilágyi <peterke@gmail.com>2016-11-15 00:00:14 +0800
commitb61f48e5aad9cf897f5655a0db002a3349109c67 (patch)
tree32b0d7d4a126ee444e1cd563c5d4d8ebadef09ec /cmd/utils
parentde4b39a1a32a61a9683a036b2e27e8df7cd4c9ff (diff)
downloaddexon-b61f48e5aad9cf897f5655a0db002a3349109c67.tar
dexon-b61f48e5aad9cf897f5655a0db002a3349109c67.tar.gz
dexon-b61f48e5aad9cf897f5655a0db002a3349109c67.tar.bz2
dexon-b61f48e5aad9cf897f5655a0db002a3349109c67.tar.lz
dexon-b61f48e5aad9cf897f5655a0db002a3349109c67.tar.xz
dexon-b61f48e5aad9cf897f5655a0db002a3349109c67.tar.zst
dexon-b61f48e5aad9cf897f5655a0db002a3349109c67.zip
cmd, mobile, node, p2p: surface the discovery V5 bootnodes
Diffstat (limited to 'cmd/utils')
-rw-r--r--cmd/utils/bootnodes.go9
-rw-r--r--cmd/utils/flags.go29
2 files changed, 36 insertions, 2 deletions
diff --git a/cmd/utils/bootnodes.go b/cmd/utils/bootnodes.go
index 1947030fc..50b658467 100644
--- a/cmd/utils/bootnodes.go
+++ b/cmd/utils/bootnodes.go
@@ -19,6 +19,7 @@ package utils
import (
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/p2p/discv5"
"github.com/ethereum/go-ethereum/params"
)
@@ -44,6 +45,14 @@ var TestnetBootnodes = []*discover.Node{
// ETH/DEV Cpp Bootnodes
}
+// DiscoveryV5Bootnodes are the enode URLs of the P2P bootstrap nodes for the
+// experimental RLPx v5 topic-discovery network.
+var DiscoveryV5Bootnodes = []*discv5.Node{
+ discv5.MustParseNode("enode://0cc5f5ffb5d9098c8b8c62325f3797f56509bff942704687b6530992ac706e2cb946b90a34f1f19548cd3c7baccbcaea354531e5983c7d1bc0dee16ce4b6440b@40.118.3.223:30305"),
+ discv5.MustParseNode("enode://1c7a64d76c0334b0418c004af2f67c50e36a3be60b5e4790bdac0439d21603469a85fad36f2473c9a80eb043ae60936df905fa28f1ff614c3e5dc34f15dcd2dc@40.118.3.223:30308"),
+ discv5.MustParseNode("enode://85c85d7143ae8bb96924f2b54f1b3e70d8c4d367af305325d30a61385a432f247d2c75c45c6b4a60335060d072d7f5b35dd1d4c45f76941f62a4f83b6e75daaf@40.118.3.223:30309"),
+}
+
// MainnetChainConfig is the chain parameters to run a node on the main network.
var MainnetChainConfig = &core.ChainConfig{
HomesteadBlock: params.MainNetHomesteadBlock,
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index a0b305d4a..0b18d9f79 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -46,6 +46,7 @@ import (
"github.com/ethereum/go-ethereum/metrics"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/p2p/discv5"
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/pow"
@@ -505,13 +506,36 @@ func MakeBootstrapNodes(ctx *cli.Context) []*discover.Node {
return bootnodes
}
+// MakeBootstrapNodesV5 creates a list of bootstrap nodes from the command line
+// flags, reverting to pre-configured ones if none have been specified.
+func MakeBootstrapNodesV5(ctx *cli.Context) []*discv5.Node {
+ // Return pre-configured nodes if none were manually requested
+ if !ctx.GlobalIsSet(BootnodesFlag.Name) {
+ return DiscoveryV5Bootnodes
+ }
+ // Otherwise parse and use the CLI bootstrap nodes
+ bootnodes := []*discv5.Node{}
+
+ for _, url := range strings.Split(ctx.GlobalString(BootnodesFlag.Name), ",") {
+ node, err := discv5.ParseNode(url)
+ if err != nil {
+ glog.V(logger.Error).Infof("Bootstrap URL %s: %v\n", url, err)
+ continue
+ }
+ bootnodes = append(bootnodes, node)
+ }
+ return bootnodes
+}
+
// MakeListenAddress creates a TCP listening address string from set command
// line flags.
func MakeListenAddress(ctx *cli.Context) string {
return fmt.Sprintf(":%d", ctx.GlobalInt(ListenPortFlag.Name))
}
-func MakeListenAddressV5(ctx *cli.Context) string {
+// MakeDiscoveryV5Address creates a UDP listening address string from set command
+// line flags for the V5 discovery protocol.
+func MakeDiscoveryV5Address(ctx *cli.Context) string {
return fmt.Sprintf(":%d", ctx.GlobalInt(ListenPortFlag.Name)+1)
}
@@ -647,9 +671,10 @@ func MakeNode(ctx *cli.Context, name, gitCommit string) *node.Node {
UserIdent: makeNodeUserIdent(ctx),
NoDiscovery: ctx.GlobalBool(NoDiscoverFlag.Name) || ctx.GlobalBool(LightModeFlag.Name),
DiscoveryV5: ctx.GlobalBool(DiscoveryV5Flag.Name) || ctx.GlobalBool(LightModeFlag.Name) || ctx.GlobalInt(LightServFlag.Name) > 0,
+ DiscoveryV5Addr: MakeDiscoveryV5Address(ctx),
BootstrapNodes: MakeBootstrapNodes(ctx),
+ BootstrapNodesV5: MakeBootstrapNodesV5(ctx),
ListenAddr: MakeListenAddress(ctx),
- ListenAddrV5: MakeListenAddressV5(ctx),
NAT: MakeNAT(ctx),
MaxPeers: ctx.GlobalInt(MaxPeersFlag.Name),
MaxPendingPeers: ctx.GlobalInt(MaxPendingPeersFlag.Name),