aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/geth
diff options
context:
space:
mode:
authorJeffrey Wilcke <geffobscura@gmail.com>2015-08-06 17:20:15 +0800
committerJeffrey Wilcke <geffobscura@gmail.com>2015-08-07 18:24:32 +0800
commit785b3e7a575f26f3c33e3369d8a75fb131f90584 (patch)
treea74e3cddf0a03f1e6a048175be8177bc59526ed6 /cmd/geth
parentac10c9352e053a06a69fad634e9ec6624ee5808d (diff)
downloaddexon-785b3e7a575f26f3c33e3369d8a75fb131f90584.tar.gz
dexon-785b3e7a575f26f3c33e3369d8a75fb131f90584.tar.zst
dexon-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')
-rw-r--r--cmd/geth/main.go32
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)