Gloas payload cache#9209
Open
dknopik wants to merge 102 commits intosigp:unstablefrom
Open
Conversation
…oas-data-availability-checker
…data-availability-checker
…oas-data-availability-checker
eserilev
reviewed
May 1, 2026
…thouse into gloas-payload-cache
dapplion
reviewed
May 1, 2026
| .do_maintenance(block_epoch + 1) | ||
| .expect("maintenance should succeed"); | ||
| assert_eq!(cache.block_cache_size(), 0); | ||
| } |
Collaborator
There was a problem hiding this comment.
Need to review this tests
…ync) Brings the FORK_NAME=gloas beacon_chain test suite from 31 failures to green: - v1 KZG batch verifier couldn't verify Gloas columns. Added verify_columns_against_block helper that picks commitments per fork (Fulu: inline on column; Gloas: signed_execution_payload_bid). - BeaconChainHarness::process_envelope didn't persist columns. Now mirrors what production does in import_available_execution_payload_envelope. - get_or_reconstruct_blobs returned an error for Gloas. Now short-circuits to Ok(None); WSS test copies columns from source to dest directly. - update_data_column_signed_header (block_verification tests) only handled Fulu shape. Added a Gloas branch that re-keys to canonical_root. - BlockError::EnvelopeBlockRootUnknown changed to tuple variant. - Removed duplicate process_payload_envelope_availability.
…ync) Brings the FORK_NAME=gloas beacon_chain test suite from 31 failures to green: - v1 KZG batch verifier couldn't verify Gloas columns. Added verify_columns_against_block helper that picks commitments per fork (Fulu: inline on column; Gloas: signed_execution_payload_bid). - BeaconChainHarness::process_envelope didn't persist columns. Now mirrors what production does in import_available_execution_payload_envelope. - get_or_reconstruct_blobs returned an error for Gloas. Now short-circuits to Ok(None); WSS test copies columns from source to dest directly. - update_data_column_signed_header (block_verification tests) only handled Fulu shape. Added a Gloas branch that re-keys to canonical_root. - BlockError::EnvelopeBlockRootUnknown changed to tuple variant. - Removed duplicate process_payload_envelope_availability.
73ba763 to
dac8a6e
Compare
- data_availability_checker.rs: use !gloas_enabled() instead of < ForkName::Gloas (jimmygchen, dapplion). - beacon_chain.rs: get_data_columns checks data_availability_checker first, then pending_payload_cache (dapplion). - pending_components.rs: merge_data_columns drops the unused Result return (jimmygchen). num_completed_columns uses filter() instead of filter_map (jimmygchen). - pending_column.rs: TODO marker on the hard-coded Gloas variant in try_to_sidecar (jimmygchen). - pending_payload_cache/mod.rs: gloas_spec test helper collapsed to ForkName::Gloas.make_genesis_spec(E::default_spec()) (jimmygchen). - gossip_methods.rs / sync/manager.rs: replace UnknownBlockHashFromAttestation fallback with TODO(gloas) for proper Gloas lookup sync (dapplion).
This was referenced May 1, 2026
- pending_column.rs: split try_to_sidecar into is_complete-checked to_sidecar with typed PendingColumnError so 'incomplete column' is no longer conflated with VariableList size-bound failures (jimmygchen, dapplion). - pending_components.rs: get_cached_data_columns filters by is_complete first, then logs an error if a complete column fails to assemble (dknopik's sanity check on filter_map silent drops). - data_column_verification.rs: add the missing column.slot == bid.slot consistency check in validate_data_column_sidecar_for_gossip_gloas, using the previously-defined-but-unused BlockSlotMismatch error variant (jimmygchen).
eserilev
reviewed
May 1, 2026
Drops the standalone availability_cache_maintenance_service tokio loop and its client/builder.rs spawn point. Pruning now runs inline in BeaconChain::after_finalization where the (finalized_epoch + 1, min DA boundary) cutoff is naturally available. Addresses dapplion's review comment 'Delete the background service, just call this on finalization'.
…d blocking - AvailableEnvelope::columns_available_timestamp was author-flagged dead with a TODO; remove the field and the unused new() arg (jimmygchen). - load_gloas_payload_bid: document that the store fallback is a synchronous disk read called from async paths; mark the rework as TODO (jimmygchen).
Collaborator
|
Suggested change: dapplion@7bd287a Why: the shared sidecar duplicate gate currently treats fork_choice.contains_block(root) as fully imported, which is fine pre-GLOAS but wrong for GLOAS because the beacon block can already be in fork choice before payload/data availability is complete. This switches the gate to is_block_data_imported, using fork-choice payload_received for GLOAS instead of a store read. |
Member
|
Regarding your commit @dapplion is_block_data_imported isn't fallible I think, so no need to return a Result I do agree that a helper function like that is helpful to prevent code duplication |
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.
Vastly simplified (and renamed) data availability checker.
based on eitans PR and work in progress