diff options
author | Wei-Ning Huang <aitjcize@gmail.com> | 2018-11-13 15:26:21 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@dexon.org> | 2019-03-12 12:19:09 +0800 |
commit | 91a4a2d552a13dfbd7f58bbfa2a9dd7215d72ea0 (patch) | |
tree | 2bd2bae2f1ccb52b3be644b4d5400db14ee3c527 /core/blockchain.go | |
parent | 143a9b6e1d2fc7c9360bbc5c0bdd8b715ce80191 (diff) | |
download | dexon-91a4a2d552a13dfbd7f58bbfa2a9dd7215d72ea0.tar dexon-91a4a2d552a13dfbd7f58bbfa2a9dd7215d72ea0.tar.gz dexon-91a4a2d552a13dfbd7f58bbfa2a9dd7215d72ea0.tar.bz2 dexon-91a4a2d552a13dfbd7f58bbfa2a9dd7215d72ea0.tar.lz dexon-91a4a2d552a13dfbd7f58bbfa2a9dd7215d72ea0.tar.xz dexon-91a4a2d552a13dfbd7f58bbfa2a9dd7215d72ea0.tar.zst dexon-91a4a2d552a13dfbd7f58bbfa2a9dd7215d72ea0.zip |
dex: return correct pending nonce (#14)
We need to return the correct pending nonce (include those in the tx
pool). Also, StateAndHeaderByNumber is also fixed to use pending block.
Diffstat (limited to 'core/blockchain.go')
-rw-r--r-- | core/blockchain.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/core/blockchain.go b/core/blockchain.go index 606927c77..19b17db8f 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -1779,20 +1779,29 @@ func (bc *BlockChain) addPendingBlock(block *types.Block, receipts types.Receipt bc.lastPendingHeight = block.NumberU64() } -func (bc *BlockChain) GetLastPendingHeight() uint64 { +func (bc *BlockChain) GetPendingHeight() uint64 { bc.pendingBlockMu.RLock() defer bc.pendingBlockMu.RUnlock() return bc.lastPendingHeight } -func (bc *BlockChain) GetLastPendingBlock() *types.Block { +func (bc *BlockChain) GetPendingBlock() *types.Block { bc.pendingBlockMu.RLock() defer bc.pendingBlockMu.RUnlock() return bc.pendingBlocks[bc.lastPendingHeight].block } +func (bc *BlockChain) GetPending() (*types.Block, *state.StateDB) { + block := bc.GetPendingBlock() + s, err := state.New(block.Header().Root, bc.stateCache) + if err != nil { + panic(err) + } + return block, s +} + // reorgs takes two blocks, an old chain and a new chain and will reconstruct the blocks and inserts them // to be part of the new canonical chain and accumulates potential missing transactions and post an // event about them |