Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
e4a8e2a
feat: gloas support
mattevans Mar 22, 2026
33b3fc7
feat(go.mod): update go-eth2-client dependency to include Gloas/EIP-7…
mattevans Mar 22, 2026
e7896ae
feat(beacon): add ExecutionPayloadSlotNumber to beacon block batch
mattevans Mar 22, 2026
d894cd5
feat(event): add BeaconBlockAccessList for ETH V2 event handling
mattevans Mar 23, 2026
8d92c07
chore(ci): update buf setup action to use a more recent commit SHA fo…
mattevans Mar 23, 2026
e5f523d
chore(go.mod): update ethpandaops/beacon dependency to latest version…
mattevans Mar 23, 2026
f5f8ce2
fix(go.mod): update go-ethereum to v1.17.1 and c-kzg-4844 to v2.1.6 f…
mattevans Mar 23, 2026
3c146fb
feat(docker-compose): add support for beacon block access list events…
mattevans Mar 23, 2026
fb5e988
refactor: bals structure rlp decoded
mattevans Mar 24, 2026
315f9b6
Merge pull request #796 from ethpandaops/refactor/bals-tweaks
mattevans Mar 24, 2026
f63087f
fix(vector-kafka-clickhouse.yaml): update block_number and block_hash…
mattevans Mar 24, 2026
fdd348a
chore(buf.yaml): update linting rules to exclude specific checks for …
mattevans Mar 24, 2026
0fc80fc
Merge branch 'master' into release/gloas
mattevans Mar 24, 2026
4ff67bf
feat(gloas): add BAL storage reads and bump deps to bal-devnet-3
mattevans Mar 25, 2026
689b4d3
feat(proto): introduce BlockAccessListStorageRead message for enhance…
mattevans Mar 25, 2026
eb01162
Merge pull request #797 from ethpandaops/feat/gloas-storage-read
mattevans Mar 25, 2026
3347d95
feat(block_access_list): add support for "touched" event for accounts…
mattevans Mar 25, 2026
c32a21a
Merge pull request #798 from ethpandaops/feat/gloas-acc-touched
mattevans Mar 25, 2026
eb1bd33
feat: prepare epbs types
mattevans Mar 26, 2026
de05331
Merge pull request #799 from ethpandaops/feat/epbs-types
mattevans Mar 26, 2026
44caab8
feat(migrations): add support for EIP-7732 ePBS and Gloas columns in …
mattevans Mar 26, 2026
4029caa
Merge pull request #800 from ethpandaops/feat/epbs-ch-schema
mattevans Mar 26, 2026
6a98536
feat(epbs): add server event handlers, libp2p gossipsub types, and eP…
mattevans Mar 26, 2026
f537b30
refactor(beacon_api_eth_v2_beacon_block.go, canonical_beacon_block.go…
mattevans Mar 26, 2026
181885b
feat: ebps wiring wip
mattevans Mar 26, 2026
fb2b3b3
feat(beacon): add event names for various beacon API events to handle…
mattevans Mar 26, 2026
f0c3f84
feat: ebps wiring wip
mattevans Mar 26, 2026
12d9c0d
feat: ebps wiring wip
mattevans Mar 26, 2026
360c568
feat: ebps wiring wip
mattevans Mar 26, 2026
98b171c
Merge pull request #801 from ethpandaops/feat/epbs-wiring-pt1
mattevans Mar 29, 2026
f0d1ca0
Merge branch 'master' into release/gloas
mattevans May 7, 2026
bd62321
migrate to ethpandaops/go-eth2-client; wire ePBS sourcing
mattevans May 7, 2026
0bc5e7e
feat(go.proto): add new Gloas beacon block body to handle ePBS and BALs
mattevans May 7, 2026
effc88b
chore: update govulncheck.yaml to include more known unfixable vulner…
mattevans May 7, 2026
17dfc39
chore: reorder import statements in the sentry package for consistenc…
mattevans May 7, 2026
9a6e62a
Merge pull request #813 from ethpandaops/feat/epbs-wriring
mattevans May 7, 2026
5a66581
feat: wire ePBS SSE handlers + cannon derivers
mattevans May 7, 2026
5014b0c
refactor(beacon): simplify data extraction logic in appendAdditionalD…
mattevans May 7, 2026
6109f8d
style(execution_payload_bid.go, payload_attestation.go, canonical_bea…
mattevans May 7, 2026
7d7480a
refactor(payload_attestation.go): replace loop index with position va…
mattevans May 7, 2026
9d48a7a
Merge pull request #814 from ethpandaops/feat/epbs-sse-events-cannon-…
mattevans May 7, 2026
48a4bd7
feat: add payload_status to ForkChoiceNodeV2
mattevans May 8, 2026
f8e8358
chore(migrations): remove Gloas-related sidecar columns from down and…
mattevans May 8, 2026
4d261db
Merge pull request #819 from ethpandaops/feat/ebps-payload-status
mattevans May 8, 2026
4406c2a
Merge branch 'master' into release/gloas
mattevans May 8, 2026
58eae6a
feat(migrations): implement support for EIP-7732 ePBS with new tables…
mattevans May 8, 2026
a16038f
refactor: widen block_access_index from UInt16 to UInt32 per EIP-7928
mattevans May 8, 2026
025bfa3
style(migrations): update comments in SQL migration to improve clarit…
mattevans May 8, 2026
257f619
Merge pull request #820 from ethpandaops/refactor/bals-index-uint32
mattevans May 8, 2026
b79060e
Merge branch 'master' into release/gloas
mattevans May 12, 2026
9b46c1c
refactor(log_fields): replace string literals with constants in log f…
mattevans May 12, 2026
39efbb7
feat: wire ePBS gossipsub producers for the 4 Gloas topics
mattevans May 12, 2026
50992ce
Merge pull request #823 from ethpandaops/feat/libp2p-epbs
mattevans May 12, 2026
b25a8ff
feat(epbs): wire 2 synthesized observability events from beacon-node …
mattevans May 13, 2026
60d60dc
feat: beacon_synthetic_* events
mattevans May 13, 2026
361f986
Merge pull request #825 from ethpandaops/feat/epbs-xatu-hooks-pt2
mattevans May 13, 2026
c03a22f
feat: PTC vote three-state breakdown + EIP-7843 slot_number coverage
mattevans May 13, 2026
6da0970
Merge pull request #827 from ethpandaops/feat/epbs-ptc-events
mattevans May 13, 2026
b8f0a44
feat: add OnPayloadAttestationProcessed observe hook
mattevans May 13, 2026
06a673d
Merge pull request #833 from ethpandaops/feat/att-processed-epbs
mattevans May 13, 2026
cede841
Merge branch 'master' into release/gloas
mattevans May 14, 2026
ac83f1a
chore(deps): bump go-ethereum to bal-devnet-6 + co-bump beacon/ethcore
mattevans May 14, 2026
a1cd140
Merge branch 'master' into release/gloas
mattevans May 14, 2026
ff80d12
Merge branch 'master' into release/gloas
mattevans May 14, 2026
ca11e82
feat: port otel work to epbs work
mattevans May 14, 2026
eb59df5
fix(conversion.go): update BlockAccessIndex to use TxIdx directly for…
mattevans May 14, 2026
7d40f6f
Merge pull request #840 from ethpandaops/feat/otel-ebps
mattevans May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions deploy/migrations/clickhouse/003_gloas_bals_support.down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-- Drop canonical_beacon_block_access_list tables
DROP TABLE IF EXISTS default.canonical_beacon_block_access_list ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.canonical_beacon_block_access_list_local ON CLUSTER '{cluster}';

-- Remove columns from canonical_beacon_block
ALTER TABLE default.canonical_beacon_block ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS execution_payload_block_access_list_root,
DROP COLUMN IF EXISTS execution_payload_slot_number;

ALTER TABLE default.canonical_beacon_block_local ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS execution_payload_block_access_list_root,
DROP COLUMN IF EXISTS execution_payload_slot_number;

-- Remove columns from beacon_api_eth_v2_beacon_block
ALTER TABLE default.beacon_api_eth_v2_beacon_block ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS execution_payload_slot_number;

ALTER TABLE default.beacon_api_eth_v2_beacon_block_local ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS execution_payload_slot_number;
63 changes: 63 additions & 0 deletions deploy/migrations/clickhouse/003_gloas_bals_support.up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
-- Add execution_payload_slot_number to beacon_api_eth_v2_beacon_block
ALTER TABLE default.beacon_api_eth_v2_beacon_block_local ON CLUSTER '{cluster}'
ADD COLUMN IF NOT EXISTS execution_payload_slot_number Nullable(UInt64)
CODEC(DoubleDelta, ZSTD(1)) AFTER execution_payload_excess_blob_gas;

ALTER TABLE default.beacon_api_eth_v2_beacon_block ON CLUSTER '{cluster}'
ADD COLUMN IF NOT EXISTS execution_payload_slot_number Nullable(UInt64)
CODEC(DoubleDelta, ZSTD(1)) AFTER execution_payload_excess_blob_gas;

-- Add execution_payload_slot_number and execution_payload_block_access_list_root to canonical_beacon_block
ALTER TABLE default.canonical_beacon_block_local ON CLUSTER '{cluster}'
ADD COLUMN IF NOT EXISTS execution_payload_slot_number Nullable(UInt64)
CODEC(DoubleDelta, ZSTD(1)) AFTER execution_payload_excess_blob_gas,
ADD COLUMN IF NOT EXISTS execution_payload_block_access_list_root Nullable(FixedString(66))
CODEC(ZSTD(1)) AFTER execution_payload_slot_number;

ALTER TABLE default.canonical_beacon_block ON CLUSTER '{cluster}'
ADD COLUMN IF NOT EXISTS execution_payload_slot_number Nullable(UInt64)
CODEC(DoubleDelta, ZSTD(1)) AFTER execution_payload_excess_blob_gas,
ADD COLUMN IF NOT EXISTS execution_payload_block_access_list_root Nullable(FixedString(66))
CODEC(ZSTD(1)) AFTER execution_payload_slot_number;

-- Create canonical_beacon_block_access_list table
CREATE TABLE IF NOT EXISTS default.canonical_beacon_block_access_list_local ON CLUSTER '{cluster}' (
updated_date_time DateTime CODEC(DoubleDelta, ZSTD(1)),
slot UInt32 CODEC(DoubleDelta, ZSTD(1)),
slot_start_date_time DateTime CODEC(DoubleDelta, ZSTD(1)),
epoch UInt32 CODEC(DoubleDelta, ZSTD(1)),
epoch_start_date_time DateTime CODEC(DoubleDelta, ZSTD(1)),
block_root FixedString(66) CODEC(ZSTD(1)),
block_number UInt64 CODEC(DoubleDelta, ZSTD(1)),
block_hash FixedString(66) CODEC(ZSTD(1)),
address FixedString(42) CODEC(ZSTD(1)),
change_type LowCardinality(String) CODEC(ZSTD(1)),
block_access_index UInt32 CODEC(DoubleDelta, ZSTD(1)),
storage_key FixedString(66) CODEC(ZSTD(1)),
new_value Nullable(String) CODEC(ZSTD(1)),
meta_client_name LowCardinality(String) CODEC(ZSTD(1)),
meta_client_id String CODEC(ZSTD(1)),
meta_client_version LowCardinality(String) CODEC(ZSTD(1)),
meta_client_implementation LowCardinality(String) CODEC(ZSTD(1)),
meta_client_os LowCardinality(String) CODEC(ZSTD(1)),
meta_client_ip Nullable(IPv6) CODEC(ZSTD(1)),
meta_client_geo_city LowCardinality(String) CODEC(ZSTD(1)),
meta_client_geo_country LowCardinality(String) CODEC(ZSTD(1)),
meta_client_geo_country_code LowCardinality(String) CODEC(ZSTD(1)),
meta_client_geo_continent_code LowCardinality(String) CODEC(ZSTD(1)),
meta_client_geo_longitude Nullable(Float64) CODEC(ZSTD(1)),
meta_client_geo_latitude Nullable(Float64) CODEC(ZSTD(1)),
meta_client_geo_autonomous_system_number Nullable(UInt32) CODEC(ZSTD(1)),
meta_client_geo_autonomous_system_organization Nullable(String) CODEC(ZSTD(1)),
meta_network_id Int32 CODEC(DoubleDelta, ZSTD(1)),
meta_network_name LowCardinality(String) CODEC(ZSTD(1)),
meta_consensus_version LowCardinality(String) CODEC(ZSTD(1)),
meta_consensus_implementation LowCardinality(String) CODEC(ZSTD(1)),
meta_labels Map(String, String) CODEC(ZSTD(1))
) ENGINE = ReplicatedReplacingMergeTree(updated_date_time)
PARTITION BY toStartOfMonth(slot_start_date_time)
ORDER BY (slot_start_date_time, meta_network_name, block_hash, address, change_type, storage_key, block_access_index);

CREATE TABLE IF NOT EXISTS default.canonical_beacon_block_access_list ON CLUSTER '{cluster}'
AS default.canonical_beacon_block_access_list_local
ENGINE = Distributed('{cluster}', default, canonical_beacon_block_access_list_local, rand());
77 changes: 77 additions & 0 deletions deploy/migrations/clickhouse/004_gloas_epbs_support.down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
-- Reverse EIP-7732 ePBS support

-- Drop new tables
DROP TABLE IF EXISTS default.canonical_beacon_block_payload_attestation ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.canonical_beacon_block_payload_attestation_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.canonical_beacon_block_execution_payload_bid ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.canonical_beacon_block_execution_payload_bid_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_payload_attestation ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_payload_attestation_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_bid ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_bid_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_proposer_preferences ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_proposer_preferences_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_gossip ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_gossip_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_available ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.beacon_api_eth_v1_events_execution_payload_available_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.libp2p_gossipsub_execution_payload_envelope ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.libp2p_gossipsub_execution_payload_envelope_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.libp2p_gossipsub_execution_payload_bid ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.libp2p_gossipsub_execution_payload_bid_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.libp2p_gossipsub_payload_attestation_message ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.libp2p_gossipsub_payload_attestation_message_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.libp2p_gossipsub_proposer_preferences ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.libp2p_gossipsub_proposer_preferences_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.beacon_synthetic_payload_status_resolved ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.beacon_synthetic_payload_status_resolved_local ON CLUSTER '{cluster}';

DROP TABLE IF EXISTS default.beacon_synthetic_builder_pending_payment_settlement ON CLUSTER '{cluster}';
DROP TABLE IF EXISTS default.beacon_synthetic_builder_pending_payment_settlement_local ON CLUSTER '{cluster}';

-- Remove ePBS columns from beacon block tables
ALTER TABLE default.canonical_beacon_block ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS payload_present,
DROP COLUMN IF EXISTS execution_payment,
DROP COLUMN IF EXISTS bid_value,
DROP COLUMN IF EXISTS builder_index;

ALTER TABLE default.canonical_beacon_block_local ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS payload_present,
DROP COLUMN IF EXISTS execution_payment,
DROP COLUMN IF EXISTS bid_value,
DROP COLUMN IF EXISTS builder_index;

ALTER TABLE default.beacon_api_eth_v2_beacon_block ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS payload_present,
DROP COLUMN IF EXISTS execution_payment,
DROP COLUMN IF EXISTS bid_value,
DROP COLUMN IF EXISTS builder_index;

ALTER TABLE default.beacon_api_eth_v2_beacon_block_local ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS payload_present,
DROP COLUMN IF EXISTS execution_payment,
DROP COLUMN IF EXISTS bid_value,
DROP COLUMN IF EXISTS builder_index;

-- Remove withdrawal_type column added by 107
ALTER TABLE default.canonical_beacon_block_withdrawal ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS withdrawal_type;

ALTER TABLE default.canonical_beacon_block_withdrawal_local ON CLUSTER '{cluster}'
DROP COLUMN IF EXISTS withdrawal_type;

Loading
Loading