diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-10-01 17:36:00 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-01 17:36:00 +0800 |
commit | 9b78db7a4744176070bf968d50dbebb191b28b69 (patch) | |
tree | 553461f2860aa7da125b9459da8016dcd9a5af8c /core/consensus.go | |
parent | b93f2fd48fffa225e5bd282a4a78aec2df6cb1a3 (diff) | |
download | tangerine-consensus-9b78db7a4744176070bf968d50dbebb191b28b69.tar tangerine-consensus-9b78db7a4744176070bf968d50dbebb191b28b69.tar.gz tangerine-consensus-9b78db7a4744176070bf968d50dbebb191b28b69.tar.bz2 tangerine-consensus-9b78db7a4744176070bf968d50dbebb191b28b69.tar.lz tangerine-consensus-9b78db7a4744176070bf968d50dbebb191b28b69.tar.xz tangerine-consensus-9b78db7a4744176070bf968d50dbebb191b28b69.tar.zst tangerine-consensus-9b78db7a4744176070bf968d50dbebb191b28b69.zip |
core: check block timestamp (#156)
Diffstat (limited to 'core/consensus.go')
-rw-r--r-- | core/consensus.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/core/consensus.go b/core/consensus.go index 842d9aa..96abd36 100644 --- a/core/consensus.go +++ b/core/consensus.go @@ -56,6 +56,8 @@ var ( "unknown block is confirmed") ErrIncorrectBlockPosition = fmt.Errorf( "position of block is incorrect") + ErrIncorrectBlockTime = fmt.Errorf( + "block timestampe is incorrect") ) // consensusBAReceiver implements agreementReceiver. @@ -522,6 +524,14 @@ func (con *Consensus) sanityCheck(b *types.Block) (err error) { if b.Position.ShardID != 0 || b.Position.ChainID >= con.rbModule.chainNum() { return ErrIncorrectBlockPosition } + // Check the timestamp of block. + if !b.IsGenesis() { + chainTime := con.rbModule.chainTime(b.Position.ChainID) + if b.Timestamp.Before(chainTime.Add(con.currentConfig.MinBlockInterval)) || + b.Timestamp.After(chainTime.Add(con.currentConfig.MaxBlockInterval)) { + return ErrIncorrectBlockTime + } + } // Check the hash of block. hash, err := hashBlock(b) if err != nil || hash != b.Hash { |