|
|
|
@ -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 |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|