diff --git a/core/block_manager.go b/core/block_manager.go index 7227c6f95..f6c73bc2c 100644 --- a/core/block_manager.go +++ b/core/block_manager.go @@ -60,14 +60,6 @@ type BlockManager struct { Pow pow.PoW // The ethereum manager interface eth EthManager - // The managed states - // Transiently state. The trans state isn't ever saved, validated and - // it could be used for setting account nonces without effecting - // the main states. - transState *state.StateDB - // Mining state. The mining state is used purely and solely by the mining - // operation. - miningState *state.StateDB // The last attempted block is mainly used for debugging purposes // This does not have to be a valid block and will be set during @@ -75,14 +67,17 @@ type BlockManager struct { lastAttemptedBlock *types.Block events event.Subscription + + eventMux *event.TypeMux } func NewBlockManager(ethereum EthManager) *BlockManager { sm := &BlockManager{ - mem: make(map[string]*big.Int), - Pow: ezp.New(), - eth: ethereum, - bc: ethereum.ChainManager(), + mem: make(map[string]*big.Int), + Pow: ezp.New(), + eth: ethereum, + bc: ethereum.ChainManager(), + eventMux: ethereum.EventMux(), } return sm @@ -151,7 +146,7 @@ done: // Notify all subscribers if !transientProcess { - go self.eth.EventMux().Post(TxPostEvent{tx}) + go self.eventMux.Post(TxPostEvent{tx}) } receipts = append(receipts, receipt) @@ -245,8 +240,6 @@ func (sm *BlockManager) ProcessWithParent(block, parent *types.Block) (td *big.I chainlogger.Infof("Processed block #%d (%x...)\n", block.Number, block.Hash()[0:4]) - sm.transState = state.Copy() - sm.eth.TxPool().RemoveSet(block.Transactions()) return td, messages, nil diff --git a/core/chain_manager.go b/core/chain_manager.go index 0322edaa5..edf50e715 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -288,6 +288,8 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error { self.SetTotalDifficulty(td) self.insert(block) + self.transState = self.State().Copy() + //sm.eth.TxPool().RemoveSet(block.Transactions()) } self.eventMux.Post(NewBlockEvent{block})