aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-03-19 20:52:46 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 13:50:04 +0800
commitbd0b5d25574c691b104fbd181b4ed80976ee21ae (patch)
tree3f9dd4e37cb00e3594b35d39f35da8f2f90f94cb
parent31bd7b061eb204447a0d932defd491a56950e792 (diff)
downloaddexon-bd0b5d25574c691b104fbd181b4ed80976ee21ae.tar
dexon-bd0b5d25574c691b104fbd181b4ed80976ee21ae.tar.gz
dexon-bd0b5d25574c691b104fbd181b4ed80976ee21ae.tar.bz2
dexon-bd0b5d25574c691b104fbd181b4ed80976ee21ae.tar.lz
dexon-bd0b5d25574c691b104fbd181b4ed80976ee21ae.tar.xz
dexon-bd0b5d25574c691b104fbd181b4ed80976ee21ae.tar.zst
dexon-bd0b5d25574c691b104fbd181b4ed80976ee21ae.zip
core: check coinbase for empty block (#282)
-rw-r--r--core/headerchain.go19
1 files changed, 13 insertions, 6 deletions
diff --git a/core/headerchain.go b/core/headerchain.go
index 61822210c..0c2000064 100644
--- a/core/headerchain.go
+++ b/core/headerchain.go
@@ -519,13 +519,20 @@ func (hc *HeaderChain) verifyDexonHeader(header *types.Header,
}
gs := gov.GetStateForConfigAtRound(header.Round)
- node, err := gs.GetNodeByID(coreBlock.ProposerID)
- if err != nil {
- return err
- }
- if header.Coinbase != node.Owner {
- return fmt.Errorf("coinbase mismatch")
+ if coreBlock.IsEmpty() {
+ if header.Coinbase != (common.Address{}) {
+ return fmt.Errorf("coinbase should be nil for empty block")
+ }
+ } else {
+ node, err := gs.GetNodeByID(coreBlock.ProposerID)
+ if err != nil {
+ return err
+ }
+
+ if header.Coinbase != node.Owner {
+ return fmt.Errorf("coinbase mismatch")
+ }
}
if header.Time != uint64(coreBlock.Finalization.Timestamp.UnixNano()/1000000) {