diff options
author | Felix Lange <fjl@twurst.com> | 2016-07-20 00:53:22 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-20 00:53:22 +0800 |
commit | 65f340bb95bd10f59b3086f322e751bf46a4e446 (patch) | |
tree | 713dab2610fcb8bf0aa835d61eecca1a7be85f5a | |
parent | fe564613870e268399b2919a04aa8c7e40c45dd8 (diff) | |
parent | 91130ea3fce93a747a9ac0df9453a6f0d6a6c0e1 (diff) | |
download | go-tangerine-65f340bb95bd10f59b3086f322e751bf46a4e446.tar go-tangerine-65f340bb95bd10f59b3086f322e751bf46a4e446.tar.gz go-tangerine-65f340bb95bd10f59b3086f322e751bf46a4e446.tar.bz2 go-tangerine-65f340bb95bd10f59b3086f322e751bf46a4e446.tar.lz go-tangerine-65f340bb95bd10f59b3086f322e751bf46a4e446.tar.xz go-tangerine-65f340bb95bd10f59b3086f322e751bf46a4e446.tar.zst go-tangerine-65f340bb95bd10f59b3086f322e751bf46a4e446.zip |
Merge pull request #2821 from Arachnid/discover-enode
cmd/bootnode: Add support for outputting a node's ID on the command line
-rw-r--r-- | cmd/bootnode/main.go | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/cmd/bootnode/main.go b/cmd/bootnode/main.go index 7d3f9fdb3..40d3cdc17 100644 --- a/cmd/bootnode/main.go +++ b/cmd/bootnode/main.go @@ -20,6 +20,7 @@ package main import ( "crypto/ecdsa" "flag" + "fmt" "os" "github.com/ethereum/go-ethereum/cmd/utils" @@ -32,7 +33,8 @@ import ( func main() { var ( listenAddr = flag.String("addr", ":30301", "listen address") - genKey = flag.String("genkey", "", "generate a node key and quit") + genKey = flag.String("genkey", "", "generate a node key") + writeAddr = flag.Bool("writeaddress", false, "write out the node's pubkey hash and quit") nodeKeyFile = flag.String("nodekey", "", "private key filename") nodeKeyHex = flag.String("nodekeyhex", "", "private key as hex (for testing)") natdesc = flag.String("nat", "none", "port mapping mechanism (any|none|upnp|pmp|extip:<IP>)") @@ -45,22 +47,19 @@ func main() { glog.SetToStderr(true) flag.Parse() - if *genKey != "" { - key, err := crypto.GenerateKey() - if err != nil { - utils.Fatalf("could not generate key: %v", err) - } - if err := crypto.SaveECDSA(*genKey, key); err != nil { - utils.Fatalf("%v", err) - } - os.Exit(0) - } - natm, err := nat.Parse(*natdesc) if err != nil { utils.Fatalf("-nat: %v", err) } switch { + case *genKey != "": + nodeKey, err = crypto.GenerateKey() + if err != nil { + utils.Fatalf("could not generate key: %v", err) + } + if err = crypto.SaveECDSA(*genKey, nodeKey); err != nil { + utils.Fatalf("%v", err) + } case *nodeKeyFile == "" && *nodeKeyHex == "": utils.Fatalf("Use -nodekey or -nodekeyhex to specify a private key") case *nodeKeyFile != "" && *nodeKeyHex != "": @@ -75,6 +74,11 @@ func main() { } } + if *writeAddr { + fmt.Printf("%v\n", discover.PubkeyID(&nodeKey.PublicKey)) + os.Exit(0) + } + if _, err := discover.ListenUDP(nodeKey, *listenAddr, natm, ""); err != nil { utils.Fatalf("%v", err) } |