vrank: decode an absent report as an empty one - #1016
Open
hyunsooda wants to merge 1 commit into
Open
Conversation
EncodeReport emits no bytes for an empty report while DecodeReport required a valid RLP list, so the pair did not round-trip and every caller had to test the raw header field before decoding. DecodeReport now accepts absent bytes, and the two pre-checks are gone: cfReport decodes directly, and VerifyHeader tests the decoded report instead, which also skips the candidate lookup for a report encoded as an explicit empty list. Constraint: an empty report stays encoded as absent bytes, since an epoch-start header must carry a present-but-possibly-empty candidate list that byte comparison distinguishes from absence Confidence: high Scope-risk: narrow Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ian0371
approved these changes
Aug 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed changes
EncodeReportemits no bytes for an empty report whileDecodeReportrequired a valid RLP list, so the pair did not round-trip and callers had to test the raw header field first.DecodeReportnow accepts absent bytes, and both pre-checks are gone.Types of changes
Checklist
I have read the CLA Document and I hereby sign the CLAin first time contribute after having read CLA$ make test)Related issues
Further comments
An empty report stays encoded as absent bytes, which an epoch-start header needs to distinguish a present-but-empty candidate list from absence.