diff options
author | Jeffrey Wilcke <geffobscura@gmail.com> | 2015-08-06 17:20:15 +0800 |
---|---|---|
committer | Jeffrey Wilcke <geffobscura@gmail.com> | 2015-08-07 18:24:32 +0800 |
commit | 785b3e7a575f26f3c33e3369d8a75fb131f90584 (patch) | |
tree | a74e3cddf0a03f1e6a048175be8177bc59526ed6 /cmd/geth/main.go | |
parent | ac10c9352e053a06a69fad634e9ec6624ee5808d (diff) | |
download | go-tangerine-785b3e7a575f26f3c33e3369d8a75fb131f90584.tar.gz go-tangerine-785b3e7a575f26f3c33e3369d8a75fb131f90584.tar.zst go-tangerine-785b3e7a575f26f3c33e3369d8a75fb131f90584.zip |
cmd/geth, eth: added canonical extra data
Implemented canonical extra data according to
https://github.com/ethereum/wiki/wiki/Extra-Data
Diffstat (limited to 'cmd/geth/main.go')
-rw-r--r-- | cmd/geth/main.go | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 74f4e90c3..ddfa8e661 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -42,6 +42,8 @@ import ( "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/logger/glog" "github.com/ethereum/go-ethereum/metrics" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/rpc/codec" "github.com/ethereum/go-ethereum/rpc/comms" "github.com/mattn/go-colorable" @@ -49,11 +51,14 @@ import ( ) const ( - ClientIdentifier = "Geth" - Version = "1.0.1" + ClientIdentifier = "Geth " + VersionMajor = 1 + VersionMinor = 0 + VersionPatch = 1 ) var ( + Version = fmt.Sprintf("%d.%d.%d", VersionMajor, VersionMinor, VersionPatch) gitCommit string // set via linker flagg nodeNameVersion string app *cli.App @@ -346,6 +351,27 @@ func main() { } } +func makeDefaultExtra() []byte { + var clientInfo = struct { + Version uint + Name string + GoVersion string + Os string + }{uint(VersionMajor<<16 | VersionMinor<<8 | VersionPatch), ClientIdentifier, runtime.Version(), runtime.GOOS} + extra, err := rlp.EncodeToBytes(clientInfo) + if err != nil { + glog.V(logger.Warn).Infoln("error setting canonical miner information:", err) + } + + if uint64(len(extra)) > params.MaximumExtraDataSize.Uint64() { + glog.V(logger.Warn).Infoln("error setting canonical miner information: extra exceeds", params.MaximumExtraDataSize) + glog.V(logger.Debug).Infof("extra: %x\n", extra) + return nil + } + + return extra +} + func run(ctx *cli.Context) { utils.CheckLegalese(ctx.GlobalString(utils.DataDirFlag.Name)) if ctx.GlobalBool(utils.OlympicFlag.Name) { @@ -353,6 +379,8 @@ func run(ctx *cli.Context) { } cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx) + cfg.ExtraData = makeDefaultExtra() + ethereum, err := eth.New(cfg) if err != nil { utils.Fatalf("%v", err) |