aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-04-26 08:11:00 +0800
committerobscuren <geffobscura@gmail.com>2014-04-26 08:11:00 +0800
commit05d2d8f27d0bea5b20be9bc3b4a259a12298ecab (patch)
treeb3777435ed025de576a88ed88266bb756c7e7571
parentca6e3f6defae958cece52ee7d26ca1b53b0adebb (diff)
downloadgo-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.go17
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)
}