eth, miner: removed unnecessary state.Copy()

* miner: removed unnecessary state.Copy()

* eth: made use of new miner method without state copying

* miner: More documentation about new method
This commit is contained in:
Martin Holst Swende
2016-11-30 10:48:48 +01:00
committed by Péter Szilágyi
parent 3363a1c227
commit 9f8bc00cf5
3 changed files with 26 additions and 2 deletions

View File

@ -187,6 +187,15 @@ func (self *Miner) Pending() (*types.Block, *state.StateDB) {
return self.worker.pending()
}
// PendingBlock returns the currently pending block.
//
// Note, to access both the pending block and the pending state
// simultaneously, please use Pending(), as the pending state can
// change between multiple method calls
func (self *Miner) PendingBlock() *types.Block {
return self.worker.pendingBlock()
}
func (self *Miner) SetEtherbase(addr common.Address) {
self.coinbase = addr
self.worker.setEtherbase(addr)

View File

@ -176,6 +176,21 @@ func (self *worker) pending() (*types.Block, *state.StateDB) {
return self.current.Block, self.current.state.Copy()
}
func (self *worker) pendingBlock() *types.Block {
self.currentMu.Lock()
defer self.currentMu.Unlock()
if atomic.LoadInt32(&self.mining) == 0 {
return types.NewBlock(
self.current.header,
self.current.txs,
nil,
self.current.receipts,
)
}
return self.current.Block
}
func (self *worker) start() {
self.mu.Lock()
defer self.mu.Unlock()