diff options
author | Sonic <sonic@dexon.org> | 2018-12-21 14:53:37 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@dexon.org> | 2019-04-09 21:32:55 +0800 |
commit | bebcd229959b250a4127bdd678b49048ee0208ea (patch) | |
tree | 62dbf8ef24f1fd1a3b7ff352bc5c9bebaa967dff /core/blockchain.go | |
parent | 0c9666161c9630edf8eca571e7c93db7d21dfba3 (diff) | |
download | dexon-bebcd229959b250a4127bdd678b49048ee0208ea.tar dexon-bebcd229959b250a4127bdd678b49048ee0208ea.tar.gz dexon-bebcd229959b250a4127bdd678b49048ee0208ea.tar.bz2 dexon-bebcd229959b250a4127bdd678b49048ee0208ea.tar.lz dexon-bebcd229959b250a4127bdd678b49048ee0208ea.tar.xz dexon-bebcd229959b250a4127bdd678b49048ee0208ea.tar.zst dexon-bebcd229959b250a4127bdd678b49048ee0208ea.zip |
core, dex, internal: block proposer syncing (first iteration) (#96)
* dex, internal: block proposer syncing (first iteration)
* core: find block from db if not in memory
This fix handles stopping proposing and then restarting
* core: no need to reorg when reset
Dexon will not fork. This commit also fix when a block confirm but
its parent is not in db yet, during restarting proposing.
* dex: always accept NewBlockMsg, NewBlockHashesMsg
We need to accept NewBlockMsg, NewBlockHashesMsg to sync current block with
other peers in block proposer mode when syncing lattice data. It's a waste
when the node is synced and start proposing.
Todo: control msg processing on/off more granular, accept NewBlockMsg,
NewBlockHashesMsg when syncing, but stop when synced.
Diffstat (limited to 'core/blockchain.go')
-rw-r--r-- | core/blockchain.go | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/core/blockchain.go b/core/blockchain.go index 1b3b22e5e..0e87360c3 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -1796,8 +1796,6 @@ func (bc *BlockChain) processPendingBlock( return nil, nil, nil, fmt.Errorf("validate witness data error: %v", err) } - currentBlock := bc.CurrentBlock() - var ( receipts types.Receipts usedGas = new(uint64) @@ -1810,8 +1808,8 @@ func (bc *BlockChain) processPendingBlock( var err error parent, exist := bc.pendingBlocks[block.NumberU64()-1] if !exist { - parentBlock = currentBlock - if parentBlock.NumberU64() != block.NumberU64()-1 { + parentBlock = bc.GetBlockByNumber(block.NumberU64() - 1) + if parentBlock == nil { return nil, nil, nil, fmt.Errorf("parent block %d not exist", block.NumberU64()-1) } } else { |