diff options
author | Maran <maran.hidskes@gmail.com> | 2014-06-10 23:22:06 +0800 |
---|---|---|
committer | Maran <maran.hidskes@gmail.com> | 2014-06-10 23:22:06 +0800 |
commit | 753f749423df7d5fba55a4080383d215db8e0fc7 (patch) | |
tree | 2ae43c26dcfe4618aa6484e16f1d9e125976a347 /ethchain | |
parent | 2e6cf42011a4176a01f3e3f777cc1ddc4125511f (diff) | |
download | dexon-753f749423df7d5fba55a4080383d215db8e0fc7.tar.gz dexon-753f749423df7d5fba55a4080383d215db8e0fc7.tar.zst dexon-753f749423df7d5fba55a4080383d215db8e0fc7.zip |
Implement CalcGasPrice for ethereum/go-ethereum#77
Diffstat (limited to 'ethchain')
-rw-r--r-- | ethchain/block.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ethchain/block.go b/ethchain/block.go index 73e29f878..780c60869 100644 --- a/ethchain/block.go +++ b/ethchain/block.go @@ -154,6 +154,35 @@ func (block *Block) PayFee(addr []byte, fee *big.Int) bool { 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 { bi := BlockInfo{} data, _ := ethutil.Config.Db.Get(append(block.Hash(), []byte("Info")...)) |