Refund gas

This commit is contained in:
obscuren
2014-06-16 12:25:18 +02:00
parent 8b15732c1e
commit 0d77632839
2 changed files with 22 additions and 4 deletions

View File

@ -110,6 +110,15 @@ func (self *StateTransition) BuyGas() error {
return nil
}
func (self *StateTransition) RefundGas() {
coinbase, sender := self.Coinbase(), self.Sender()
coinbase.RefundGas(self.gas, self.tx.GasPrice)
// Return remaining gas
remaining := new(big.Int).Mul(self.gas, self.tx.GasPrice)
sender.AddAmount(remaining)
}
func (self *StateTransition) TransitionState() (err error) {
//snapshot := st.state.Snapshot()
@ -141,6 +150,8 @@ func (self *StateTransition) TransitionState() (err error) {
// XXX Transactions after this point are considered valid.
defer func() {
self.RefundGas()
if sender != nil {
self.state.UpdateStateObject(sender)
}
@ -148,6 +159,8 @@ func (self *StateTransition) TransitionState() (err error) {
if receiver != nil {
self.state.UpdateStateObject(receiver)
}
self.state.UpdateStateObject(self.Coinbase())
}()
// Increment the nonce for the next transaction
@ -203,10 +216,6 @@ func (self *StateTransition) TransitionState() (err error) {
}
}
// Return remaining gas
remaining := new(big.Int).Mul(self.gas, tx.GasPrice)
sender.AddAmount(remaining)
return nil
}