Fixed consensus issue for refunding
* Refund should _always_ go to the origin
This commit is contained in:
@@ -48,9 +48,8 @@ type BlockProcessor struct {
|
||||
|
||||
func NewBlockProcessor(db ethutil.Database, txpool *TxPool, chainManager *ChainManager, eventMux *event.TypeMux) *BlockProcessor {
|
||||
sm := &BlockProcessor{
|
||||
db: db,
|
||||
mem: make(map[string]*big.Int),
|
||||
//Pow: ðash.Ethash{},
|
||||
db: db,
|
||||
mem: make(map[string]*big.Int),
|
||||
Pow: ezp.New(),
|
||||
bc: chainManager,
|
||||
eventMux: eventMux,
|
||||
@@ -100,7 +99,8 @@ func (self *BlockProcessor) ApplyTransaction(coinbase *state.StateObject, stated
|
||||
// Notify all subscribers
|
||||
if !transientProcess {
|
||||
go self.eventMux.Post(TxPostEvent{tx})
|
||||
go self.eventMux.Post(statedb.Logs())
|
||||
logs := statedb.Logs()
|
||||
go self.eventMux.Post(logs)
|
||||
}
|
||||
|
||||
return receipt, txGas, err
|
||||
|
@@ -126,7 +126,7 @@ func (self *StateTransition) BuyGas() error {
|
||||
|
||||
self.AddGas(self.msg.Gas())
|
||||
self.initialGas.Set(self.msg.Gas())
|
||||
sender.SubAmount(MessageGasValue(self.msg))
|
||||
sender.SubBalance(MessageGasValue(self.msg))
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -251,13 +251,16 @@ func (self *StateTransition) RefundGas() {
|
||||
coinbase, sender := self.Coinbase(), self.From()
|
||||
// Return remaining gas
|
||||
remaining := new(big.Int).Mul(self.gas, self.msg.GasPrice())
|
||||
sender.AddAmount(remaining)
|
||||
fmt.Println("REFUND:", remaining)
|
||||
sender.AddBalance(remaining)
|
||||
|
||||
uhalf := new(big.Int).Div(self.GasUsed(), ethutil.Big2)
|
||||
for addr, ref := range self.state.Refunds() {
|
||||
refund := ethutil.BigMin(uhalf, ref)
|
||||
self.gas.Add(self.gas, refund)
|
||||
self.state.AddBalance([]byte(addr), refund.Mul(refund, self.msg.GasPrice()))
|
||||
addToIt := refund.Mul(refund, self.msg.GasPrice())
|
||||
fmt.Println("ADD TO IT", addToIt)
|
||||
self.state.AddBalance([]byte(addr), addToIt)
|
||||
}
|
||||
|
||||
coinbase.RefundGas(self.gas, self.msg.GasPrice())
|
||||
|
Reference in New Issue
Block a user