|
|
@@ -36,9 +36,10 @@ import (
|
|
|
|
|
|
// Ethash proof-of-work protocol constants.
|
|
|
var (
|
|
|
- FrontierBlockReward *big.Int = big.NewInt(5e+18) // Block reward in wei for successfully mining a block
|
|
|
- ByzantiumBlockReward *big.Int = big.NewInt(3e+18) // Block reward in wei for successfully mining a block upward from Byzantium
|
|
|
- maxUncles = 2 // Maximum number of uncles allowed in a single block
|
|
|
+ FrontierBlockReward *big.Int = big.NewInt(5e+18) // Block reward in wei for successfully mining a block
|
|
|
+ ByzantiumBlockReward *big.Int = big.NewInt(3e+18) // Block reward in wei for successfully mining a block upward from Byzantium
|
|
|
+ maxUncles = 2 // Maximum number of uncles allowed in a single block
|
|
|
+ allowedFutureBlockTime = 15 * time.Second // Max time from current time allowed for blocks, before they're considered future blocks
|
|
|
)
|
|
|
|
|
|
// Various error messages to mark blocks invalid. These should be private to
|
|
|
@@ -231,7 +232,7 @@ func (ethash *Ethash) verifyHeader(chain consensus.ChainReader, header, parent *
|
|
|
return errLargeBlockTime
|
|
|
}
|
|
|
} else {
|
|
|
- if header.Time.Cmp(big.NewInt(time.Now().Unix())) > 0 {
|
|
|
+ if header.Time.Cmp(big.NewInt(time.Now().Add(allowedFutureBlockTime).Unix())) > 0 {
|
|
|
return consensus.ErrFutureBlock
|
|
|
}
|
|
|
}
|