Removed OOG check. Revert should always happen.

pull/216/head
obscuren 10 years ago
parent 0e93b98533
commit f5b8f3d41b
  1. 2
      core/block_manager.go
  2. 4
      core/execution.go
  3. 11
      core/state_transition.go

@ -129,7 +129,6 @@ done:
statelogger.Infoln(err)
erroneous = append(erroneous, tx)
err = nil
continue
}
}
@ -215,6 +214,7 @@ func (sm *BlockManager) ProcessWithParent(block, parent *types.Block) (td *big.I
receiptSha := types.DeriveSha(receipts)
if bytes.Compare(receiptSha, block.ReceiptSha) != 0 {
chainlogger.Debugln(receipts)
err = fmt.Errorf("validating receipt root. received=%x got=%x", block.ReceiptSha, receiptSha)
return
}

@ -56,9 +56,7 @@ func (self *Execution) exec(code, contextAddr []byte, caller vm.ClosureRef) (ret
snapshot := env.State().Copy()
defer func() {
if vm.IsOOGErr(err) {
env.State().Set(snapshot)
}
env.State().Set(snapshot)
chainlogger.Debugf("post state %x\n", env.State().Root())
}()

@ -189,12 +189,19 @@ func (self *StateTransition) TransitionState() (ret []byte, err error) {
self.rec = MakeContract(msg, self.state)
ret, err, ref = vmenv.Create(sender, self.rec.Address(), self.msg.Data(), self.gas, self.gasPrice, self.value)
ref.SetCode(ret)
if err == nil {
dataGas := big.NewInt(int64(len(ret)))
dataGas.Mul(dataGas, vm.GasCreateByte)
if err = self.UseGas(dataGas); err == nil {
ref.SetCode(ret)
}
}
} else {
ret, err = vmenv.Call(self.From(), self.To().Address(), self.msg.Data(), self.gas, self.gasPrice, self.value)
}
if err != nil {
statelogger.Debugln(err)
self.UseGas(self.gas)
}
return

Loading…
Cancel
Save