From 8865fda872e9cf5eb7ca1fa89ba226d0d3c19ee6 Mon Sep 17 00:00:00 2001 From: Jeffrey Wilcke Date: Sun, 26 Jul 2015 12:24:52 +0200 Subject: [PATCH] params: reduce extra data to 32 bytes --- eth/backend.go | 5 +++-- params/protocol_params.go | 4 ++-- rpc/api/miner.go | 8 ++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/eth/backend.go b/eth/backend.go index 64d3ddee6e..6f77121c8a 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -45,6 +45,7 @@ import ( "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/discover" "github.com/ethereum/go-ethereum/p2p/nat" + "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/whisper" ) @@ -369,8 +370,8 @@ func New(config *Config) (*Ethereum, error) { eth.miner.SetGasPrice(config.GasPrice) extra := config.Name - if len(extra) > 1024 { - extra = extra[:1024] + if uint64(len(extra)) > params.MaximumExtraDataSize.Uint64() { + extra = extra[:params.MaximumExtraDataSize.Uint64()] } eth.miner.SetExtra([]byte(extra)) diff --git a/params/protocol_params.go b/params/protocol_params.go index 5c34abe8cd..684e06b7ec 100755 --- a/params/protocol_params.go +++ b/params/protocol_params.go @@ -22,7 +22,7 @@ package params import "math/big" var ( - MaximumExtraDataSize = big.NewInt(1024) // Maximum size extra data may be after Genesis. + MaximumExtraDataSize = big.NewInt(32) // Maximum size extra data may be after Genesis. ExpByteGas = big.NewInt(10) // Times ceil(log256(exponent)) for the EXP instruction. SloadGas = big.NewInt(50) // Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added. CallValueTransferGas = big.NewInt(9000) // Paid for CALL when the value transfor is non-zero. @@ -32,7 +32,7 @@ var ( DifficultyBoundDivisor = big.NewInt(2048) // The bound divisor of the difficulty, used in the update calculations. QuadCoeffDiv = big.NewInt(512) // Divisor for the quadratic particle of the memory cost equation. GenesisDifficulty = big.NewInt(131072) // Difficulty of the Genesis block. - DurationLimit = big.NewInt(8) // The decision boundary on the blocktime duration used to determine whether difficulty should go up or not. + DurationLimit = big.NewInt(13) // The decision boundary on the blocktime duration used to determine whether difficulty should go up or not. SstoreSetGas = big.NewInt(20000) // Once per SLOAD operation. LogDataGas = big.NewInt(8) // Per byte in a LOG* operation's data. CallStipend = big.NewInt(2300) // Free gas given at beginning of call. diff --git a/rpc/api/miner.go b/rpc/api/miner.go index 93507f54a1..12203ffe07 100644 --- a/rpc/api/miner.go +++ b/rpc/api/miner.go @@ -17,9 +17,12 @@ package api import ( + "fmt" + "github.com/ethereum/ethash" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/eth" + "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc/codec" "github.com/ethereum/go-ethereum/rpc/shared" ) @@ -122,6 +125,11 @@ func (self *minerApi) SetExtra(req *shared.Request) (interface{}, error) { if err := self.codec.Decode(req.Params, &args); err != nil { return nil, err } + + if uint64(len(args.Data)) > params.MaximumExtraDataSize.Uint64()*2 { + return false, fmt.Errorf("extra datasize can be no longer than %v bytes", params.MaximumExtraDataSize) + } + self.ethereum.Miner().SetExtra([]byte(args.Data)) return true, nil }