diff --git a/eth/api.go b/eth/api.go index 487d24ae7c957eb1e3aa57e9f5e0d0e2723da3c0..c16c3d1424e6559e803fc79ee17f10faebb77850 100644 --- a/eth/api.go +++ b/eth/api.go @@ -56,7 +56,8 @@ const defaultGas = uint64(90000) func blockByNumber(m *miner.Miner, bc *core.BlockChain, blockNr rpc.BlockNumber) *types.Block { // Pending block is only known by the miner if blockNr == rpc.PendingBlockNumber { - return m.PendingBlock() + block, _ := m.Pending() + return block } // Otherwise resolve and return the block if blockNr == rpc.LatestBlockNumber { @@ -72,7 +73,8 @@ func blockByNumber(m *miner.Miner, bc *core.BlockChain, blockNr rpc.BlockNumber) func stateAndBlockByNumber(m *miner.Miner, bc *core.BlockChain, blockNr rpc.BlockNumber, chainDb ethdb.Database) (*state.StateDB, *types.Block, error) { // Pending state is only known by the miner if blockNr == rpc.PendingBlockNumber { - return m.PendingState(), m.PendingBlock(), nil + block, state := m.Pending() + return state, block, nil } // Otherwise resolve the block number and return its state block := blockByNumber(m, bc, blockNr) diff --git a/miner/miner.go b/miner/miner.go index 6d4a84f1a4a5839081aa9014b8c833b19108eddc..e52cefaab22990a1116f9397fe43cfc010bd5a26 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -164,12 +164,9 @@ func (self *Miner) SetExtra(extra []byte) error { return nil } -func (self *Miner) PendingState() *state.StateDB { - return self.worker.pendingState() -} - -func (self *Miner) PendingBlock() *types.Block { - return self.worker.pendingBlock() +// Pending returns the currently pending block and associated state. +func (self *Miner) Pending() (*types.Block, *state.StateDB) { + return self.worker.pending() } func (self *Miner) SetEtherbase(addr common.Address) { diff --git a/miner/worker.go b/miner/worker.go index f3e95cb5fed8e8e6a4427f85cf8298a64b3707a4..108b2d6b5e7bd94ae47e9c4c8d477c9531bae977 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -152,13 +152,7 @@ func (self *worker) setEtherbase(addr common.Address) { self.coinbase = addr } -func (self *worker) pendingState() *state.StateDB { - self.currentMu.Lock() - defer self.currentMu.Unlock() - return self.current.state -} - -func (self *worker) pendingBlock() *types.Block { +func (self *worker) pending() (*types.Block, *state.StateDB) { self.currentMu.Lock() defer self.currentMu.Unlock() @@ -168,9 +162,9 @@ func (self *worker) pendingBlock() *types.Block { self.current.txs, nil, self.current.receipts, - ) + ), self.current.state } - return self.current.Block + return self.current.Block, self.current.state } func (self *worker) start() {