Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
57f111e
Add EIP-7928 support
nerolation Aug 28, 2025
e138b26
simplify
nerolation Sep 16, 2025
96a4d4e
Merge remote-tracking branch 'nerolation/add-eip7928' into eip7928-su…
pk910 Sep 22, 2025
0c1388e
refactor and extend bal visualization
pk910 Sep 22, 2025
0b17025
bump `go-eth2-client`
pk910 Sep 22, 2025
f9d97a8
add gloas fork badge and internal getters
pk910 Sep 22, 2025
9e2f368
`go fmt` & template fix
pk910 Sep 22, 2025
3806ddb
bump `go-eth2-client`
pk910 Sep 25, 2025
c973604
Merge branch 'master' into eip7928-support
pk910 Oct 15, 2025
7d6652b
improve access list visualization
pk910 Oct 15, 2025
bc32144
Merge branch 'master' into eip7928-support
pk910 Oct 15, 2025
41c69a4
cleanup access list visualization
pk910 Oct 15, 2025
d041263
`go fmt`
pk910 Oct 15, 2025
6f71b5b
add access list comparison modal
pk910 Oct 18, 2025
505c827
add tx details callout
pk910 Oct 18, 2025
846d10f
improve rendering of empty access list entries
pk910 Oct 20, 2025
02221ef
render block access list on client side for performance
pk910 Oct 20, 2025
3667a2c
Merge branch 'master' into eip7928-support
pk910 Dec 8, 2025
43b6ee5
Merge branch 'master' into eip7928-support
pk910 Dec 15, 2025
cd6ce84
bump `go-ethereum` & fix bal rendering
pk910 Dec 17, 2025
1ba10c6
bump go-eth2-client
pk910 Jan 5, 2026
97770e6
Merge branch 'master' into eip7928-support
pk910 Jan 7, 2026
fed6a37
bump `go-eth2-client`
pk910 Jan 7, 2026
9d86126
Merge branch 'pk910/fix-pgsql-error' into eip7928-support
pk910 Jan 7, 2026
d56abf5
Merge branch 'pk910/el-explorer-fixes-1' into eip7928-support
pk910 Jan 9, 2026
81c8742
Merge branch 'pk910/el-explorer-fixes-1' into eip7928-support
pk910 Jan 13, 2026
467e91a
Merge branch 'master' into eip7928-support
pk910 Jan 25, 2026
1c30c4f
add internal transaction indexing via eip-7708 events
pk910 Jan 26, 2026
5f426fc
remove bal hash from db index
pk910 Jan 26, 2026
be6d446
Merge branch 'master' into eip7928-support
pk910 Feb 10, 2026
734d670
Merge branch 'master' into eip7928-support
pk910 Feb 15, 2026
ae88931
Merge branch 'master' into eip7928-support
pk910 Feb 16, 2026
ab6f9df
Merge branch 'master' into eip7928-support
barnabasbusa Feb 17, 2026
cf0ac9e
Revert "add internal transaction indexing via eip-7708 events"
pk910 Feb 17, 2026
46d281e
Merge branch 'master' into eip7928-support
pk910 Feb 17, 2026
f6c6390
drop old internal tx table
pk910 Feb 17, 2026
45d182a
Merge branch 'master' into eip7928-support
pk910 Feb 17, 2026
e8284a5
do not track ETH transfers as ERC20 transfer
pk910 Feb 18, 2026
e54ac24
Merge branch 'master' into eip7928-support
pk910 Feb 18, 2026
751203d
Merge branch 'pk910/context-aware-page-handlers' into eip7928-support
pk910 Feb 22, 2026
1419cc7
Merge branch 'pk910/context-aware-page-handlers' into eip7928-support
pk910 Feb 23, 2026
788ad85
Merge branch 'pk910/context-aware-page-handlers' into eip7928-support
pk910 Feb 23, 2026
42370be
Merge branch 'master' into eip7928-support
pk910 Feb 23, 2026
d138dbf
Merge branch 'pk910/el-indexer-fix' into eip7928-support
pk910 Feb 23, 2026
d5a0d01
Merge branch 'master' into eip7928-support
barnabasbusa Feb 24, 2026
613efbf
Merge branch 'master' into eip7928-support
pk910 Feb 25, 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
2 changes: 2 additions & 0 deletions clients/consensus/chainspec.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ type ChainSpecConfig struct {
ElectraForkEpoch *uint64 `yaml:"ELECTRA_FORK_EPOCH" check-if-fork:"ElectraForkEpoch"`
FuluForkVersion phase0.Version `yaml:"FULU_FORK_VERSION" check-if-fork:"FuluForkEpoch"`
FuluForkEpoch *uint64 `yaml:"FULU_FORK_EPOCH" check-if-fork:"FuluForkEpoch"`
GloasForkVersion phase0.Version `yaml:"GLOAS_FORK_VERSION" check-if-fork:"GloasForkEpoch"`
GloasForkEpoch *uint64 `yaml:"GLOAS_FORK_EPOCH" check-if-fork:"GloasForkEpoch"`

// Time parameters
SecondsPerSlot uint64 `yaml:"SECONDS_PER_SLOT"`
Expand Down
28 changes: 28 additions & 0 deletions clients/consensus/chainstate.go
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,34 @@ func (cs *ChainState) GetForkDigestForEpoch(epoch phase0.Epoch) phase0.ForkDiges
return cs.GetForkDigest(currentForkVersion, currentBlobParams)
}

