always blind blocks - #608
Conversation
Greptile SummaryThis PR enforces that QBFT consensus for proposer duties always operates on the blinded block form, regardless of whether the beacon node returned a full or blinded block. A new Key changes:
Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant R as ProposerRunner
participant BN as BeaconNode
participant EB as ensureBlindedProposal
participant QBFT as QBFT Consensus
R->>BN: GetBeaconBlock(slot, graffiti, randao)
BN-->>R: *VersionedProposal (may be full or blinded)
R->>EB: ensureBlindedProposal(vBlk)
alt already blinded
EB-->>R: (p, blindedObj, nil) unchanged
else full block (Capella/Deneb/Electra/Fulu)
EB->>EB: compute txRoot + withdrawalsRoot
EB->>EB: construct BlindedBeaconBlock
EB-->>R: (blindedVBlk, blindedObj, nil)
end
R->>R: blindedObj.MarshalSSZ() → byts
R->>QBFT: Start(ValidatorConsensusData{blinded byts})
QBFT-->>R: DecidedValue (always blinded form)
R->>BN: SubmitBeaconBlock(decided blinded block, sig)
Reviews (9): Last reviewed commit: "code review comments" | Re-trigger Greptile |
|
@greptileai please review it again |
|
@greptileai please review it again |
|
@greptileai please review it again |
|
@greptileai please review it again |
|
@greptileai please review it again |
|
@greptileai please review it again |
|
@greptileai please review it again |
|
@greptileai please review it again |
y0sher
left a comment
There was a problem hiding this comment.
lgtm code wise,but @GalRogozinski should probably approve if he wants this change in the spec.
GalRogozinski
left a comment
There was a problem hiding this comment.
denied until discussion concludes:
ssvlabs/SIPs#78 (reply in thread)
|
This pull request has been marked as stale due to 60 days of inactivity. |
Summary
This PR updates
ssv-specproposer flow so QBFT always agrees on the blinded block form.What Changed
ValidatorConsensusDataWhy
The spec should define the consensus algorithm, and the important invariant here is that proposer QBFT values are blinded. This reduces the mismatch between
ssv-specandssvwhile keeping the spec focused on protocol behavior rather than node-specific mechanics.