From b3df0963582edcabc3f83064889e41c811590b01 Mon Sep 17 00:00:00 2001 From: buddh0 Date: Fri, 8 Dec 2023 18:43:13 +0800 Subject: [PATCH] core/vote: wait some blocks beforing voting since mining begin --- core/vote/vote_manager.go | 9 +++++++++ core/vote/vote_pool_test.go | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/vote/vote_manager.go b/core/vote/vote_manager.go index 7f33fafd5b..a253d57460 100644 --- a/core/vote/vote_manager.go +++ b/core/vote/vote_manager.go @@ -15,6 +15,8 @@ import ( "github.com/ethereum/go-ethereum/metrics" ) +const blocksNumberSinceMining = 5 // the number of blocks need to wait before voting, counting from the validator begin to mine + var votesManagerCounter = metrics.NewRegisteredCounter("votesManager/local", nil) // Backend wraps all methods required for voting. @@ -95,6 +97,7 @@ func (voteManager *VoteManager) loop() { dlEventCh := events.Chan() startVote := true + blockCountSinceMining := 0 var once sync.Once for { select { @@ -120,9 +123,15 @@ func (voteManager *VoteManager) loop() { continue } if !voteManager.eth.IsMining() { + blockCountSinceMining = 0 log.Debug("skip voting because mining is disabled, continue") continue } + blockCountSinceMining++ + if blockCountSinceMining <= blocksNumberSinceMining { + log.Debug("skip voting", "blockCountSinceMining", blockCountSinceMining, "blocksNumberSinceMining", blocksNumberSinceMining) + continue + } if cHead.Block == nil { log.Debug("cHead.Block is nil, continue") diff --git a/core/vote/vote_pool_test.go b/core/vote/vote_pool_test.go index dcc72c0893..0588c3fb92 100644 --- a/core/vote/vote_pool_test.go +++ b/core/vote/vote_pool_test.go @@ -190,7 +190,7 @@ func testVotePool(t *testing.T, isValidRules bool) { if _, err := chain.InsertChain(bs); err != nil { panic(err) } - for i := 0; i < 10; i++ { + for i := 0; i < 10+blocksNumberSinceMining; i++ { bs, _ = core.GenerateChain(params.TestChainConfig, bs[len(bs)-1], ethash.NewFaker(), db, 1, nil) if _, err := chain.InsertChain(bs); err != nil { panic(err)