diff options
author | obscuren <geffobscura@gmail.com> | 2014-04-26 08:11:00 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-04-26 08:11:00 +0800 |
commit | 05d2d8f27d0bea5b20be9bc3b4a259a12298ecab (patch) | |
tree | b3777435ed025de576a88ed88266bb756c7e7571 | |
parent | ca6e3f6defae958cece52ee7d26ca1b53b0adebb (diff) | |
download | go-tangerine-05d2d8f27d0bea5b20be9bc3b4a259a12298ecab.tar go-tangerine-05d2d8f27d0bea5b20be9bc3b4a259a12298ecab.tar.gz go-tangerine-05d2d8f27d0bea5b20be9bc3b4a259a12298ecab.tar.bz2 go-tangerine-05d2d8f27d0bea5b20be9bc3b4a259a12298ecab.tar.lz go-tangerine-05d2d8f27d0bea5b20be9bc3b4a259a12298ecab.tar.xz go-tangerine-05d2d8f27d0bea5b20be9bc3b4a259a12298ecab.tar.zst go-tangerine-05d2d8f27d0bea5b20be9bc3b4a259a12298ecab.zip |
Actually convert gas
-rw-r--r-- | ethchain/state_manager.go | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/ethchain/state_manager.go b/ethchain/state_manager.go index 1ab58386a..628ab6a27 100644 --- a/ethchain/state_manager.go +++ b/ethchain/state_manager.go @@ -314,10 +314,17 @@ func (sm *StateManager) Stop() { } func (sm *StateManager) EvalScript(script []byte, object *StateObject, tx *Transaction, block *Block) { - caller := sm.procState.GetAccount(tx.Sender()) - closure := NewClosure(caller, object, script, sm.procState, tx.Gas, tx.GasPrice, tx.Value) + account := sm.procState.GetAccount(tx.Sender()) + + err := account.ConvertGas(tx.Gas, tx.GasPrice) + if err != nil { + ethutil.Config.Log.Debugln(err) + return + } + + closure := NewClosure(account, object, script, sm.procState, tx.Gas, tx.GasPrice, tx.Value) vm := NewVm(sm.procState, sm, RuntimeVars{ - Origin: caller.Address(), + Origin: account.Address(), BlockNumber: block.BlockInfo().Number, PrevHash: block.PrevHash, Coinbase: block.Coinbase, @@ -328,8 +335,8 @@ func (sm *StateManager) EvalScript(script []byte, object *StateObject, tx *Trans closure.Call(vm, tx.Data, nil) // Update the account (refunds) - sm.procState.UpdateStateObject(caller) - sm.Changed(caller) + sm.procState.UpdateStateObject(account) + sm.Changed(account) sm.procState.UpdateStateObject(object) sm.Changed(object) } |