aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-10-10 16:54:47 +0800
committerFelix Lange <fjl@users.noreply.github.com>2017-10-10 16:54:47 +0800
commitd3beff7e209cd82bcd044f51501886d926ce1b8a (patch)
treed4c0b3ce4748db4a1c22e6f9d3363eaed3e6384c
parent40a3856af9d28fce6550509a01cf926525da5d22 (diff)
downloaddexon-d3beff7e209cd82bcd044f51501886d926ce1b8a.tar.gz
dexon-d3beff7e209cd82bcd044f51501886d926ce1b8a.tar.zst
dexon-d3beff7e209cd82bcd044f51501886d926ce1b8a.zip
consensus/clique: add fork hash enforcement (#15236)
-rw-r--r--consensus/clique/clique.go5
-rw-r--r--consensus/clique/snapshot_test.go2
2 files changed, 6 insertions, 1 deletions
diff --git a/consensus/clique/clique.go b/consensus/clique/clique.go
index d2fb6934b..8d6cf653d 100644
--- a/consensus/clique/clique.go
+++ b/consensus/clique/clique.go
@@ -29,6 +29,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/consensus"
+ "github.com/ethereum/go-ethereum/consensus/misc"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
@@ -313,6 +314,10 @@ func (c *Clique) verifyHeader(chain consensus.ChainReader, header *types.Header,
return errInvalidDifficulty
}
}
+ // If all checks passed, validate any special fields for hard forks
+ if err := misc.VerifyForkHashes(chain.Config(), header, false); err != nil {
+ return err
+ }
// All basic checks passed, verify cascading fields
return c.verifyCascadingFields(chain, header, parents)
}
diff --git a/consensus/clique/snapshot_test.go b/consensus/clique/snapshot_test.go
index f18934b89..a1717d799 100644
--- a/consensus/clique/snapshot_test.go
+++ b/consensus/clique/snapshot_test.go
@@ -74,7 +74,7 @@ type testerChainReader struct {
db ethdb.Database
}
-func (r *testerChainReader) Config() *params.ChainConfig { panic("not supported") }
+func (r *testerChainReader) Config() *params.ChainConfig { return params.AllProtocolChanges }
func (r *testerChainReader) CurrentHeader() *types.Header { panic("not supported") }
func (r *testerChainReader) GetHeader(common.Hash, uint64) *types.Header { panic("not supported") }
func (r *testerChainReader) GetBlock(common.Hash, uint64) *types.Block { panic("not supported") }