From 48125a25eb9f4ece2613559ced5075bde1c75c7a Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 28 Oct 2014 13:26:30 +0100 Subject: [PATCH] Added missing requires on SSTORE SLOAD --- vm/common.go | 23 ++++++++++++----------- vm/vm_debug.go | 6 +++++- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/vm/common.go b/vm/common.go index c73744506..16a0b5523 100644 --- a/vm/common.go +++ b/vm/common.go @@ -19,17 +19,18 @@ const ( ) var ( - GasStep = big.NewInt(1) - GasSha = big.NewInt(20) - GasSLoad = big.NewInt(20) - GasSStore = big.NewInt(100) - GasBalance = big.NewInt(20) - GasCreate = big.NewInt(100) - GasCall = big.NewInt(20) - GasMemory = big.NewInt(1) - GasData = big.NewInt(5) - GasTx = big.NewInt(500) - GasLog = big.NewInt(32) + GasStep = big.NewInt(1) + GasSha = big.NewInt(20) + GasSLoad = big.NewInt(20) + GasSStore = big.NewInt(100) + GasSStoreRefund = big.NewInt(100) + GasBalance = big.NewInt(20) + GasCreate = big.NewInt(100) + GasCall = big.NewInt(20) + GasMemory = big.NewInt(1) + GasData = big.NewInt(5) + GasTx = big.NewInt(500) + GasLog = big.NewInt(32) Pow256 = ethutil.BigPow(2, 256) diff --git a/vm/vm_debug.go b/vm/vm_debug.go index d38373411..1e45813bc 100644 --- a/vm/vm_debug.go +++ b/vm/vm_debug.go @@ -169,9 +169,13 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) { gas.Set(ethutil.Big0) case SLOAD: + require(1) + gas.Set(GasSLoad) // Memory resize & Gas case SSTORE: + require(2) + var mult *big.Int y, x := stack.Peekn() val := closure.GetStorage(x) @@ -179,7 +183,7 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) { // 0 => non 0 mult = ethutil.Big3 } else if val.BigInt().Cmp(ethutil.Big0) != 0 && len(y.Bytes()) == 0 { - state.Refund(closure.caller.Address(), big.NewInt(100), closure.Price) + state.Refund(closure.caller.Address(), GasSStoreRefund, closure.Price) mult = ethutil.Big0 } else {