aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2016-10-20 20:27:47 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2016-11-13 17:44:04 +0800
commit779ddb183275ed506ebae972876fe04098c738e5 (patch)
tree6d52a07ce591b8eb5e9a57b40051cd5e705a3ce2
parent445feaeef58bd89a113743dccf6fd5df55cde6fa (diff)
downloadgo-tangerine-779ddb183275ed506ebae972876fe04098c738e5.tar.gz
go-tangerine-779ddb183275ed506ebae972876fe04098c738e5.tar.zst
go-tangerine-779ddb183275ed506ebae972876fe04098c738e5.zip
core/vm, params: EIP160: EXP reprice
-rw-r--r--core/vm/vm.go3
-rw-r--r--params/gas_table.go12
2 files changed, 6 insertions, 9 deletions
diff --git a/core/vm/vm.go b/core/vm/vm.go
index 6e316acda..56aca6912 100644
--- a/core/vm/vm.go
+++ b/core/vm/vm.go
@@ -313,7 +313,8 @@ func calculateGasAndSize(gasTable params.GasTable, env Environment, contract *Co
quadMemGas(mem, newMemSize, gas)
case EXP:
- gas.Add(gas, new(big.Int).Mul(big.NewInt(int64(len(stack.data[stack.len()-2].Bytes()))), params.ExpByteGas))
+ expByteLen := int64((stack.data[stack.len()-2].BitLen() + 7) / 8)
+ gas.Add(gas, new(big.Int).Mul(big.NewInt(expByteLen), gasTable.ExpByte))
case SSTORE:
err := stack.require(2)
if err != nil {
diff --git a/params/gas_table.go b/params/gas_table.go
index 3b27cd522..093dacc8b 100644
--- a/params/gas_table.go
+++ b/params/gas_table.go
@@ -26,9 +26,7 @@ type GasTable struct {
Calls *big.Int
Suicide *big.Int
- Exp *big.Int
- ExpOneByte *big.Int
- Exp256 *big.Int
+ ExpByte *big.Int
// CreateBySuicide occurs when the
// refunded account is one that does
@@ -48,7 +46,7 @@ var (
SLoad: big.NewInt(50),
Calls: big.NewInt(40),
Suicide: big.NewInt(0),
- Exp: big.NewInt(20),
+ ExpByte: big.NewInt(10),
// explicitly set to nil to indicate
// this rule does not apply to homestead.
@@ -66,7 +64,7 @@ var (
SLoad: big.NewInt(200),
Calls: big.NewInt(700),
Suicide: big.NewInt(5000),
- Exp: big.NewInt(20),
+ ExpByte: big.NewInt(10),
CreateBySuicide: big.NewInt(25000),
}
@@ -78,9 +76,7 @@ var (
SLoad: big.NewInt(200),
Calls: big.NewInt(700),
Suicide: big.NewInt(5000),
- Exp: big.NewInt(80),
- ExpOneByte: big.NewInt(160),
- Exp256: big.NewInt(2640),
+ ExpByte: big.NewInt(50),
CreateBySuicide: big.NewInt(25000),
}