func (cs *ChainState) GetBlobScheduleForEpoch(epoch phase0.Epoch) *BlobScheduleEntry {
if cs.specs == nil {
return nil
}

var blobSchedule *BlobScheduleEntry

if cs.specs.ElectraForkEpoch != nil && epoch >= phase0.Epoch(*cs.specs.ElectraForkEpoch) {
blobSchedule = &BlobScheduleEntry{
Epoch: *cs.specs.ElectraForkEpoch,
MaxBlobsPerBlock: cs.specs.MaxBlobsPerBlockElectra,
}
} else if cs.specs.DenebForkEpoch != nil && epoch >= phase0.Epoch(*cs.specs.DenebForkEpoch) {
blobSchedule = &BlobScheduleEntry{
Epoch: *cs.specs.DenebForkEpoch,
MaxBlobsPerBlock: cs.specs.MaxBlobsPerBlock,
}
}

for i, blobScheduleEntry := range cs.specs.BlobSchedule {
if blobScheduleEntry.Epoch <= uint64(epoch) {
blobSchedule = &cs.specs.BlobSchedule[i]
}
}

return blobSchedule
}

func (cs *ChainState) GetForkDigest(forkVersion phase0.Version, blobParams *BlobScheduleEntry) phase0.ForkDigest {
if cs.specs == nil || cs.genesis == nil {
return phase0.ForkDigest{}
Expand Down
2 changes: 2 additions & 0 deletions clients/execution/chainstate.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import (
)

var DefaultSystemContractAddresses = map[string]common.Address{
rpc.BeaconRootsContract: common.HexToAddress("0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02"),
rpc.HistoryStorageContract: common.HexToAddress("0x0000F90827F1C53a10cb7A02335B175320002935"),
rpc.ConsolidationRequestContract: common.HexToAddress("0x0000BBdDc7CE488642fb579F8B00f3a590007251"),
rpc.WithdrawalRequestContract: common.HexToAddress("0x00000961Ef480Eb55e80D19ad83579A64c007002"),
}
Expand Down
2 changes: 2 additions & 0 deletions clients/execution/rpc/ethconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ const (
DepositContract = "DEPOSIT_CONTRACT_ADDRESS"
ConsolidationRequestContract = "CONSOLIDATION_REQUEST_PREDEPLOY_ADDRESS"
WithdrawalRequestContract = "WITHDRAWAL_REQUEST_PREDEPLOY_ADDRESS"
BeaconRootsContract = "BEACON_ROOTS_ADDRESS"
HistoryStorageContract = "HISTORY_STORAGE_ADDRESS"
)

type EthConfigFork struct {
Expand Down
3 changes: 3 additions & 0 deletions db/schema/pgsql/20260216000000_el-execdata-rework.sql
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
-- Drop el_tx_events table (event data moves to blockdb in Mode 3)
DROP TABLE IF EXISTS public."el_tx_events";

-- Drop el_internal_transactions table (replaced by trace-based el_transactions_internal)
DROP TABLE IF EXISTS public."el_internal_transactions";

-- Add data tracking columns to el_blocks for blockdb data availability
-- data_status bit flags: 0x01=events, 0x02=call traces, 0x04=state changes
-- data_size: compressed size in bytes of blockdb object (0 = no data)
Expand Down
3 changes: 3 additions & 0 deletions db/schema/sqlite/20260216000000_el-execdata-rework.sql
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
-- Drop el_tx_events table (event data moves to blockdb in Mode 3)
DROP TABLE IF EXISTS "el_tx_events";

-- Drop el_internal_transactions table (replaced by trace-based el_transactions_internal)
DROP TABLE IF EXISTS "el_internal_transactions";

-- Add data tracking columns to el_blocks for blockdb data availability
-- data_status bit flags: 0x01=events, 0x02=call traces, 0x04=state changes
-- data_size: compressed size in bytes of blockdb object (0 = no data)
Expand Down
5 changes: 4 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ require (
github.com/DataDog/zstd v1.5.7 // indirect
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506 // indirect
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect
github.com/VictoriaMetrics/fastcache v1.13.0 // indirect
github.com/benbjohnson/clock v1.3.5 // indirect
github.com/casbin/govaluate v1.10.0 // indirect
Expand Down Expand Up @@ -260,3 +259,7 @@ require (
modernc.org/memory v1.11.0 // indirect
modernc.org/sqlite v1.38.2 // indirect
)

replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20260107112128-b97b7522025a

replace github.com/ethereum/go-ethereum => github.com/ethereum/go-ethereum v0.0.0-20251217020005-abaef48d549a
10 changes: 4 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,11 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506 h1:d/SJkN8/9Ca+1YmuDiUJxAiV4w/a9S8NcsG7GMQSrVI=
github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506/go.mod h1:6TZI4FU6zT8x6ZfWa1J8YQ2NgW0wLV/W3fHRca8ISBo=
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU=
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI=
github.com/VictoriaMetrics/fastcache v1.13.0 h1:AW4mheMR5Vd9FkAPUv+NH6Nhw+fmbTMGMsNAoA/+4G0=
github.com/VictoriaMetrics/fastcache v1.13.0/go.mod h1:hHXhl4DA2fTL2HTZDJFXWgW0LNjo6B+4aj2Wmng3TjU=
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8=
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
github.com/attestantio/go-eth2-client v0.28.0 h1:2zIIIMPvSD+g6h3TgVXsoda/Yw3e+wjo1e8CZEanORU=
github.com/attestantio/go-eth2-client v0.28.0/go.mod h1:PO9sHFCq+1RiG+Eh3eOR2GYvYV64Qzg7idM3kLgCs5k=
github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
Expand Down Expand Up @@ -119,8 +115,8 @@ github.com/ethereum/c-kzg-4844/v2 v2.1.5 h1:aVtoLK5xwJ6c5RiqO8g8ptJ5KU+2Hdquf6G3
github.com/ethereum/c-kzg-4844/v2 v2.1.5/go.mod h1:u59hRTTah4Co6i9fDWtiCjTrblJv0UwsqZKCc0GfgUs=
github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJhy07IMfEKuARQ9TKojGqLVNxQajaXEp/BoqSk=
github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8=
github.com/ethereum/go-ethereum v1.16.8 h1:LLLfkZWijhR5m6yrAXbdlTeXoqontH+Ga2f9igY7law=
github.com/ethereum/go-ethereum v1.16.8/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk=
github.com/ethereum/go-ethereum v0.0.0-20251217020005-abaef48d549a h1:ZJBRP4AuJ3K3U74tacJ8syixL536AU1B4jTCH7CDaQs=
github.com/ethereum/go-ethereum v0.0.0-20251217020005-abaef48d549a/go.mod h1:kId9vOtlYg3PZk9VwKbGlQmSACB5ESPTBGT+M9zjmok=
github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8=
github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
github.com/ethpandaops/ethcore v0.0.0-20251209022721-8a6a91f46524 h1:xIg0pOUc1U+4Til1csmZjisi5gXMoI8OUn5v7c8X+JY=
Expand Down Expand Up @@ -569,6 +565,8 @@ github.com/pion/webrtc/v4 v4.1.4 h1:/gK1ACGHXQmtyVVbJFQDxNoODg4eSRiFLB7t9r9pg8M=
github.com/pion/webrtc/v4 v4.1.4/go.mod h1:Oab9npu1iZtQRMic3K3toYq5zFPvToe/QBw7dMI2ok4=
github.com/pk910/dynamic-ssz v1.2.1 h1:84eNMiiOYDiNC2Y1m5A/UtIPs6u/9SsvG4RVSBRGE5U=
github.com/pk910/dynamic-ssz v1.2.1/go.mod h1:HXRWLNcgj3DL65Kznrb+RdL3DEKw2JBZ/6crooqGoII=
github.com/pk910/go-eth2-client v0.0.0-20260107112128-b97b7522025a h1:913U5Ysj0Xd4j8WFUwK94vKpI6GUz52ZFi4nxgaPp4M=
github.com/pk910/go-eth2-client v0.0.0-20260107112128-b97b7522025a/go.mod h1:1MBvz1DVe6jZduHJDJuJ/1S4LzYmDmvx+r5alo4pyrM=
github.com/pk910/hashtree-bindings v0.0.1 h1:Sw+UlPlrBle4LUg04kqLFybVQcfmamwKL1QsrR3GU0g=
github.com/pk910/hashtree-bindings v0.0.1/go.mod h1:eayIpxMFkWzMsydESu/5bV8wglZzSE/c9mq6DQdn204=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
Expand Down
4 changes: 3 additions & 1 deletion handlers/api/network_forks_v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ func buildNetworkForks(chainState *consensus.ChainState) []*APINetworkForkInfo {
// Helper function to add consensus fork
addConsensusFork := func(name string, forkEpoch *uint64, forkVersion phase0.Version) {
if forkEpoch != nil && *forkEpoch < uint64(18446744073709551615) {
forkDigest := chainState.GetForkDigest(forkVersion, nil)
blobParams := chainState.GetBlobScheduleForEpoch(phase0.Epoch(*forkEpoch))
forkDigest := chainState.GetForkDigest(forkVersion, blobParams)
version := fmt.Sprintf("0x%x", forkVersion)
epoch := *forkEpoch
forks = append(forks, &APINetworkForkInfo{
Expand All @@ -135,6 +136,7 @@ func buildNetworkForks(chainState *consensus.ChainState) []*APINetworkForkInfo {
addConsensusFork("Deneb", specs.DenebForkEpoch, specs.DenebForkVersion)
addConsensusFork("Electra", specs.ElectraForkEpoch, specs.ElectraForkVersion)
addConsensusFork("Fulu", specs.FuluForkEpoch, specs.FuluForkVersion)
addConsensusFork("Gloas", specs.GloasForkEpoch, specs.GloasForkVersion)

// Add BPO forks from BLOB_SCHEDULE
for i, blobSchedule := range specs.BlobSchedule {
Expand Down
13 changes: 13 additions & 0 deletions handlers/index.go
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,19 @@ func buildIndexPageData(ctx context.Context) (*models.IndexPageData, time.Durati
ForkDigest: forkDigest[:],
})
}
if specs.GloasForkEpoch != nil && *specs.GloasForkEpoch < uint64(18446744073709551615) {
blobParams := chainState.GetBlobScheduleForEpoch(phase0.Epoch(*specs.GloasForkEpoch))
forkDigest := chainState.GetForkDigest(specs.GloasForkVersion, blobParams)
pageData.NetworkForks = append(pageData.NetworkForks, &models.IndexPageDataForks{
Name: "Gloas",
Epoch: *specs.GloasForkEpoch,
Version: specs.GloasForkVersion[:],
Time: uint64(chainState.EpochToTime(phase0.Epoch(*specs.GloasForkEpoch)).Unix()),
Active: uint64(currentEpoch) >= *specs.GloasForkEpoch,
Type: "consensus",
ForkDigest: forkDigest[:],
})
}

// Add BPO forks from BLOB_SCHEDULE
elBlobSchedule := services.GlobalBeaconService.GetExecutionChainState().GetFullBlobSchedule()
Expand Down
Loading