Skip to content

release: gloas#795

Open
mattevans wants to merge 49 commits intomasterfrom
release/gloas
Open

release: gloas#795
mattevans wants to merge 49 commits intomasterfrom
release/gloas

Conversation

@mattevans
Copy link
Copy Markdown
Member

@mattevans mattevans commented Mar 23, 2026

Adds Glamsterdam fork support to Xatu.

What this covers

EIP-7928 — Block-Level Access Lists (BALs)

Spec-compliant against bal-devnet-3.

  • Proto types: BlockAccessList, BlockAccessListEntry, BlockAccessListChange, BlockAccessListStorageRead (incl. "touched" change type for accounts with no state changes)
  • Additive BeaconBlockGloas / BeaconBlockBodyGloas proto messages
  • ExecutionPayloadGloas with block_access_list + slot_number
  • New event type BEACON_API_ETH_V2_BEACON_BLOCK_ACCESS_LIST = 89
  • RLP decoding via NewBlockAccessListFromGloas() (with test coverage)
  • Cannon deriver NewBlockAccessListDeriver (CannonType 16) — wired
  • Server event handler + ClickHouse migration 002_gloas_bals_support (table canonical_beacon_block_access_list + execution_payload_block_access_list_root column on
    canonical_beacon_block)
  • Block conversion NewEventBlockFromGloas()

EIP-7732 — Enshrined Proposer-Builder Separation (ePBS)

Internal plumbing wired end-to-end across server, sentry, cannon, fork-choice. Awaiting Gloas devnet for integration testing.

  • Proto: 6 new eth/v1 files (incl. execution_payload_available.proto), 4 libp2p gossipsub summary types, 12 new event IDs (90–101), 12 Additional*Data messages, 3 new
    CannonType entries (16/17/18)
  • ClickHouse: migration 003_gloas_epbs_support — 12 new tables + column additions (builder_index, bid_value, execution_payment, payload_present)
  • Server: 12 event handlers registered in event.go (incl. new GOSSIP / AVAILABLE handlers)
  • Sentry: SSE callbacks OnExecutionPayload, OnExecutionPayloadGossip, OnExecutionPayloadAvailable, OnExecutionPayloadBid, OnPayloadAttestationMessage,
    OnProposerPreferences
  • Cannon: derivers NewPayloadAttestationDeriver, NewExecutionPayloadBidDeriver; backfilling checkpoint iterator handles CannonType 16/17/18 in both GetMarker and
    createLocationFromEpochNumber
  • Fork-choice: ForkChoiceNodeV2.payload_status round-trips via extra_data["payload_status"]
  • ClickHouse routes: pkg/clickhouse/route/{beacon,canonical,libp2p}/

What this does NOT yet cover

Devnet-blocked or out-of-scope:

  • CL mimicry gossipsub producers for the 4 new ePBS topics (pkg/clmimicry/) — server handlers and routes already exist; producer side is the gap
  • Cannon envelope-arrival side for ExecutionTransaction / Withdrawal / BlockAccessList — depends on BeaconBlockBodyGloas no longer carrying ExecutionPayload; wired once
    envelope events arrive on devnet
  • Snapshot test fixtures — 10 placeholder tests fail with nil … payload: invalid event awaiting Gloas devnet data
  • Sentry Gloas block subscriptions (OnBlock / OnHead Gloas paths) — wire once devnet stabilises
  • TYSM Gloas hooks — separate repo
  • EL surface: eth_getBlockAccessList JSON-RPC, Engine API V5/V6 tracking (newPayloadV5, getPayloadV6, forkchoiceUpdatedV4)

Intentionally not included (don't reintroduce without spec confirmation)

  • payload_vote projection on attestation tables — committee_index already stores raw data.index; consumers can derive 0/1 for Gloas+ rows
  • sidecar_slot / sidecar_beacon_block_root projections on DataColumnSidecar tables — preemptive; revisit when real Gloas SSE payloads arrive

Migrations

  • 002_gloas_bals_support
  • 003_gloas_epbs_support

…928 support

fix(proto): implement proper handling of Gloas beacon blocks and their fields
refactor(block_access_list.go): add functionality to decode and process block access list data from Gloas blocks
fix(execution_transaction.go): adjust processing logic to handle transactions in Gloas blocks
fix(beacon_blob.go): modify kzg commitments extraction for Gloas blocks to ensure proper retrieval
fix(proposed_validator_block.go): update logic to correctly compute Gloas block size and handle transactions
feat(canonical): add ExecutionPayloadSlotNumber to canonical block batch
fix(beacon): update GloasBlock message retrieval to use GetMessage method
fix(event-ingester): fix casting of GloasBlock message to use GetMessage method
test: add tests for BlockAccessList related functionalities
style: reorder imports for clarity in conversion test file
chore: refactor existing append functions to include ExecutionPayloadSlotNumber handling
Implement BeaconBlockAccessList type for handling access list events in the ETH V2 protocol. This adds support for new event type, enhances event routing, and allows for better structuring of events in the system.
@mattevans mattevans self-assigned this Mar 23, 2026
…r improved stability

chore(go.mod): update github.com/ethpandaops/beacon dependency to version v0.67.1
chore(go.sum): update checksum for the new github.com/ethpandaops/beacon version
style(block_access_list.go): remove unnecessary empty line for cleaner code readability
… to ensure compatibility and access to bug fixes

chore(go.sum): update checksum for ethpandaops/beacon to match new version
…or improved functionality

fix(go.mod): change ethcore version to v0.0.0-20260323002709-50f492685a52 for compatibility
fix(go.sum): update checksums for go-ethereum, c-kzg-4844, and ethcore dependencies
fix(conversion.go): update access.Code to access.CodeChanges for clarity in block access list creation
fix(conversion_test.go): adjust test to set CodeChange correctly in the test setup for block access list
… in Kafka and ClickHouse

This change enhances the data pipeline by adding the beacon block access list event transformation and corresponding sinks, enabling better handling of this specific event data for analytics and processing downstream.
refactor: bals structure rlp decoded
… properties to use camelCase

style(vector-kafka-clickhouse.yaml): standardize field naming conventions to match expected API format
* master:
  chore(buf.yaml): update linting rules to exclude specific checks for better customization
…d storage read tracking

fix(conversion): adjust handling of storage reads to use new BlockAccessListStorageRead structure
feat(gloas): add BAL storage reads and bump deps to bal-devnet-3
… with no state changes to enhance parallel execution analysis

feat(proto): update BlockAccessListChange to include "touched" in change_type options for better clarity on account status
feat(gloas): add BAL storage reads and touched accounts
…ClickHouse tables to improve data structure for valid bid tracking and payload attestation flow

feat(migrations): create various new tables for tracking execution payloads, bids, and proposer preferences to enhance transaction handling and performance

fix(migrations): reverse EIP-7732 changes in down scripts to ensure consistent rollback functionality and data integrity
…): remove execution payload logic for Gloas blocks to simplify the code base and adapt to new event handling requirements
… execution payload and proposer preferences.

