Fast forward to SF

This commit is contained in:
Tjaden Hess 2016-06-27 13:53:55 -04:00
parent 98be7cd833
commit 4dbdc8b08b
2 changed files with 42 additions and 38 deletions

View file

@ -268,46 +268,50 @@ func calcDifficultyHomestead(time, parentTime uint64, parentNumber, parentDiff *
// (parent_diff / 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99)) // (parent_diff / 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99))
// ) + 2^(periodCount - 2) // ) + 2^(periodCount - 2)
bigTime := new(big.Int).SetUint64(time) if (big.NewInt(1600000).Cmp(parentNumber) > 0 || big.NewInt(1799000).Cmp(parentNumber) < 0){
bigParentTime := new(big.Int).SetUint64(parentTime) bigTime := new(big.Int).SetUint64(time)
bigParentTime := new(big.Int).SetUint64(parentTime)
// holds intermediate values to make the algo easier to read & audit // holds intermediate values to make the algo easier to read & audit
x := new(big.Int) x := new(big.Int)
y := new(big.Int) y := new(big.Int)
// 1 - (block_timestamp -parent_timestamp) // 10 // 1 - (block_timestamp -parent_timestamp) // 10
x.Sub(bigTime, bigParentTime) x.Sub(bigTime, bigParentTime)
x.Div(x, big10) x.Div(x, big10)
x.Sub(common.Big1, x) x.Sub(common.Big1, x)
// max(1 - (block_timestamp - parent_timestamp) // 10, -99))) // max(1 - (block_timestamp - parent_timestamp) // 10, -99)))
if x.Cmp(bigMinus99) < 0 { if x.Cmp(bigMinus99) < 0 {
x.Set(bigMinus99) x.Set(bigMinus99)
}
// (parent_diff + parent_diff // 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99))
y.Div(parentDiff, params.DifficultyBoundDivisor)
x.Mul(y, x)
x.Add(parentDiff, x)
// minimum difficulty can ever be (before exponential factor)
if x.Cmp(params.MinimumDifficulty) < 0 {
x.Set(params.MinimumDifficulty)
}
// for the exponential factor
periodCount := new(big.Int).Add(parentNumber, common.Big1)
periodCount.Div(periodCount, ExpDiffPeriod)
// the exponential factor, commonly referred to as "the bomb"
// diff = diff + 2^(periodCount - 2)
if periodCount.Cmp(common.Big1) > 0 {
y.Sub(periodCount, common.Big2)
y.Exp(common.Big2, y, nil)
x.Add(x, y)
}
return x
} else {
return big.NewInt(20000)
} }
// (parent_diff + parent_diff // 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99))
y.Div(parentDiff, params.DifficultyBoundDivisor)
x.Mul(y, x)
x.Add(parentDiff, x)
// minimum difficulty can ever be (before exponential factor)
if x.Cmp(params.MinimumDifficulty) < 0 {
x.Set(params.MinimumDifficulty)
}
// for the exponential factor
periodCount := new(big.Int).Add(parentNumber, common.Big1)
periodCount.Div(periodCount, ExpDiffPeriod)
// the exponential factor, commonly referred to as "the bomb"
// diff = diff + 2^(periodCount - 2)
if periodCount.Cmp(common.Big1) > 0 {
y.Sub(periodCount, common.Big2)
y.Exp(common.Big2, y, nil)
x.Add(x, y)
}
return x
} }
func calcDifficultyFrontier(time, parentTime uint64, parentNumber, parentDiff *big.Int) *big.Int { func calcDifficultyFrontier(time, parentTime uint64, parentNumber, parentDiff *big.Int) *big.Int {

View file

@ -450,13 +450,13 @@ func (self *worker) commitNewWork() {
if parent.Time().Cmp(new(big.Int).SetInt64(tstamp)) >= 0 { if parent.Time().Cmp(new(big.Int).SetInt64(tstamp)) >= 0 {
tstamp = parent.Time().Int64() + 1 tstamp = parent.Time().Int64() + 1
} }
// this will ensure we're not going off too far in the future /* // this will ensure we're not going off too far in the future
if now := time.Now().Unix(); tstamp > now+4 { if now := time.Now().Unix(); tstamp > now+4 {
wait := time.Duration(tstamp-now) * time.Second wait := time.Duration(tstamp-now) * time.Second
glog.V(logger.Info).Infoln("We are too far in the future. Waiting for", wait) glog.V(logger.Info).Infoln("We are too far in the future. Waiting for", wait)
time.Sleep(wait) time.Sleep(wait)
} }
*/
num := parent.Number() num := parent.Number()
header := &types.Header{ header := &types.Header{
ParentHash: parent.Hash(), ParentHash: parent.Hash(),