|
|
@@ -60,12 +60,12 @@ func NewBlockProcessor(db ethutil.Database, txpool *TxPool, chainManager *ChainM
|
|
|
return sm
|
|
|
}
|
|
|
|
|
|
-func (sm *BlockProcessor) TransitionState(statedb *state.StateDB, parent, block *types.Block) (receipts types.Receipts, err error) {
|
|
|
+func (sm *BlockProcessor) TransitionState(statedb *state.StateDB, parent, block *types.Block, transientProcess bool) (receipts types.Receipts, err error) {
|
|
|
coinbase := statedb.GetOrNewStateObject(block.Header().Coinbase)
|
|
|
coinbase.SetGasPool(CalcGasLimit(parent, block))
|
|
|
|
|
|
// Process the transactions on to parent state
|
|
|
- receipts, _, _, _, err = sm.ApplyTransactions(coinbase, statedb, block, block.Transactions(), false)
|
|
|
+ receipts, _, _, _, err = sm.ApplyTransactions(coinbase, statedb, block, block.Transactions(), transientProcess)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
@@ -100,10 +100,9 @@ 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())
|
|
|
}
|
|
|
|
|
|
- go self.eventMux.Post(statedb.Logs())
|
|
|
-
|
|
|
return receipt, txGas, err
|
|
|
}
|
|
|
|
|
|
@@ -179,7 +178,7 @@ func (sm *BlockProcessor) processWithParent(block, parent *types.Block) (td *big
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- receipts, err := sm.TransitionState(state, parent, block)
|
|
|
+ receipts, err := sm.TransitionState(state, parent, block, false)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
@@ -316,13 +315,10 @@ func (sm *BlockProcessor) GetLogs(block *types.Block) (logs state.Logs, err erro
|
|
|
|
|
|
var (
|
|
|
parent = sm.bc.GetBlock(block.Header().ParentHash)
|
|
|
- //state = state.New(parent.Trie().Copy())
|
|
|
- state = state.New(parent.Root(), sm.db)
|
|
|
+ state = state.New(parent.Root(), sm.db)
|
|
|
)
|
|
|
|
|
|
- defer state.Reset()
|
|
|
-
|
|
|
- sm.TransitionState(state, parent, block)
|
|
|
+ sm.TransitionState(state, parent, block, true)
|
|
|
sm.AccumulateRewards(state, block, parent)
|
|
|
|
|
|
return state.Logs(), nil
|