feat(libp2p): add event names for libp2p Gossipsub events to manage payload attestation and proposer preferences.
fix(routes_test): remove deprecated events from test coverage related to pending routes for ePBS.
refactor(canonical): implement flattening methods for execution payload bid, payload attestation, and beacon block related events.
feat(epbs): add server event handlers, libp2p gossipsub types, and ePBS conditional block routing
* master:
  feat(vector-logs.yaml): enhance logging transformation to differentiate between docker-compose and kurtosis environments
  feat(local): add docker container log collection to ch
fix(go.mod): update module dependencies including OffchainLabs/go-bitfield for gas price calculations
test(eth): implement tests for gas price calculations that support new Gloas structure
…abilities and improve comments for clarity

chore: update go.mod and go.sum to bump dependencies to their latest versions for compatibility and performance improvements
refactor: reorder import statements in cannon.go, poll.go, and relay_monitor.go for consistency and code cleanliness
feat: migrate to ethpandaops/go-eth2-client; wire ePBS sourcing
…ata methods to reduce code repetition and improve readability

feat(beacon): add Slot field to beaconSlotEpochPropagationAdditional struct for better data handling
…con_block_payload_attestation.go): remove unnecessary blank lines and add lint ignore comments for clarity and improved readability
…riable for clarity and consistency

refactor(canonical_beacon_block_payload_attestation.go): use explicit iteration for bit counting to address gosec G115 warning
…derivers

feat: wire ePBS SSE handlers + cannon derivers
… up migrations for DataColumnSidecar tables to simplify schema

chore(beacon): remove SidecarSlot and SidecarBeaconBlockRoot fields from beaconApiEthV1EventsDataColumnSidecar to reflect schema change
chore(libp2p): remove SidecarSlot and SidecarBeaconBlockRoot fields from libp2pGossipsubDataColumnSidecar to reflect schema change
feat: add payload_status to ForkChoiceNodeV2
* master: (35 commits)
  feat(discovery): support bootstrapRpcUrl for RPC-backed Status (#815)
  cannon: add direct-to-clickhouse output sink (#808)
  [codex] improve execution mimicry peering (#811)
  fix(kafka): exporter size check should use MaxMessageBytes, not FlushBytes (#810)
  fix(kafka): make Producer.MaxMessageBytes configurable (#809)
  ci(smoke): probe vector-http-kafka via host port (busybox has no /dev/tcp)
  ci(govulncheck): whitelist unfixable docker/docker server-side vulns
  ci: pick latest Go for govulncheck, wait for vector-http-kafka in smoke test
  consumoor: remove kzg_commitments array from data column sidecar table
  consumoor: add clientId config for shared Kafka client-id
  fix attestation order by
  fix: bump grpc to v1.79.3 for GO-2026-4762, fix buf action hash
  consumoor: fix lint issues from CI
  consumoor: fix review findings — config strictness, failure isolation, watcher bug
  yeah (#804)
  consumoor: drop intentionally unsupported events; NAK unknown routes
  consumoor: fix error handling gaps — DLQ invalid events, permanent flatten errors, group retry
  consumoor: log bad events in JSON form for invalid events and flatten errors
  consumoor: add rate-limited logging, unknown event warnings, and invalid event diagnostics
  fix(consumoor): align data transformations with Vector pipeline
  ...
… and columns

feat(migrations): add new columns to beacon block tables for enhanced bid tracking
feat(migrations): establish new libp2p gossipsub tables for improved data handling
fix(migrations): drop obsolete columns associated with deprecated features
fix(migrations): correct data schema for canonical beacon block withdrawals
…y and readability of withdrawal_type classification
refactor: widen block_access_index from UInt16 to UInt32 per EIP-7928
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant