Implement CalcGasPrice for ethereum/go-ethereum#77
This commit is contained in:
parent
2e6cf42011
commit
753f749423
@ -154,6 +154,35 @@ func (block *Block) PayFee(addr []byte, fee *big.Int) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (block *Block) CalcGasLimit(parent *Block) *big.Int {
|
||||||
|
if block.Number == big.NewInt(0) {
|
||||||
|
return ethutil.BigPow(10, 6)
|
||||||
|
}
|
||||||
|
previous := new(big.Int).Mul(big.NewInt(1023), parent.GasLimit)
|
||||||
|
current := new(big.Rat).Mul(new(big.Rat).SetInt(block.GasUsed), big.NewRat(6, 5))
|
||||||
|
curInt := new(big.Int).Div(current.Num(), current.Denom())
|
||||||
|
|
||||||
|
result := new(big.Int).Add(previous, curInt)
|
||||||
|
result.Div(result, big.NewInt(1024))
|
||||||
|
|
||||||
|
min := ethutil.BigPow(10, 4)
|
||||||
|
|
||||||
|
return ethutil.BigMax(min, result)
|
||||||
|
/*
|
||||||
|
base := new(big.Int)
|
||||||
|
base2 := new(big.Int)
|
||||||
|
parentGL := bc.CurrentBlock.GasLimit
|
||||||
|
parentUsed := bc.CurrentBlock.GasUsed
|
||||||
|
|
||||||
|
base.Mul(parentGL, big.NewInt(1024-1))
|
||||||
|
base2.Mul(parentUsed, big.NewInt(6))
|
||||||
|
base2.Div(base2, big.NewInt(5))
|
||||||
|
base.Add(base, base2)
|
||||||
|
base.Div(base, big.NewInt(1024))
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func (block *Block) BlockInfo() BlockInfo {
|
func (block *Block) BlockInfo() BlockInfo {
|
||||||
bi := BlockInfo{}
|
bi := BlockInfo{}
|
||||||
data, _ := ethutil.Config.Db.Get(append(block.Hash(), []byte("Info")...))
|
data, _ := ethutil.Config.Db.Get(append(block.Hash(), []byte("Info")...))
|
||||||
|
Loading…
Reference in New Issue
Block a user