Evo: handle validation failures gracefully - #1931
Conversation
|
Warning Review limit reachedNext included review available in 59 minutes. View limit detailsLimit details: You’ve used all 4 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🤖 CodeAnt AI — Review Status
|
Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
User descriptionReplace externally reachable Evo assertions with explicit validation failures. Add regression coverage for malformed coinbase payload and deterministic masternode state paths. CodeAnt-AI DescriptionHandle invalid Evo data as validation failures instead of crashing What Changed
Impact
💡 Usage GuideChecking Your Pull RequestEvery time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later. Talking to CodeAnt AIGot a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask: This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code. ExamplePreserve Org Learnings with CodeAntYou can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input: This helps CodeAnt AI learn and adapt to your team's coding style and standards. ExampleRetrigger reviewAsk CodeAnt AI to review the PR again, by typing: Check Your Repository HealthTo analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 398f677a0f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| uint256 minedBlockHash; | ||
| bool found = llmq::quorumBlockProcessor->GetMinedCommitment(p.first, p2->GetBlockHash(), qc, minedBlockHash); | ||
| assert(found); | ||
| if (!found) return state.DoS(100, false, REJECT_INVALID, "commitment-not-found"); |
There was a problem hiding this comment.
Treat missing stored commitments as internal errors
When the Evo DB's inverse-height index points to a missing commitment record—the exact local inconsistency constructed by the new regression test—this failure is unrelated to the candidate block or its sending peer. Returning state.DoS(100, ...) makes CheckCbTxMerkleRoots classify an otherwise valid block as consensus-invalid and allows BlockChecked to penalize the peer; it can also leave the block marked invalid until manual recovery. Report this as state.Error(...) so the node surfaces its local database failure without blaming network input.
Useful? React with 👍 / 👎.
|
This not from upstream, but something we should address: |
reubenyap
left a comment
There was a problem hiding this comment.
Reviewed the current head and traced the new failure paths through special-transaction validation, block processing, CValidationState, and peer scoring. The malformed-payload branches now fail cleanly, and the full CI matrix is green. The one remaining issue is already accurately covered by the existing review thread: a missing stored commitment is a local database error and should use state.Error rather than classify the peer block as invalid. I found no additional actionable issues.
Replace externally reachable Evo assertions with explicit validation failures. Add regression coverage for malformed coinbase payload and deterministic masternode state paths.
Upstream: Dash PR #3504.