mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-25 14:16:44 +00:00
Fast forward to SF
This commit is contained in:
parent
98be7cd833
commit
4dbdc8b08b
2 changed files with 42 additions and 38 deletions
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue