-
Notifications
You must be signed in to change notification settings - Fork 194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(oracle): correctly handle misscount #2192
Conversation
📝 WalkthroughWalkthroughThe changes introduce a new mechanism in the Changes
Sequence Diagram(s)sequenceDiagram
participant V as Validator
participant T as Tally Function
participant M as MissedValidators Map
V->>T: Submit vote
T->>M: Check if validator exists
alt Validator not recorded
M-->>T: Not found
T->>T: Increment miss count
T->>M: Record validator as missed
else Validator already recorded
M-->>T: Found
T->>T: Do not increment miss count
end
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
⏰ Context from checks skipped due to timeout of 90000ms (5)
🔇 Additional comments (1)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
x/oracle/keeper/ballot.go (1)
162-181
: LGTM! Consider using a more efficient map value type.The implementation correctly fixes the issue by ensuring each validator is only counted once for missed votes.
Since we only use the map value as a boolean flag, we can use an empty struct to save memory:
-missedValidators := make(map[string]bool) +missedValidators := make(map[string]struct{}) -missedValidators[v.Voter.String()] = true +missedValidators[v.Voter.String()] = struct{}{}
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
x/oracle/keeper/ballot.go
(2 hunks)x/oracle/keeper/ballot_test.go
(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: integration-tests
- GitHub Check: e2e-evm
🔇 Additional comments (1)
x/oracle/keeper/ballot_test.go (1)
205-240
: LGTM! Well-structured test case.The test effectively verifies that a validator's miss count is incremented only once, even when they have multiple votes outside the spread.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2192 +/- ##
=======================================
Coverage 65.01% 65.01%
=======================================
Files 277 277
Lines 22341 22346 +5
=======================================
+ Hits 14524 14529 +5
Misses 6828 6828
Partials 989 989
|
Purpose / Abstract
This pull request includes several changes to the way oracle counting validators who is voting outside the spread.
Currently, during tallying, if a vote is considered a
miss
, themissCount
counter increments for each vote. However, it should only increment once per iteration over all votes.Solution:
Introduce
missedValidators
as a map[string]bool to track whether a validator has already been counted as a miss.Also added a test
TestTallyMissCount
to confirm the solution works.