From 71a6c73e93b9d566580c23f68d4bfaa7d3bf09ba Mon Sep 17 00:00:00 2001 From: Raul Jordan Date: Mon, 22 Jun 2020 21:53:11 -0500 Subject: [PATCH] Remove All Instances of Kademlia from Prysm (#6323) * fully remove kad * Merge branch 'master' into rem-kad * Update beacon-chain/p2p/service.go * no workspace kad * Merge branch 'rem-kad' of github.com:prysmaticlabs/prysm into rem-kad * mod tidy * Merge refs/heads/master into rem-kad * Merge refs/heads/master into rem-kad * Merge refs/heads/master into rem-kad * add back bootnode query tool * Merge branch 'rem-kad' of github.com:prysmaticlabs/prysm into rem-kad * fix up multiaddr tests * fix build * fix up go build * fix go build * update dep * Merge refs/heads/master into rem-kad * Merge refs/heads/master into rem-kad * Merge refs/heads/master into rem-kad * Merge refs/heads/master into rem-kad --- beacon-chain/p2p/BUILD.bazel | 6 -- beacon-chain/p2p/config.go | 43 +++++++------- beacon-chain/p2p/discovery.go | 26 ++------- beacon-chain/p2p/discovery_test.go | 1 + beacon-chain/p2p/service.go | 66 +-------------------- deps.bzl | 18 +++--- endtoend/components/beacon_node.go | 1 - go.mod | 5 +- go.sum | 40 +++---------- shared/featureconfig/config.go | 5 -- shared/featureconfig/flags.go | 11 ++-- tools/bootnode-query/main.go | 6 +- tools/bootnode/BUILD.bazel | 9 --- tools/bootnode/bootnode.go | 92 +++++------------------------- tools/bootnode/bootnode_test.go | 6 +- 15 files changed, 74 insertions(+), 261 deletions(-) diff --git a/beacon-chain/p2p/BUILD.bazel b/beacon-chain/p2p/BUILD.bazel index 35e8912e5c..bdfacc8935 100644 --- a/beacon-chain/p2p/BUILD.bazel +++ b/beacon-chain/p2p/BUILD.bazel @@ -58,13 +58,9 @@ go_library( "@com_github_ethereum_go_ethereum//p2p/enode:go_default_library", "@com_github_ethereum_go_ethereum//p2p/enr:go_default_library", "@com_github_gogo_protobuf//proto:go_default_library", - "@com_github_ipfs_go_datastore//:go_default_library", - "@com_github_ipfs_go_datastore//sync:go_default_library", "@com_github_ipfs_go_ipfs_addr//:go_default_library", "@com_github_libp2p_go_libp2p//:go_default_library", "@com_github_libp2p_go_libp2p//config:go_default_library", - "@com_github_libp2p_go_libp2p//p2p/host/routed:go_default_library", - "@com_github_libp2p_go_libp2p_core//:go_default_library", "@com_github_libp2p_go_libp2p_core//connmgr:go_default_library", "@com_github_libp2p_go_libp2p_core//control:go_default_library", "@com_github_libp2p_go_libp2p_core//crypto:go_default_library", @@ -73,8 +69,6 @@ go_library( "@com_github_libp2p_go_libp2p_core//peer:go_default_library", "@com_github_libp2p_go_libp2p_core//protocol:go_default_library", "@com_github_libp2p_go_libp2p_host//: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_libp2p_go_libp2p_noise//:go_default_library", "@com_github_libp2p_go_libp2p_peerstore//:go_default_library", "@com_github_libp2p_go_libp2p_pubsub//:go_default_library", diff --git a/beacon-chain/p2p/config.go b/beacon-chain/p2p/config.go index 6768281e28..807990d04c 100644 --- a/beacon-chain/p2p/config.go +++ b/beacon-chain/p2p/config.go @@ -7,26 +7,25 @@ import ( // Config for the p2p service. These parameters are set from application level flags // to initialize the p2p service. type Config struct { - NoDiscovery bool - EnableUPnP bool - DisableDiscv5 bool - StaticPeers []string - BootstrapNodeAddr []string - KademliaBootStrapAddr []string - Discv5BootStrapAddr []string - RelayNodeAddr string - LocalIP string - HostAddress string - HostDNS string - PrivateKey string - DataDir string - MetaDataDir string - TCPPort uint - UDPPort uint - MaxPeers uint - AllowListCIDR string - DenyListCIDR []string - Encoding string - StateNotifier statefeed.Notifier - PubSub string + NoDiscovery bool + EnableUPnP bool + DisableDiscv5 bool + StaticPeers []string + BootstrapNodeAddr []string + Discv5BootStrapAddr []string + RelayNodeAddr string + LocalIP string + HostAddress string + HostDNS string + PrivateKey string + DataDir string + MetaDataDir string + TCPPort uint + UDPPort uint + MaxPeers uint + AllowListCIDR string + DenyListCIDR []string + Encoding string + StateNotifier statefeed.Notifier + PubSub string } diff --git a/beacon-chain/p2p/discovery.go b/beacon-chain/p2p/discovery.go index 33b466113f..0f1a579909 100644 --- a/beacon-chain/p2p/discovery.go +++ b/beacon-chain/p2p/discovery.go @@ -1,7 +1,6 @@ package p2p import ( - "context" "crypto/ecdsa" "fmt" "net" @@ -10,7 +9,6 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/p2p/enr" iaddr "github.com/ipfs/go-ipfs-addr" - core "github.com/libp2p/go-libp2p-core" "github.com/libp2p/go-libp2p-core/network" "github.com/libp2p/go-libp2p-core/peer" ma "github.com/multiformats/go-multiaddr" @@ -182,26 +180,12 @@ func (s *Service) filterPeer(node *enode.Node) bool { return true } -// startDHTDiscovery supports discovery via DHT. -func startDHTDiscovery(host core.Host, bootstrapAddr string) error { - multiAddr, err := multiAddrFromString(bootstrapAddr) - if err != nil { - return err - } - peerInfo, err := peer.AddrInfoFromP2pAddr(multiAddr) - if err != nil { - return err - } - err = host.Connect(context.Background(), *peerInfo) - return err -} - -func parseBootStrapAddrs(addrs []string) (discv5Nodes []string, kadDHTNodes []string) { - discv5Nodes, kadDHTNodes = parseGenericAddrs(addrs) - if len(discv5Nodes) == 0 && len(kadDHTNodes) == 0 { +func parseBootStrapAddrs(addrs []string) (discv5Nodes []string) { + discv5Nodes, _ = parseGenericAddrs(addrs) + if len(discv5Nodes) == 0 { log.Warn("No bootstrap addresses supplied") } - return discv5Nodes, kadDHTNodes + return discv5Nodes } func parseGenericAddrs(addrs []string) (enodeString []string, multiAddrString []string) { @@ -220,7 +204,7 @@ func parseGenericAddrs(addrs []string) (enodeString []string, multiAddrString [] multiAddrString = append(multiAddrString, addr) continue } - log.Errorf("Invalid address of %s provided", addr) + log.Errorf("Invalid address of %s provided: %v", addr, err) } return enodeString, multiAddrString } diff --git a/beacon-chain/p2p/discovery_test.go b/beacon-chain/p2p/discovery_test.go index 43898b6943..ceede26544 100644 --- a/beacon-chain/p2p/discovery_test.go +++ b/beacon-chain/p2p/discovery_test.go @@ -191,6 +191,7 @@ func TestStaticPeering_PeersAreAdded(t *testing.T) { cfg.UDPPort = 14501 cfg.StaticPeers = staticPeers cfg.StateNotifier = &mock.MockStateNotifier{} + cfg.NoDiscovery = true s, err := NewService(cfg) if err != nil { t.Fatal(err) diff --git a/beacon-chain/p2p/service.go b/beacon-chain/p2p/service.go index 5e6727cbf4..600261dbff 100644 --- a/beacon-chain/p2p/service.go +++ b/beacon-chain/p2p/service.go @@ -16,17 +16,12 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/p2p/enr" "github.com/gogo/protobuf/proto" - ds "github.com/ipfs/go-datastore" - dsync "github.com/ipfs/go-datastore/sync" "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p-core/host" "github.com/libp2p/go-libp2p-core/network" "github.com/libp2p/go-libp2p-core/peer" "github.com/libp2p/go-libp2p-core/protocol" - kaddht "github.com/libp2p/go-libp2p-kad-dht" - dhtopts "github.com/libp2p/go-libp2p-kad-dht/opts" pubsub "github.com/libp2p/go-libp2p-pubsub" - rhost "github.com/libp2p/go-libp2p/p2p/host/routed" filter "github.com/multiformats/go-multiaddr" ma "github.com/multiformats/go-multiaddr" "github.com/pkg/errors" @@ -38,7 +33,6 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers" pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" "github.com/prysmaticlabs/prysm/shared" - "github.com/prysmaticlabs/prysm/shared/featureconfig" "github.com/prysmaticlabs/prysm/shared/runutil" "github.com/prysmaticlabs/prysm/shared/slotutil" ) @@ -76,7 +70,6 @@ type Service struct { cancel context.CancelFunc cfg *Config peers *peers.Status - dht *kaddht.IpfsDHT addrFilter *filter.Filters privKey *ecdsa.PrivateKey exclusionList *ristretto.Cache @@ -115,10 +108,9 @@ func NewService(cfg *Config) (*Service, error) { isPreGenesis: true, } - dv5Nodes, kadDHTNodes := parseBootStrapAddrs(s.cfg.BootstrapNodeAddr) + dv5Nodes := parseBootStrapAddrs(s.cfg.BootstrapNodeAddr) cfg.Discv5BootStrapAddr = dv5Nodes - cfg.KademliaBootStrapAddr = kadDHTNodes ipAddr := ipAddr() s.privKey, err = privKey(s.cfg) @@ -143,22 +135,6 @@ func NewService(cfg *Config) (*Service, error) { return nil, err } - if len(cfg.KademliaBootStrapAddr) != 0 && !cfg.NoDiscovery && featureconfig.Get().EnableKadDHT { - dopts := []dhtopts.Option{ - dhtopts.Datastore(dsync.MutexWrap(ds.NewMapDatastore())), - dhtopts.Protocols( - prysmProtocolPrefix + "/dht", - ), - } - - s.dht, err = kaddht.New(ctx, h, dopts...) - if err != nil { - return nil, err - } - // Wrap host with a routed host so that peers can be looked up in the - // distributed hash table by their peer ID. - h = rhost.Wrap(h, s.dht) - } s.host = h // TODO(3147): Add gossip sub options @@ -242,32 +218,6 @@ func (s *Service) Start() { go s.listenForNewNodes() } - if len(s.cfg.KademliaBootStrapAddr) != 0 && !s.cfg.NoDiscovery && featureconfig.Get().EnableKadDHT { - for _, addr := range s.cfg.KademliaBootStrapAddr { - peersToWatch = append(peersToWatch, addr) - err := startDHTDiscovery(s.host, addr) - if err != nil { - log.WithError(err).Error("Could not connect to bootnode") - s.startupErr = err - return - } - if err := s.addKadDHTNodesToExclusionList(addr); err != nil { - s.startupErr = err - return - } - peer, err := MakePeer(addr) - if err != nil { - log.WithError(err).Errorf("Could not create peer") - } - s.host.ConnManager().Protect(peer.ID, "bootnode") - } - bcfg := kaddht.DefaultBootstrapConfig - bcfg.Period = 30 * time.Second - if err := s.dht.BootstrapWithConfig(s.ctx, bcfg); err != nil { - log.WithError(err).Error("Failed to bootstrap DHT") - } - } - s.started = true if len(s.cfg.StaticPeers) > 0 { @@ -604,20 +554,6 @@ func (s *Service) connectToBootnodes() error { return nil } -func (s *Service) addKadDHTNodesToExclusionList(addr string) error { - multiAddr, err := ma.NewMultiaddr(addr) - if err != nil { - return errors.Wrap(err, "could not get multiaddr") - } - addrInfo, err := peer.AddrInfoFromP2pAddr(multiAddr) - if err != nil { - return err - } - // bootnode is never dialled, so ttl is tentatively 1 year - s.exclusionList.Set(addrInfo.ID.String(), true, 1) - return nil -} - // Updates the service's discv5 listener record's attestation subnet // with a new value for a bitfield of subnets tracked. It also updates // the node's metadata by increasing the sequence number and the diff --git a/deps.bzl b/deps.bzl index 8275965a9d..753d26f27f 100644 --- a/deps.bzl +++ b/deps.bzl @@ -2274,18 +2274,11 @@ def prysm_deps(): sum = "h1:OZwENiFm6JOK3YR5PZJxkXlJE8a5u8g4YvAUrEV2MjM=", version = "v0.1.0", ) - go_repository( - name = "com_github_libp2p_go_libp2p_kad_dht", - build_file_proto_mode = "disable_global", - importpath = "github.com/libp2p/go-libp2p-kad-dht", - sum = "h1:+pb1DCkV/6oNQjTZVXl+Y++eV0rnelx/L8y1t4J+Rnw=", - version = "v0.2.1", - ) go_repository( name = "com_github_libp2p_go_libp2p_kbucket", importpath = "github.com/libp2p/go-libp2p-kbucket", - sum = "h1:XtNfN4WUy0cfeJoJgWCf1lor4Pp3kBkFJ9vQ+Zs+VUM=", - version = "v0.2.3", + sum = "h1:wg+VPpCtY61bCasGRexCuXOmEmdKjN+k1w+JtTwu9gA=", + version = "v0.4.2", ) go_repository( name = "com_github_libp2p_go_libp2p_loggables", @@ -3081,6 +3074,13 @@ def prysm_deps(): sum = "h1:hFnj3WR3E2tOcKaGpyzfP4gvFZ3t8JkQmbapN0Ct+oU=", version = "v0.1.0", ) + go_repository( + name = "com_github_libp2p_go_libp2p_kad_dht", + build_file_proto_mode = "disable_global", + importpath = "github.com/libp2p/go-libp2p-kad-dht", + sum = "h1:s7y38B+hdj1AkNR3PCTpvNqBsZHxOf7hoUy7+fNlSZQ=", + version = "v0.8.2", + ) go_repository( name = "com_github_mattn_go_colorable", importpath = "github.com/mattn/go-colorable", diff --git a/endtoend/components/beacon_node.go b/endtoend/components/beacon_node.go index 79c67ef4ea..5ce534ef1d 100644 --- a/endtoend/components/beacon_node.go +++ b/endtoend/components/beacon_node.go @@ -90,7 +90,6 @@ func StartBootnode(t *testing.T) (string, int) { args := []string{ fmt.Sprintf("--log-file=%s", stdOutFile.Name()), fmt.Sprintf("--discv5-port=%d", e2e.TestParams.BootNodePort), - fmt.Sprintf("--kad-port=%d", e2e.TestParams.BootNodePort+10), fmt.Sprintf("--metrics-port=%d", e2e.TestParams.BootNodePort+20), "--debug", } diff --git a/go.mod b/go.mod index 4b30848137..e267ecd32d 100644 --- a/go.mod +++ b/go.mod @@ -40,7 +40,6 @@ require ( github.com/ianlancetaylor/cgosymbolizer v0.0.0-20200424224625-be1b05b0b279 github.com/influxdata/influxdb v1.8.0 // indirect github.com/ipfs/go-cid v0.0.6 // indirect - github.com/ipfs/go-datastore v0.4.4 github.com/ipfs/go-ipfs-addr v0.0.1 github.com/ipfs/go-log v1.0.4 github.com/ipfs/go-log/v2 v2.1.1 @@ -55,14 +54,12 @@ require ( github.com/libp2p/go-libp2p-core v0.5.6 github.com/libp2p/go-libp2p-crypto v0.1.0 github.com/libp2p/go-libp2p-host v0.1.0 - github.com/libp2p/go-libp2p-kad-dht v0.2.1 - github.com/libp2p/go-libp2p-kbucket v0.2.3 // indirect + github.com/libp2p/go-libp2p-kad-dht v0.8.2 github.com/libp2p/go-libp2p-net v0.1.0 github.com/libp2p/go-libp2p-noise v0.1.1 github.com/libp2p/go-libp2p-peer v0.2.0 github.com/libp2p/go-libp2p-peerstore v0.2.4 github.com/libp2p/go-libp2p-pubsub v0.3.1 - github.com/libp2p/go-libp2p-record v0.1.2 // indirect github.com/libp2p/go-libp2p-swarm v0.2.5 github.com/libp2p/go-libp2p-tls v0.1.4-0.20200421131144-8a8ad624a291 // indirect github.com/libp2p/go-libp2p-yamux v0.2.8 // indirect diff --git a/go.sum b/go.sum index 4ed7a33bc9..24c2c58cb1 100644 --- a/go.sum +++ b/go.sum @@ -333,7 +333,6 @@ github.com/googleapis/gnostic v0.1.0 h1:rVsPeBmXbYv4If/cumu1AzZPwV58q433hvONV1UE github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= @@ -353,10 +352,11 @@ github.com/grpc-ecosystem/grpc-gateway v1.14.6 h1:8ERzHx8aj1Sc47mu9n/AksaKCSWrMc github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v0.0.0-20170914154624-68e816d1c783/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= @@ -416,6 +416,7 @@ github.com/ipfs/go-ipfs-addr v0.0.1/go.mod h1:uKTDljHT3Q3SUWzDLp3aYUi8MrY32fgNgo github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= github.com/ipfs/go-ipfs-util v0.0.1 h1:Wz9bL2wB2YBJqggkA4dD7oSmqB4cAnpNbGrlHJulv50= github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= +github.com/ipfs/go-ipns v0.0.2/go.mod h1:WChil4e0/m9cIINWLxZe1Jtf77oz5L05rO2ei/uKJ5U= github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= github.com/ipfs/go-log v1.0.2/go.mod h1:1MNjMxe0u6xvJZgeqbJ8vdo2TKaGwZ1a0Bpza+sr2Sk= github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A= @@ -426,8 +427,6 @@ github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBW github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= github.com/ipfs/go-log/v2 v2.1.1 h1:G4TtqN+V9y9HY9TA6BwbCVyyBZ2B9MbCjR2MtGx8FR0= github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM= -github.com/ipfs/go-todocounter v0.0.1 h1:kITWA5ZcQZfrUnDNkRn04Xzh0YFaDFXsoO2A81Eb6Lw= -github.com/ipfs/go-todocounter v0.0.1/go.mod h1:l5aErvQc8qKE2r7NDMjmq5UNAvuZy0rC8BHOplkWvZ4= github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= @@ -483,7 +482,6 @@ github.com/klauspost/reedsolomon v1.9.3/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d h1:68u9r4wEvL3gYg2jvAOgROwZ3H+Y3hIDk4tbbmIjcYQ= github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= @@ -506,22 +504,20 @@ github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoR github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc= github.com/libp2p/go-conn-security-multistream v0.2.0 h1:uNiDjS58vrvJTg9jO6bySd1rMKejieG7v45ekqHbZ1M= github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU= -github.com/libp2p/go-eventbus v0.0.2/go.mod h1:Hr/yGlwxA/stuLnpMiu82lpNKpvRy3EaJxPu40XYOwk= github.com/libp2p/go-eventbus v0.1.0 h1:mlawomSAjjkk97QnYiEmHsLu7E136+2oCWSHRUvMfzQ= github.com/libp2p/go-eventbus v0.1.0/go.mod h1:vROgu5cs5T7cv7POWlWxBaVLxfSegC5UGQf8A2eEmx4= github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= github.com/libp2p/go-flow-metrics v0.0.2/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= github.com/libp2p/go-flow-metrics v0.0.3 h1:8tAs/hSdNvUiLgtlSy3mxwxWP4I9y/jlkPFT7epKdeM= github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= -github.com/libp2p/go-libp2p v0.3.1/go.mod h1:e6bwxbdYH1HqWTz8faTChKGR0BjPc8p+6SyP8GTTR7Y= github.com/libp2p/go-libp2p v0.6.1/go.mod h1:CTFnWXogryAHjXAKEbOf1OWY+VeAP3lDMZkfEI5sT54= github.com/libp2p/go-libp2p v0.7.0/go.mod h1:hZJf8txWeCduQRDC/WSqBGMxaTHCOYHt2xSU1ivxn0k= github.com/libp2p/go-libp2p v0.7.4/go.mod h1:oXsBlTLF1q7pxr+9w6lqzS1ILpyHsaBPniVO7zIHGMw= github.com/libp2p/go-libp2p v0.8.1/go.mod h1:QRNH9pwdbEBpx5DTJYg+qxcVaDMAz3Ee/qDKwXujH5o= +github.com/libp2p/go-libp2p v0.8.2/go.mod h1:NQDA/F/qArMHGe0J7sDScaKjW8Jh4y/ozQqBbYJ+BnA= github.com/libp2p/go-libp2p v0.8.3/go.mod h1:EsH1A+8yoWK+L4iKcbPYu6MPluZ+CHWI9El8cTaefiM= github.com/libp2p/go-libp2p v0.9.2 h1:5rViLwtjkaEWcIBbk6oII39cVjPTElo3F78SSLf9yho= github.com/libp2p/go-libp2p v0.9.2/go.mod h1:cunHNLDVus66Ct9iXXcjKRLdmHdFdHVe1TAnbubJQqQ= -github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8= github.com/libp2p/go-libp2p-autonat v0.1.1/go.mod h1:OXqkeGOY2xJVWKAGV2inNF5aKN/djNA3fdpCWloIudE= github.com/libp2p/go-libp2p-autonat v0.2.0/go.mod h1:DX+9teU4pEEoZUqR1PiMlqliONQdNbfzE1C718tcViI= github.com/libp2p/go-libp2p-autonat v0.2.1/go.mod h1:MWtAhV5Ko1l6QBsHQNSuM6b1sRkXrpk0/LqCr+vCVxI= @@ -529,11 +525,9 @@ github.com/libp2p/go-libp2p-autonat v0.2.2/go.mod h1:HsM62HkqZmHR2k1xgX34WuWDzk/ github.com/libp2p/go-libp2p-autonat v0.2.3 h1:w46bKK3KTOUWDe5mDYMRjJu1uryqBp8HCNDp/TWMqKw= github.com/libp2p/go-libp2p-autonat v0.2.3/go.mod h1:2U6bNWCNsAG9LEbwccBDQbjzQ8Krdjge1jLTE9rdoMM= github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= -github.com/libp2p/go-libp2p-blankhost v0.1.3/go.mod h1:KML1//wiKR8vuuJO0y3LUd1uLv+tlkGTAr3jC0S5cLg= github.com/libp2p/go-libp2p-blankhost v0.1.4/go.mod h1:oJF0saYsAXQCSfDq254GMNmLNz6ZTHTOvtF4ZydUvwU= github.com/libp2p/go-libp2p-blankhost v0.1.6 h1:CkPp1/zaCrCnBo0AdsQA0O1VkUYoUOtyHOnoa8gKIcE= github.com/libp2p/go-libp2p-blankhost v0.1.6/go.mod h1:jONCAJqEP+Z8T6EQviGL4JsQcLx1LgTGtVqFNY8EMfQ= -github.com/libp2p/go-libp2p-circuit v0.1.1/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= github.com/libp2p/go-libp2p-circuit v0.1.4/go.mod h1:CY67BrEjKNDhdTk8UgBX1Y/H5c3xkAcs3gnksxY7osU= github.com/libp2p/go-libp2p-circuit v0.2.1/go.mod h1:BXPwYDN5A8z4OEY9sOfr2DUQMLQvKt/6oku45YUmjIo= github.com/libp2p/go-libp2p-circuit v0.2.2/go.mod h1:nkG3iE01tR3FoQ2nMm06IUrCpCyJp1Eo4A1xYdpjfs4= @@ -543,7 +537,6 @@ github.com/libp2p/go-libp2p-connmgr v0.2.3 h1:v7skKI9n+0obPpzMIO6aIlOSdQOmhxTf40 github.com/libp2p/go-libp2p-connmgr v0.2.3/go.mod h1:Gqjg29zI8CwXX21zRxy6gOg8VYu3zVerJRt2KyktzH4= github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= github.com/libp2p/go-libp2p-core v0.0.4/go.mod h1:jyuCQP356gzfCFtRKyvAbNkyeuxb7OlyhWZ3nls5d2I= -github.com/libp2p/go-libp2p-core v0.0.6/go.mod h1:0d9xmaYAVY5qmbp/fcgxHT3ZJsLjYeYPMJAUKpaCHrE= github.com/libp2p/go-libp2p-core v0.2.0/go.mod h1:X0eyB0Gy93v0DZtSYbEM7RnMChm9Uv3j7yRXjO77xSI= github.com/libp2p/go-libp2p-core v0.2.2/go.mod h1:8fcwTbsG2B+lTgRJ1ICZtiM5GWCWZVoVrLaDRvIRng0= github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g= @@ -562,18 +555,15 @@ github.com/libp2p/go-libp2p-core v0.5.6/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX github.com/libp2p/go-libp2p-crypto v0.0.1/go.mod h1:yJkNyDmO341d5wwXxDUGO0LykUVT72ImHNUqh5D/dBE= github.com/libp2p/go-libp2p-crypto v0.1.0 h1:k9MFy+o2zGDNGsaoZl0MA3iZ75qXxr9OOoAZF+sD5OQ= github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= -github.com/libp2p/go-libp2p-discovery v0.1.0/go.mod h1:4F/x+aldVHjHDHuX85x1zWoFTGElt8HnoDzwkFZm29g= github.com/libp2p/go-libp2p-discovery v0.2.0/go.mod h1:s4VGaxYMbw4+4+tsoQTqh7wfxg97AEdo4GYBt6BadWg= github.com/libp2p/go-libp2p-discovery v0.3.0/go.mod h1:o03drFnz9BVAZdzC/QUQ+NeQOu38Fu7LJGEOK2gQltw= github.com/libp2p/go-libp2p-discovery v0.4.0 h1:dK78UhopBk48mlHtRCzbdLm3q/81g77FahEBTjcqQT8= github.com/libp2p/go-libp2p-discovery v0.4.0/go.mod h1:bZ0aJSrFc/eX2llP0ryhb1kpgkPyTo23SJ5b7UQCMh4= github.com/libp2p/go-libp2p-host v0.1.0 h1:OZwENiFm6JOK3YR5PZJxkXlJE8a5u8g4YvAUrEV2MjM= github.com/libp2p/go-libp2p-host v0.1.0/go.mod h1:5+fWuLbDn8OxoxPN3CV0vsLe1hAKScSMbT84qRfxum8= -github.com/libp2p/go-libp2p-kad-dht v0.2.1 h1:+pb1DCkV/6oNQjTZVXl+Y++eV0rnelx/L8y1t4J+Rnw= -github.com/libp2p/go-libp2p-kad-dht v0.2.1/go.mod h1:k7ONOlup7HKzQ68dE6lSnp07cdxdkmnRa+6B4Fh9/w0= -github.com/libp2p/go-libp2p-kbucket v0.2.1/go.mod h1:/Rtu8tqbJ4WQ2KTCOMJhggMukOLNLNPY1EtEWWLxUvc= -github.com/libp2p/go-libp2p-kbucket v0.2.3 h1:XtNfN4WUy0cfeJoJgWCf1lor4Pp3kBkFJ9vQ+Zs+VUM= -github.com/libp2p/go-libp2p-kbucket v0.2.3/go.mod h1:opWrBZSWnBYPc315q497huxY3sz1t488X6OiXUEYWKA= +github.com/libp2p/go-libp2p-kad-dht v0.8.2 h1:s7y38B+hdj1AkNR3PCTpvNqBsZHxOf7hoUy7+fNlSZQ= +github.com/libp2p/go-libp2p-kad-dht v0.8.2/go.mod h1:u3rbYbp3CSraAHD5s81CJ3hHozKTud/UOXfAgh93Gek= +github.com/libp2p/go-libp2p-kbucket v0.4.2/go.mod h1:7sCeZx2GkNK1S6lQnGUW5JYZCFPnXzAZCCBBS70lytY= github.com/libp2p/go-libp2p-loggables v0.1.0 h1:h3w8QFfCt2UJl/0/NW4K829HX/0S4KD31PQ7m8UXXO8= github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo= @@ -581,7 +571,6 @@ github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiY github.com/libp2p/go-libp2p-mplex v0.2.2/go.mod h1:74S9eum0tVQdAfFiKxAyKzNdSuLqw5oadDq7+L/FELo= github.com/libp2p/go-libp2p-mplex v0.2.3 h1:2zijwaJvpdesST2MXpI5w9wWFRgYtMcpRX7rrw0jmOo= github.com/libp2p/go-libp2p-mplex v0.2.3/go.mod h1:CK3p2+9qH9x+7ER/gWWDYJ3QW5ZxWDkm+dVvjfuG3ek= -github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY= github.com/libp2p/go-libp2p-nat v0.0.5/go.mod h1:1qubaE5bTZMJE+E/uu2URroMbzdubFz1ChgiN79yKPE= github.com/libp2p/go-libp2p-nat v0.0.6 h1:wMWis3kYynCbHoyKLPBEMu4YRLltbm8Mk08HGSfvTkU= github.com/libp2p/go-libp2p-nat v0.0.6/go.mod h1:iV59LVhB3IkFvS6S6sauVTSOrNEANnINbI/fkaLimiw= @@ -609,18 +598,15 @@ github.com/libp2p/go-libp2p-pubsub v0.3.1 h1:7Hyv2d8BK/x1HGRJTZ8X++VQEP+WqDTSwpU github.com/libp2p/go-libp2p-pubsub v0.3.1/go.mod h1:TxPOBuo1FPdsTjFnv+FGZbNbWYsp74Culx+4ViQpato= github.com/libp2p/go-libp2p-quic-transport v0.3.7 h1:F9hxonkJvMipNim8swrvRk2uL9s8pqzHz0M6eMf8L58= github.com/libp2p/go-libp2p-quic-transport v0.3.7/go.mod h1:Kr4aDtnfHHNeENn5J+sZIVc+t8HpQn9W6BOxhVGHbgI= -github.com/libp2p/go-libp2p-record v0.1.1/go.mod h1:VRgKajOyMVgP/F0L5g3kH7SVskp17vFi2xheb5uMJtg= github.com/libp2p/go-libp2p-record v0.1.2 h1:M50VKzWnmUrk/M5/Dz99qO9Xh4vs8ijsK+7HkJvRP+0= github.com/libp2p/go-libp2p-record v0.1.2/go.mod h1:pal0eNcT5nqZaTV7UGhqeGqxFgGdsU/9W//C8dqjQDk= -github.com/libp2p/go-libp2p-routing v0.1.0 h1:hFnj3WR3E2tOcKaGpyzfP4gvFZ3t8JkQmbapN0Ct+oU= -github.com/libp2p/go-libp2p-routing v0.1.0/go.mod h1:zfLhI1RI8RLEzmEaaPwzonRvXeeSHddONWkcTcB54nE= +github.com/libp2p/go-libp2p-routing-helpers v0.2.3/go.mod h1:795bh+9YeoFl99rMASoiVgHdi5bjack0N1+AFAdbvBw= github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8= github.com/libp2p/go-libp2p-secio v0.2.0/go.mod h1:2JdZepB8J5V9mBp79BmwsaPQhRPNN2NrnB2lKQcdy6g= github.com/libp2p/go-libp2p-secio v0.2.1/go.mod h1:cWtZpILJqkqrSkiYcDBh5lA3wbT2Q+hz3rJQq3iftD8= github.com/libp2p/go-libp2p-secio v0.2.2 h1:rLLPvShPQAcY6eNurKNZq3eZjPWfU9kXF2eI9jIYdrg= github.com/libp2p/go-libp2p-secio v0.2.2/go.mod h1:wP3bS+m5AUnFA+OFO7Er03uO1mncHG0uVwGrwvjYlNY= github.com/libp2p/go-libp2p-swarm v0.1.0/go.mod h1:wQVsCdjsuZoc730CgOvh5ox6K8evllckjebkdiY5ta4= -github.com/libp2p/go-libp2p-swarm v0.2.1/go.mod h1:x07b4zkMFo2EvgPV2bMTlNmdQc8i+74Jjio7xGvsTgU= github.com/libp2p/go-libp2p-swarm v0.2.2/go.mod h1:fvmtQ0T1nErXym1/aa1uJEyN7JzaTNyBcHImCxRpPKU= github.com/libp2p/go-libp2p-swarm v0.2.3/go.mod h1:P2VO/EpxRyDxtChXz/VPVXyTnszHvokHKRhfkEgFKNM= github.com/libp2p/go-libp2p-swarm v0.2.4/go.mod h1:/xIpHFPPh3wmSthtxdGbkHZ0OET1h/GGZes8Wku/M5Y= @@ -640,7 +626,6 @@ github.com/libp2p/go-libp2p-transport-upgrader v0.2.0/go.mod h1:mQcrHj4asu6ArfSo github.com/libp2p/go-libp2p-transport-upgrader v0.3.0 h1:q3ULhsknEQ34eVDhv4YwKS8iet69ffs9+Fir6a7weN4= github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D1dwydnTmKRPXiAR/fyvi1dXuL4o= github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= -github.com/libp2p/go-libp2p-yamux v0.2.1/go.mod h1:1FBXiHDk1VyRM1C0aez2bCfHQ4vMZKkAQzZbkSQt5fI= github.com/libp2p/go-libp2p-yamux v0.2.2/go.mod h1:lIohaR0pT6mOt0AZ0L2dFze9hds9Req3OfS+B+dv4qw= github.com/libp2p/go-libp2p-yamux v0.2.5/go.mod h1:Zpgj6arbyQrmZ3wxSZxfBmbdnWtbZ48OpsfmQVTErwA= github.com/libp2p/go-libp2p-yamux v0.2.7/go.mod h1:X28ENrBMU/nm4I3Nx4sZ4dgjZ6VhLEn0XhIoZ5viCwU= @@ -658,7 +643,6 @@ github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3 github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-msgio v0.0.4 h1:agEFehY3zWJFUHK6SEMR7UYmk2z6kC3oeCM7ybLhguA= github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= -github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI= github.com/libp2p/go-nat v0.0.4/go.mod h1:Nmw50VAvKuk38jUBcmNh6p9lUJLoODbJRvYAa/+KSDo= github.com/libp2p/go-nat v0.0.5 h1:qxnwkco8RLKqVh1NmjQ+tJ8p8khNLFxuElYG/TwqW4Q= github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU= @@ -685,13 +669,11 @@ github.com/libp2p/go-tcp-transport v0.1.0/go.mod h1:oJ8I5VXryj493DEJ7OsBieu8fcg2 github.com/libp2p/go-tcp-transport v0.1.1/go.mod h1:3HzGvLbx6etZjnFlERyakbaYPdfjg2pWP97dFZworkY= github.com/libp2p/go-tcp-transport v0.2.0 h1:YoThc549fzmNJIh7XjHVtMIFaEDRtIrtWciG5LyYAPo= github.com/libp2p/go-tcp-transport v0.2.0/go.mod h1:vX2U0CnWimU4h0SGSEsg++AzvBcroCGYw28kh94oLe0= -github.com/libp2p/go-ws-transport v0.1.0/go.mod h1:rjw1MG1LU9YDC6gzmwObkPd/Sqwhw7yT74kj3raBFuo= github.com/libp2p/go-ws-transport v0.2.0/go.mod h1:9BHJz/4Q5A9ludYWKoGCFC5gUElzlHoKzu0yY9p/klM= github.com/libp2p/go-ws-transport v0.3.0/go.mod h1:bpgTJmRZAvVHrgHybCVyqoBmyLQ1fiZuEaBYusP5zsk= github.com/libp2p/go-ws-transport v0.3.1 h1:ZX5rWB8nhRRJVaPO6tmkGI/Xx8XNboYX20PW5hXIscw= github.com/libp2p/go-ws-transport v0.3.1/go.mod h1:bpgTJmRZAvVHrgHybCVyqoBmyLQ1fiZuEaBYusP5zsk= github.com/libp2p/go-yamux v1.2.2/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.2.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.3.0/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.3.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= github.com/libp2p/go-yamux v1.3.5/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= @@ -780,7 +762,6 @@ github.com/multiformats/go-multiaddr v0.2.2 h1:XZLDTszBIJe6m0zF6ITBrEcZR73OPUhCB github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u0xW5UouOmQQrn6a3Y= github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= -github.com/multiformats/go-multiaddr-dns v0.0.3/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= github.com/multiformats/go-multiaddr-dns v0.2.0 h1:YWJoIDwLePniH7OU5hBnDZV6SWuvJqJ0YtN6pLeH9zA= github.com/multiformats/go-multiaddr-dns v0.2.0/go.mod h1:TJ5pr5bBO7Y1B18djPuRsVkduhQH2YqYSbxWJzYGdK0= github.com/multiformats/go-multiaddr-fmt v0.0.1/go.mod h1:aBYjqL4T/7j4Qx+R73XSv/8JsgnRFlf0w2KGLCmXl3Q= @@ -1036,6 +1017,7 @@ github.com/urfave/cli/v2 v2.2.0 h1:JTTnM6wKzdA0Jqodd966MVj4vWbbquZykeX1sKbe2C4= github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/wangjia184/sortedset v0.0.0-20160527075905-f5d03557ba30/go.mod h1:YkocrP2K2tcw938x9gCOmT5G5eCD6jsTz0SZuyAqwIE= github.com/wealdtech/eth2-signer-api v1.3.0 h1:Fs0GfrdhboBKW7zaMvIvUHJaOB1ibpAmRG3lkB53in4= github.com/wealdtech/eth2-signer-api v1.3.0/go.mod h1:H8OpAoTBl6CaBvZEnhxWDjjWXNc3kwVFKWMAZd6sHlk= github.com/wealdtech/go-bytesutil v1.0.0/go.mod h1:jENeMqeTEU8FNZyDFRVc7KqBdRKSnJ9CCh26TcuNb9s= @@ -1075,15 +1057,11 @@ github.com/wealdtech/go-eth2-wallet-types/v2 v2.0.2 h1:Lhwne1gRUp961fD+eoWrgDbZF github.com/wealdtech/go-eth2-wallet-types/v2 v2.0.2/go.mod h1:d7WZ9WvtL3vGSHtSh/jnVh4YO93verLL1dRW2NK5sN4= github.com/wealdtech/go-indexer v1.0.0 h1:/S4rfWQbSOnnYmwnvuTVatDibZ8o1s9bmTCHO16XINg= github.com/wealdtech/go-indexer v1.0.0/go.mod h1:u1cjsbsOXsm5jzJDyLmZY7GsrdX8KYXKBXkZcAmk3Zg= -github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc h1:BCPnHtcboadS0DvysUuJXZ4lWVv5Bh5i7+tbIyi+ck4= -github.com/whyrusleeping/base32 v0.0.0-20170828182744-c30ac30633cc/go.mod h1:r45hJU7yEoA81k6MWNhpMj/kms0n14dkzkxYHoB96UM= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= github.com/whyrusleeping/go-logging v0.0.1/go.mod h1:lDPYj54zutzG1XYfHAhcc7oNXEburHQBn+Iqd4yS4vE= -github.com/whyrusleeping/go-notifier v0.0.0-20170827234753-097c5d47330f/go.mod h1:cZNvX9cFybI01GriPRMXDtczuvUhgbcYr9iCGaNlRv8= github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvXwGvqIpk20FA= -github.com/whyrusleeping/mdns v0.0.0-20180901202407-ef14215e6b30/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 h1:E9S12nwJwEOXe2d6gT6qxdvqMnNq+VnSsKPgm2ZZNds= github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= diff --git a/shared/featureconfig/config.go b/shared/featureconfig/config.go index f833711384..9de8566f7c 100644 --- a/shared/featureconfig/config.go +++ b/shared/featureconfig/config.go @@ -60,7 +60,6 @@ type Flags struct { SkipRegenHistoricalStates bool // SkipRegenHistoricalState skips regenerating historical states from genesis to last finalized. This enables a quick switch over to using new-state-mgmt. EnableInitSyncWeightedRoundRobin bool // EnableInitSyncWeightedRoundRobin enables weighted round robin fetching optimization in initial syncing. ReduceAttesterStateCopy bool // ReduceAttesterStateCopy reduces head state copies for attester rpc. - EnableKadDHT bool // EnableKadDHT stops libp2p's kademlia based discovery from running. // DisableForkChoice disables using LMD-GHOST fork choice to update // the head of the chain based on attestations and instead accepts any valid received block // as the chain head. UNSAFE, use with caution. @@ -217,10 +216,6 @@ func ConfigureBeaconChain(ctx *cli.Context) { log.Warn("Disabling state reference copy") cfg.EnableStateRefCopy = false } - if ctx.Bool(enableKadDht.Name) { - log.Warn("Enabling libp2p's kademlia discovery") - cfg.EnableKadDHT = true - } if ctx.IsSet(deprecatedP2PWhitelist.Name) { log.Warnf("--%s is deprecated, please use --%s", deprecatedP2PWhitelist.Name, cmd.P2PAllowList.Name) if err := ctx.Set(cmd.P2PAllowList.Name, ctx.String(deprecatedP2PWhitelist.Name)); err != nil { diff --git a/shared/featureconfig/flags.go b/shared/featureconfig/flags.go index a1a0e6f649..222dd88b34 100644 --- a/shared/featureconfig/flags.go +++ b/shared/featureconfig/flags.go @@ -156,10 +156,6 @@ var ( Name: "enable-stream-duties", Usage: "Enables validator duties streaming in the validator client", } - enableKadDht = &cli.BoolFlag{ - Name: "enable-kad-dht", - Usage: "Enables libp2p's kademlia based discovery to start running", - } disableInitSyncWeightedRoundRobin = &cli.BoolFlag{ Name: "disable-init-sync-wrr", Usage: "Disables weighted round robin fetching optimization", @@ -179,6 +175,11 @@ var devModeFlags = []cli.Flag{ const deprecatedUsage = "DEPRECATED. DO NOT USE." var ( + deprecatedEnableKadDht = &cli.BoolFlag{ + Name: "enable-kad-dht", + Usage: deprecatedUsage, + Hidden: true, + } deprecatedWeb3ProviderFlag = &cli.StringFlag{ Name: "web3provider", Usage: deprecatedUsage, @@ -433,6 +434,7 @@ var ( ) var deprecatedFlags = []cli.Flag{ + deprecatedEnableKadDht, deprecatedWeb3ProviderFlag, deprecatedEnableDynamicCommitteeSubnets, deprecatedNoCustomConfigFlag, @@ -541,7 +543,6 @@ var BeaconChainFlags = append(deprecatedFlags, []cli.Flag{ disableInitSyncWeightedRoundRobin, disableStateRefCopy, disableNewStateMgmt, - enableKadDht, disableReduceAttesterStateCopy, disableGRPCConnectionLogging, }...) diff --git a/tools/bootnode-query/main.go b/tools/bootnode-query/main.go index 0def7dcf6d..53f8adf43e 100644 --- a/tools/bootnode-query/main.go +++ b/tools/bootnode-query/main.go @@ -53,7 +53,7 @@ func main() { for i, p := range resp.GetCloserPeers() { log.Printf("Dialing peer %d: %+v\n", i, p.Addresses()) - if err := pingPeer(ctx, h, p); err != nil { + if err := pingPeer(ctx, h, &p); err != nil { log.Printf("Error: unable to ping peer %v\n", err) } else { log.Println("OK") @@ -62,8 +62,8 @@ func main() { } func pingPeer(ctx context.Context, h host.Host, p *dhtpb.Message_Peer) error { - pi := dhtpb.PBPeerToPeerInfo(p) - if err := h.Connect(ctx, *pi); err != nil { + pi := dhtpb.PBPeerToPeerInfo(*p) + if err := h.Connect(ctx, pi); err != nil { return err } diff --git a/tools/bootnode/BUILD.bazel b/tools/bootnode/BUILD.bazel index 402e96604e..f6e9f71240 100644 --- a/tools/bootnode/BUILD.bazel +++ b/tools/bootnode/BUILD.bazel @@ -22,14 +22,7 @@ go_library( "@com_github_ethereum_go_ethereum//p2p/discover:go_default_library", "@com_github_ethereum_go_ethereum//p2p/enode:go_default_library", "@com_github_ethereum_go_ethereum//p2p/enr:go_default_library", - "@com_github_ipfs_go_datastore//:go_default_library", - "@com_github_ipfs_go_datastore//sync:go_default_library", - "@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_kad_dht//:go_default_library", - "@com_github_libp2p_go_libp2p_kad_dht//opts:go_default_library", - "@com_github_multiformats_go_multiaddr//:go_default_library", "@com_github_pkg_errors//:go_default_library", "@com_github_prometheus_client_golang//prometheus:go_default_library", "@com_github_prometheus_client_golang//prometheus/promauto:go_default_library", @@ -67,8 +60,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_kad_dht//:go_default_library", - "@com_github_libp2p_go_libp2p_kad_dht//opts:go_default_library", "@com_github_multiformats_go_multiaddr//:go_default_library", "@com_github_pkg_errors//:go_default_library", "@com_github_prometheus_client_golang//prometheus:go_default_library", diff --git a/tools/bootnode/bootnode.go b/tools/bootnode/bootnode.go index d17f234ecf..c67c2d8e1d 100644 --- a/tools/bootnode/bootnode.go +++ b/tools/bootnode/bootnode.go @@ -27,14 +27,7 @@ import ( "github.com/ethereum/go-ethereum/p2p/discover" "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/p2p/enr" - ds "github.com/ipfs/go-datastore" - dsync "github.com/ipfs/go-datastore/sync" - logging "github.com/ipfs/go-log" - "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p-core/crypto" - kaddht "github.com/libp2p/go-libp2p-kad-dht" - dhtopts "github.com/libp2p/go-libp2p-kad-dht/opts" - ma "github.com/multiformats/go-multiaddr" "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" @@ -51,19 +44,15 @@ import ( ) var ( - debug = flag.Bool("debug", false, "Enable debug logging") - logFileName = flag.String("log-file", "", "Specify log filename, relative or absolute") - privateKey = flag.String("private", "", "Private key to use for peer ID") - discv5port = flag.Int("discv5-port", 4000, "Port to listen for discv5 connections") - kademliaPort = flag.Int("kad-port", 4500, "Port to listen for connections to kad DHT") - metricsPort = flag.Int("metrics-port", 5000, "Port to listen for connections") - externalIP = flag.String("external-ip", "", "External IP for the bootnode") - disableKad = flag.Bool("disable-kad", false, "Disables the bootnode from running kademlia dht") - log = logrus.WithField("prefix", "bootnode") - kadPeersCount = promauto.NewGauge(prometheus.GaugeOpts{ - Name: "bootstrap_node_kaddht_peers", - Help: "The current number of kaddht peers of the bootstrap node", - }) + debug = flag.Bool("debug", false, "Enable debug logging") + logFileName = flag.String("log-file", "", "Specify log filename, relative or absolute") + privateKey = flag.String("private", "", "Private key to use for peer ID") + discv5port = flag.Int("discv5-port", 4000, "Port to listen for discv5 connections") + kademliaPort = flag.Int("kad-port", 4500, "Port to listen for connections to kad DHT") + metricsPort = flag.Int("metrics-port", 5000, "Port to listen for connections") + externalIP = flag.String("external-ip", "", "External IP for the bootnode") + disableKad = flag.Bool("disable-kad", false, "Disables the bootnode from running kademlia dht") + log = logrus.WithField("prefix", "bootnode") discv5PeersCount = promauto.NewGauge(prometheus.GaugeOpts{ Name: "bootstrap_node_discv5_peers", Help: "The current number of discv5 peers of the bootstrap node", @@ -98,7 +87,7 @@ func main() { log.Debug("Debug logging enabled.") } - privKey, interfacePrivKey := extractPrivateKey() + privKey := extractPrivateKey() cfg := discover.Config{ PrivateKey: privKey, } @@ -111,9 +100,8 @@ func main() { node := listener.Self() log.Infof("Running bootnode: %s", node.String()) - var dhtValue *kaddht.IpfsDHT if !*disableKad { - dhtValue = startKademliaDHT(interfacePrivKey) + log.Warn("--disable-kad is now deprecated, kademlia has been removed from the bootnode") } handler := &handler{ @@ -129,56 +117,12 @@ func main() { // Update metrics once per slot. slotDuration := time.Duration(params.BeaconConfig().SecondsPerSlot) runutil.RunEvery(context.Background(), slotDuration*time.Second, func() { - updateMetrics(listener, dhtValue) + updateMetrics(listener) }) select {} } -func startKademliaDHT(privKey crypto.PrivKey) *kaddht.IpfsDHT { - if *debug { - logging.SetDebugLogging() - } - - ipAddr := defaultIP - if *externalIP != "" { - ipAddr = *externalIP - } - - listen, err := ma.NewMultiaddr(fmt.Sprintf("/ip4/%s/tcp/%d", ipAddr, *kademliaPort)) - if err != nil { - log.Fatalf("Failed to construct new multiaddress. %v", err) - } - opts := []libp2p.Option{ - libp2p.ListenAddrs(listen), - } - opts = append(opts, libp2p.Identity(privKey)) - - ctx := context.Background() - host, err := libp2p.New(ctx, opts...) - if err != nil { - log.Fatalf("Failed to create new host. %v", err) - } - - dopts := []dhtopts.Option{ - dhtopts.Datastore(dsync.MutexWrap(ds.NewMapDatastore())), - dhtopts.Protocols( - dhtProtocol, - ), - } - - dht, err := kaddht.New(ctx, host, dopts...) - if err != nil { - log.Fatalf("Failed to create new dht: %v", err) - } - if err := dht.Bootstrap(context.Background()); err != nil { - log.Fatalf("Failed to bootstrap DHT. %v", err) - } - - fmt.Printf("Running Kademlia DHT bootnode: /ip4/%s/tcp/%d/p2p/%s\n", ipAddr, *kademliaPort, host.ID().Pretty()) - return dht -} - func createListener(ipAddr string, port int, cfg discover.Config) *discover.UDPv5 { ip := net.ParseIP(ipAddr) if ip.To4() == nil { @@ -256,9 +200,8 @@ func createLocalNode(privKey *ecdsa.PrivateKey, ipAddr net.IP, port int) (*enode return localNode, nil } -func extractPrivateKey() (*ecdsa.PrivateKey, crypto.PrivKey) { +func extractPrivateKey() *ecdsa.PrivateKey { var privKey *ecdsa.PrivateKey - var interfaceKey crypto.PrivKey if *privateKey != "" { dst, err := hex.DecodeString(*privateKey) if err != nil { @@ -268,7 +211,6 @@ func extractPrivateKey() (*ecdsa.PrivateKey, crypto.PrivKey) { if err != nil { panic(err) } - interfaceKey = unmarshalledKey privKey = (*ecdsa.PrivateKey)((*btcec.PrivateKey)(unmarshalledKey.(*crypto.Secp256k1PrivateKey))) } else { @@ -276,7 +218,6 @@ func extractPrivateKey() (*ecdsa.PrivateKey, crypto.PrivKey) { if err != nil { panic(err) } - interfaceKey = privInterfaceKey privKey = (*ecdsa.PrivateKey)((*btcec.PrivateKey)(privInterfaceKey.(*crypto.Secp256k1PrivateKey))) log.Warning("No private key was provided. Using default/random private key") b, err := privInterfaceKey.Raw() @@ -286,13 +227,10 @@ func extractPrivateKey() (*ecdsa.PrivateKey, crypto.PrivKey) { log.Debugf("Private key %x", b) } - return privKey, interfaceKey + return privKey } -func updateMetrics(listener *discover.UDPv5, dht *kaddht.IpfsDHT) { - if dht != nil { - kadPeersCount.Set(float64(len(dht.Host().Peerstore().Peers()))) - } +func updateMetrics(listener *discover.UDPv5) { if listener != nil { discv5PeersCount.Set(float64(len(listener.AllNodes()))) } diff --git a/tools/bootnode/bootnode_test.go b/tools/bootnode/bootnode_test.go index 6485a401ec..0be91852a8 100644 --- a/tools/bootnode/bootnode_test.go +++ b/tools/bootnode/bootnode_test.go @@ -20,14 +20,14 @@ func TestBootnode_OK(t *testing.T) { if err != nil { t.Fatal(err) } - privKey, _ := extractPrivateKey() + privKey := extractPrivateKey() cfg := discover.Config{ PrivateKey: privKey, } listener := createListener(ipAddr, 4000, cfg) defer listener.Close() - cfg.PrivateKey, _ = extractPrivateKey() + cfg.PrivateKey = extractPrivateKey() bootNode, err := enode.Parse(enode.ValidSchemes, listener.Self().String()) if err != nil { t.Fatal(err) @@ -73,7 +73,7 @@ func TestPrivateKey_ParsesCorrectly(t *testing.T) { } *privateKey = fmt.Sprintf("%x", pk) - extractedKey, _ := extractPrivateKey() + extractedKey := extractPrivateKey() rawKey := (*ecdsa.PrivateKey)((*btcec.PrivateKey)(privKey.(*crypto.Secp256k1PrivateKey)))