aboutsummaryrefslogtreecommitdiffstats
path: root/core/blockchain.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-03-10 17:59:17 +0800
committerGitHub <noreply@github.com>2019-03-10 17:59:17 +0800
commit4345050093710739c9e417956bc3a8339e7d99a6 (patch)
tree24fe4e21b95605f8854f6be073a762ece294d479 /core/blockchain.go
parentac3187e706bc11f1b36e32015a6e51a96cc8cfe9 (diff)
downloadtangerine-consensus-4345050093710739c9e417956bc3a8339e7d99a6.tar
tangerine-consensus-4345050093710739c9e417956bc3a8339e7d99a6.tar.gz
tangerine-consensus-4345050093710739c9e417956bc3a8339e7d99a6.tar.bz2
tangerine-consensus-4345050093710739c9e417956bc3a8339e7d99a6.tar.lz
tangerine-consensus-4345050093710739c9e417956bc3a8339e7d99a6.tar.xz
tangerine-consensus-4345050093710739c9e417956bc3a8339e7d99a6.tar.zst
tangerine-consensus-4345050093710739c9e417956bc3a8339e7d99a6.zip
core: reduce blockrandomness message (#477)
* core: reduce blockchain randomness msg * add test
Diffstat (limited to 'core/blockchain.go')
-rw-r--r--core/blockchain.go30
1 files changed, 16 insertions, 14 deletions
diff --git a/core/blockchain.go b/core/blockchain.go
index aacb65d..b6c8b1d 100644
--- a/core/blockchain.go
+++ b/core/blockchain.go
@@ -311,21 +311,23 @@ func (bc *blockChain) addBlock(b *types.Block) error {
return nil
}
+func (bc *blockChain) shouldAddRandomness(r *types.BlockRandomnessResult) bool {
+ bc.lock.RLock()
+ defer bc.lock.RUnlock()
+ if bc.lastDelivered != nil &&
+ bc.lastDelivered.Position.Newer(r.Position) {
+ return false
+ }
+ _, exists := bc.pendingRandomnesses[r.Position]
+ if exists {
+ return false
+ }
+ b := bc.findPendingBlock(r.Position)
+ return b == nil || len(b.Finalization.Randomness) == 0
+}
+
func (bc *blockChain) addRandomness(r *types.BlockRandomnessResult) error {
- if func() bool {
- bc.lock.RLock()
- defer bc.lock.RUnlock()
- if bc.lastDelivered != nil &&
- bc.lastDelivered.Position.Newer(r.Position) {
- return true
- }
- _, exists := bc.pendingRandomnesses[r.Position]
- if exists {
- return true
- }
- b := bc.findPendingBlock(r.Position)
- return b != nil && len(b.Finalization.Randomness) > 0
- }() {
+ if !bc.shouldAddRandomness(r) {
return nil
}
ok, err := bc.verifyRandomness(r.BlockHash, r.Position.Round, r.Randomness)