From 05d2d8f27d0bea5b20be9bc3b4a259a12298ecab Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Sat, 26 Apr 2014 02:11:00 +0200
Subject: [PATCH] Actually convert gas

---
 ethchain/state_manager.go | 17 ++++++++++++-----
 1 file 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)
 }
-- 
GitLab