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:
		
				
					committed by
					
						
						Péter Szilágyi
					
				
			
			
				
	
			
			
			
						parent
						
							3363a1c227
						
					
				
				
					commit
					9f8bc00cf5
				
			@@ -56,7 +56,7 @@ func (b *EthApiBackend) SetHead(number uint64) {
 | 
				
			|||||||
func (b *EthApiBackend) HeaderByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*types.Header, error) {
 | 
					func (b *EthApiBackend) HeaderByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*types.Header, error) {
 | 
				
			||||||
	// Pending block is only known by the miner
 | 
						// Pending block is only known by the miner
 | 
				
			||||||
	if blockNr == rpc.PendingBlockNumber {
 | 
						if blockNr == rpc.PendingBlockNumber {
 | 
				
			||||||
		block, _ := b.eth.miner.Pending()
 | 
							block := b.eth.miner.PendingBlock()
 | 
				
			||||||
		return block.Header(), nil
 | 
							return block.Header(), nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// Otherwise resolve and return the block
 | 
						// Otherwise resolve and return the block
 | 
				
			||||||
@@ -69,7 +69,7 @@ func (b *EthApiBackend) HeaderByNumber(ctx context.Context, blockNr rpc.BlockNum
 | 
				
			|||||||
func (b *EthApiBackend) BlockByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*types.Block, error) {
 | 
					func (b *EthApiBackend) BlockByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*types.Block, error) {
 | 
				
			||||||
	// Pending block is only known by the miner
 | 
						// Pending block is only known by the miner
 | 
				
			||||||
	if blockNr == rpc.PendingBlockNumber {
 | 
						if blockNr == rpc.PendingBlockNumber {
 | 
				
			||||||
		block, _ := b.eth.miner.Pending()
 | 
							block := b.eth.miner.PendingBlock()
 | 
				
			||||||
		return block, nil
 | 
							return block, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// Otherwise resolve and return the block
 | 
						// Otherwise resolve and return the block
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -187,6 +187,15 @@ func (self *Miner) Pending() (*types.Block, *state.StateDB) {
 | 
				
			|||||||
	return self.worker.pending()
 | 
						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) {
 | 
					func (self *Miner) SetEtherbase(addr common.Address) {
 | 
				
			||||||
	self.coinbase = addr
 | 
						self.coinbase = addr
 | 
				
			||||||
	self.worker.setEtherbase(addr)
 | 
						self.worker.setEtherbase(addr)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -176,6 +176,21 @@ func (self *worker) pending() (*types.Block, *state.StateDB) {
 | 
				
			|||||||
	return self.current.Block, self.current.state.Copy()
 | 
						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() {
 | 
					func (self *worker) start() {
 | 
				
			||||||
	self.mu.Lock()
 | 
						self.mu.Lock()
 | 
				
			||||||
	defer self.mu.Unlock()
 | 
						defer self.mu.Unlock()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user