diff options
author | Péter Szilágyi <peterke@gmail.com> | 2016-10-29 22:21:26 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-29 22:21:26 +0800 |
commit | 63d293cdbe14cf00045b888522ef36d21c907c26 (patch) | |
tree | dc2251251b9bd72eac05ebdf17b146788c148ae7 /core | |
parent | 79789af2e7fce8807d21a8eedbf42d41a7c55848 (diff) | |
parent | f0dbec0c93a772b0f3553399126d8c49bfcc85d4 (diff) | |
download | dexon-63d293cdbe14cf00045b888522ef36d21c907c26.tar.gz dexon-63d293cdbe14cf00045b888522ef36d21c907c26.tar.zst dexon-63d293cdbe14cf00045b888522ef36d21c907c26.zip |
Merge pull request #3195 from karalabe/fix-testnet-fastsync
cmd/utils, core, params: explicitly pick reprice fork for fast sync
Diffstat (limited to 'core')
-rw-r--r-- | core/block_validator.go | 10 | ||||
-rw-r--r-- | core/config.go | 4 |
2 files changed, 12 insertions, 2 deletions
diff --git a/core/block_validator.go b/core/block_validator.go index e5bc6178b..1bb1a9713 100644 --- a/core/block_validator.go +++ b/core/block_validator.go @@ -248,7 +248,15 @@ func ValidateHeader(config *ChainConfig, pow pow.PoW, header *types.Header, pare } } // If all checks passed, validate the extra-data field for hard forks - return ValidateDAOHeaderExtraData(config, header) + if err := ValidateDAOHeaderExtraData(config, header); err != nil { + return err + } + if config.HomesteadGasRepriceBlock != nil && config.HomesteadGasRepriceBlock.Cmp(header.Number) == 0 { + if config.HomesteadGasRepriceHash != (common.Hash{}) && config.HomesteadGasRepriceHash != header.Hash() { + return ValidationError("Homestead gas reprice fork hash mismatch: have 0x%x, want 0x%x", header.Hash(), config.HomesteadGasRepriceHash) + } + } + return nil } // CalcDifficulty is the difficulty adjustment algorithm. It returns diff --git a/core/config.go b/core/config.go index 3ab04e520..96e39ea3c 100644 --- a/core/config.go +++ b/core/config.go @@ -20,6 +20,7 @@ import ( "errors" "math/big" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/params" ) @@ -36,7 +37,8 @@ type ChainConfig struct { DAOForkBlock *big.Int `json:"daoForkBlock"` // TheDAO hard-fork switch block (nil = no fork) DAOForkSupport bool `json:"daoForkSupport"` // Whether the nodes supports or opposes the DAO hard-fork - HomesteadGasRepriceBlock *big.Int `json:"homesteadGasRepriceBlock"` // Homestead gas reprice switch block (nil = no fork) + HomesteadGasRepriceBlock *big.Int `json:"homesteadGasRepriceBlock"` // Homestead gas reprice switch block (nil = no fork) + HomesteadGasRepriceHash common.Hash `json:"homesteadGasRepriceHash"` // Homestead gas reprice switch block hash (fast sync aid) VmConfig vm.Config `json:"-"` } |