diff options
author | Gustav Simonsson <gustav.simonsson@gmail.com> | 2015-07-08 19:21:06 +0800 |
---|---|---|
committer | Gustav Simonsson <gustav.simonsson@gmail.com> | 2015-07-08 19:21:06 +0800 |
commit | 5d6d40f329410f20d9ceb92d31985a883d94cb24 (patch) | |
tree | da3fb90259dece012c9f4daa972b76542d4870d8 /core | |
parent | b08abe64e4d2e3fa8d10c89647595226d6b31b19 (diff) | |
download | dexon-5d6d40f329410f20d9ceb92d31985a883d94cb24.tar.gz dexon-5d6d40f329410f20d9ceb92d31985a883d94cb24.tar.zst dexon-5d6d40f329410f20d9ceb92d31985a883d94cb24.zip |
Use uint64 on ts in chain_manager, block_processor
Diffstat (limited to 'core')
-rw-r--r-- | core/block_processor.go | 2 | ||||
-rw-r--r-- | core/chain_makers.go | 2 | ||||
-rw-r--r-- | core/chain_manager.go | 2 | ||||
-rw-r--r-- | core/chain_util.go | 10 |
4 files changed, 11 insertions, 5 deletions
diff --git a/core/block_processor.go b/core/block_processor.go index e912c0b6e..f50ebb55a 100644 --- a/core/block_processor.go +++ b/core/block_processor.go @@ -386,7 +386,7 @@ func ValidateHeader(pow pow.PoW, block *types.Header, parent *types.Block, check return BlockEqualTSErr } - expd := CalcDifficulty(int64(block.Time), int64(parent.Time()), parent.Difficulty()) + expd := CalcDifficulty(block.Time, parent.Time(), parent.Difficulty()) if expd.Cmp(block.Difficulty) != 0 { return fmt.Errorf("Difficulty check failed for block %v, %v", block.Difficulty, expd) } diff --git a/core/chain_makers.go b/core/chain_makers.go index 07670608a..501fe7a92 100644 --- a/core/chain_makers.go +++ b/core/chain_makers.go @@ -171,7 +171,7 @@ func makeHeader(parent *types.Block, state *state.StateDB) *types.Header { Root: state.Root(), ParentHash: parent.Hash(), Coinbase: parent.Coinbase(), - Difficulty: CalcDifficulty(int64(time), int64(parent.Time()), parent.Difficulty()), + Difficulty: CalcDifficulty(time, parent.Time(), parent.Difficulty()), GasLimit: CalcGasLimit(parent), GasUsed: new(big.Int), Number: new(big.Int).Add(parent.Number(), common.Big1), diff --git a/core/chain_manager.go b/core/chain_manager.go index bd49bafc2..3c5eb0e8a 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -611,7 +611,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) { // Allow up to MaxFuture second in the future blocks. If this limit // is exceeded the chain is discarded and processed at a later time // if given. - if max := time.Now().Unix() + maxTimeFutureBlocks; int64(block.Time()) > max { + if max := uint64(time.Now().Unix()) + maxTimeFutureBlocks; block.Time() > max { return i, fmt.Errorf("%v: BlockFutureErr, %v > %v", BlockFutureErr, block.Time(), max) } diff --git a/core/chain_util.go b/core/chain_util.go index 96c9a03d8..7e3d8eba8 100644 --- a/core/chain_util.go +++ b/core/chain_util.go @@ -31,10 +31,16 @@ import ( // CalcDifficulty is the difficulty adjustment algorithm. It returns // the difficulty that a new block b should have when created at time // given the parent block's time and difficulty. -func CalcDifficulty(time int64, parentTime int64, parentDiff *big.Int) *big.Int { +func CalcDifficulty(time, parentTime uint64, parentDiff *big.Int) *big.Int { diff := new(big.Int) adjust := new(big.Int).Div(parentDiff, params.DifficultyBoundDivisor) - if big.NewInt(time-parentTime).Cmp(params.DurationLimit) < 0 { + bigTime := new(big.Int) + bigParentTime := new(big.Int) + + bigTime.SetUint64(time) + bigParentTime.SetUint64(parentTime) + + if bigTime.Sub(bigTime, bigParentTime).Cmp(params.DurationLimit) < 0 { diff.Add(parentDiff, adjust) } else { diff.Sub(parentDiff, adjust) |