aboutsummaryrefslogtreecommitdiffstats
path: root/core/consensus.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2018-10-01 17:36:00 +0800
committerGitHub <noreply@github.com>2018-10-01 17:36:00 +0800
commit9b78db7a4744176070bf968d50dbebb191b28b69 (patch)
tree553461f2860aa7da125b9459da8016dcd9a5af8c /core/consensus.go
parentb93f2fd48fffa225e5bd282a4a78aec2df6cb1a3 (diff)
downloadtangerine-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.go10
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 {