From 9cec33fe24998e55f796d0ab0bc6133be5802136 Mon Sep 17 00:00:00 2001 From: Nishant Das Date: Sat, 18 Apr 2020 13:06:06 +0800 Subject: [PATCH] Fix Bootnode Again (#5473) * bootnodeFix * fix again * remove iputils * revert changes * only add fallback * fix test * take it outside of func * fix docker * Merge branch 'master' into fixBootnodeAgain * Merge refs/heads/master into fixBootnodeAgain --- tools/bootnode/BUILD.bazel | 5 +++-- tools/bootnode/bootnode.go | 24 +++++++++++++----------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/tools/bootnode/BUILD.bazel b/tools/bootnode/BUILD.bazel index 503f1795970a..0e89d3751b75 100644 --- a/tools/bootnode/BUILD.bazel +++ b/tools/bootnode/BUILD.bazel @@ -10,6 +10,7 @@ go_library( visibility = ["//visibility:private"], deps = [ "//proto/beacon/p2p/v1:go_default_library", + "//shared/iputils:go_default_library", "//shared/logutil:go_default_library", "//shared/params:go_default_library", "//shared/version:go_default_library", @@ -47,8 +48,9 @@ go_image( visibility = ["//visibility:private"], deps = [ "//proto/beacon/p2p/v1:go_default_library", - "//shared/params:go_default_library", + "//shared/iputils:go_default_library", "//shared/logutil:go_default_library", + "//shared/params:go_default_library", "//shared/version:go_default_library", "@com_github_btcsuite_btcd//btcec:go_default_library", "@com_github_ethereum_go_ethereum//log:go_default_library", @@ -60,7 +62,6 @@ go_image( "@com_github_ipfs_go_log//:go_default_library", "@com_github_libp2p_go_libp2p//:go_default_library", "@com_github_libp2p_go_libp2p_core//crypto:go_default_library", - "@com_github_libp2p_go_libp2p_core//protocol:go_default_library", "@com_github_libp2p_go_libp2p_kad_dht//:go_default_library", "@com_github_libp2p_go_libp2p_kad_dht//opts:go_default_library", "@com_github_multiformats_go_multiaddr//:go_default_library", diff --git a/tools/bootnode/bootnode.go b/tools/bootnode/bootnode.go index 9d52240b059f..3a9110312171 100644 --- a/tools/bootnode/bootnode.go +++ b/tools/bootnode/bootnode.go @@ -38,6 +38,7 @@ import ( "github.com/prysmaticlabs/go-bitfield" "github.com/prysmaticlabs/go-ssz" pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" + "github.com/prysmaticlabs/prysm/shared/iputils" "github.com/prysmaticlabs/prysm/shared/logutil" "github.com/prysmaticlabs/prysm/shared/params" "github.com/prysmaticlabs/prysm/shared/version" @@ -89,7 +90,11 @@ func main() { cfg := discover.Config{ PrivateKey: privKey, } - listener := createListener(defaultIP, *discv5port, cfg) + ipAddr, err := iputils.ExternalIPv4() + if err != nil { + log.Fatal(err) + } + listener := createListener(ipAddr, *discv5port, cfg) node := listener.Self() log.Infof("Running bootnode: %s", node.String()) @@ -157,7 +162,7 @@ func startKademliaDHT(privKey crypto.PrivKey) { func createListener(ipAddr string, port int, cfg discover.Config) *discover.UDPv5 { ip := net.ParseIP(ipAddr) if ip.To4() == nil { - log.Fatalf("IPV4 address not provided instead %s was provided", defaultIP) + log.Fatalf("IPV4 address not provided instead %s was provided", ipAddr) } udpAddr := &net.UDPAddr{ IP: ip, @@ -167,9 +172,6 @@ func createListener(ipAddr string, port int, cfg discover.Config) *discover.UDPv if err != nil { log.Fatal(err) } - if *externalIP != "" { - ip = net.ParseIP(*externalIP) - } localNode, err := createLocalNode(cfg.PrivateKey, ip, port) if err != nil { log.Fatal(err) @@ -206,6 +208,10 @@ func createLocalNode(privKey *ecdsa.PrivateKey, ipAddr net.IP, port int) (*enode if err != nil { return nil, errors.Wrap(err, "Could not open node's peer database") } + external := net.ParseIP(*externalIP) + if *externalIP == "" { + external = ipAddr + } forkID := &pb.ENRForkID{ CurrentForkDigest: []byte{0, 0, 0, 0}, @@ -218,14 +224,10 @@ func createLocalNode(privKey *ecdsa.PrivateKey, ipAddr net.IP, port int) (*enode } localNode := enode.NewLocalNode(db, privKey) - ipEntry := enr.IP(ipAddr) - udpEntry := enr.UDP(port) - localNode.SetFallbackIP(ipAddr) - localNode.SetFallbackUDP(port) - localNode.Set(ipEntry) - localNode.Set(udpEntry) localNode.Set(enr.WithEntry("eth2", forkEntry)) localNode.Set(enr.WithEntry("attnets", bitfield.NewBitvector64())) + localNode.SetFallbackIP(external) + localNode.SetFallbackUDP(port) return localNode, nil }