aboutsummaryrefslogtreecommitdiffstats
path: root/miner
diff options
context:
space:
mode:
Diffstat (limited to 'miner')
-rw-r--r--miner/miner.go9
-rw-r--r--miner/worker.go15
2 files changed, 24 insertions, 0 deletions
diff --git a/miner/miner.go b/miner/miner.go
index c85a1cd8e..87568ac18 100644
--- a/miner/miner.go
+++ b/miner/miner.go
@@ -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)
diff --git a/miner/worker.go b/miner/worker.go
index ca00c7229..edbd502c1 100644
--- a/miner/worker.go
+++ b/miner/worker.go
@@ -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()