From aeffde1dc4774e7bce8ae5697d58716adecd61db Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Fri, 5 Jul 2019 12:05:37 +0200 Subject: [PATCH] cmd/devp2p: add disc4 randomwalk command --- cmd/devp2p/discv4cmd.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/cmd/devp2p/discv4cmd.go b/cmd/devp2p/discv4cmd.go index 1e56687a6c..70a98bd640 100644 --- a/cmd/devp2p/discv4cmd.go +++ b/cmd/devp2p/discv4cmd.go @@ -17,6 +17,7 @@ package main import ( + "context" "fmt" "net" "sort" @@ -38,6 +39,7 @@ var ( discv4PingCommand, discv4RequestRecordCommand, discv4ResolveCommand, + discv4RandomWalkCommand, }, } discv4PingCommand = cli.Command{ @@ -56,6 +58,12 @@ var ( Action: discv4Resolve, Flags: []cli.Flag{bootnodesFlag}, } + discv4RandomWalkCommand = cli.Command{ + Name: "randomwalk", + Usage: "Prints random nodes found in the DHT", + Action: discv4RandomNodes, + Flags: []cli.Flag{bootnodesFlag}, + } ) var bootnodesFlag = cli.StringFlag{ @@ -104,6 +112,21 @@ func discv4Resolve(ctx *cli.Context) error { return nil } +func discv4RandomNodes(ctx *cli.Context) error { + bootnodes, err := parseBootnodes(ctx) + if err != nil { + return err + } + disc, err := startV4(bootnodes) + if err != nil { + return err + } + iter := disc.RandomNodes() + for { + fmt.Println(iter.NextNode(context.Background())) + } +} + func getNodeArgAndStartV4(ctx *cli.Context) (*enode.Node, *discover.UDPv4, error) { if ctx.NArg() != 1 { return nil, nil, fmt.Errorf("missing node as command-line argument")