feat: blind all blocks before QBFT#694
Conversation
dknopik
left a comment
There was a problem hiding this comment.
Nice!
Please rebase on unstable.
|
@claude please review |
|
Claude finished @dknopik's task —— View job Code Review for PR #694
|
821d889 to
c33e56c
Compare
c33e56c to
fbb8693
Compare
|
@petarjuki7 your sigp membership is still private, so the tag |
|
Claude finished @petarjuki7's task —— View job Code Review for PR #694Review completed successfully. SummaryThis PR implements bandwidth optimization by blinding blocks before QBFT consensus. The approach is architecturally sound: send only blinded blocks through consensus, preserve the original full block, and return the full block with signature if our proposal wins. Critical Issues1. Blob Handling (CRITICAL)Location: The current code discards blobs when extracting the blinded block. When checking if our proposal won (line 976), the code returns Impact: Post-Deneb blocks with blobs will fail to publish correctly if our proposal wins consensus. Recommendation: Ensure blobs are correctly extracted and preserved throughout the consensus flow. 2. Handling Blocks from Other Clients (CRITICAL)Location: Per @dknopik's review comment, other SSV clients that haven't upgraded may still propose full blocks during consensus. The Issue: If another client proposes a full block and wins consensus, we'll get Recommendation: Add a match arm to handle Code Quality Issues3. Unnecessary Signature CloneLocation: The signature is cloned when reconstructing the full block. Verify if this allocation is necessary. 4. Missing Error ContextLocation: The decode error handling could provide better context about whether the failure was for blinded or full block decoding. Positive Observations
Testing Recommendations
Performance & Security
Overall Assessment: The core concept is sound and the implementation is mostly correct. However, there are critical issues with handling all variants of blocks returned from consensus that must be addressed before merge. The blob handling needs verification, and the match statement needs to handle the case where other clients send full blocks. Detailed inline comments have been posted on specific lines for the critical issues. Job: https://github.com/sigp/anchor/actions/runs/18697403373 |

Issue Addressed
Addresses Issue #630
Proposed Changes
Additional Info
The signature is valid for both blinded and full versions since they share the same block header.