From 83939d19a60733653a3282cb1a81bebb92c6af43 Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Mon, 23 Mar 2026 10:08:28 +1000 Subject: [PATCH 01/11] release: gloas support --- go.mod | 3 +++ go.sum | 6 ++++-- pkg/beacon/state/fork_epoch.go | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index c69fa0d..7dd49bb 100644 --- a/go.mod +++ b/go.mod @@ -17,6 +17,7 @@ require ( ) require ( + github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -60,3 +61,5 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) + +replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b diff --git a/go.sum b/go.sum index de517f5..0563e31 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/attestantio/go-eth2-client v0.27.1 h1:g7bm+gG/p+gfzYdEuxuAepVWYb8EO+2KojV5/Lo2BxM= -github.com/attestantio/go-eth2-client v0.27.1/go.mod h1:fvULSL9WtNskkOB4i+Yyr6BKpNHXvmpGZj9969fCrfY= +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/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -106,6 +106,8 @@ github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/pk910/dynamic-ssz v0.0.4 h1:DT29+1055tCEPCaR4V/ez+MOKW7BzBsmjyFvBRqx0ME= github.com/pk910/dynamic-ssz v0.0.4/go.mod h1:b6CrLaB2X7pYA+OSEEbkgXDEcRnjLOZIxZTsMuO/Y9c= +github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b h1:jfPN1Fg6yQzGdwRf1WEGbelmC+ciqVZw96LmFa8u7tI= +github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b/go.mod h1:1MBvz1DVe6jZduHJDJuJ/1S4LzYmDmvx+r5alo4pyrM= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/pkg/beacon/state/fork_epoch.go b/pkg/beacon/state/fork_epoch.go index b5a1db2..21ec044 100644 --- a/pkg/beacon/state/fork_epoch.go +++ b/pkg/beacon/state/fork_epoch.go @@ -18,6 +18,7 @@ var ( spec.DataVersionDeneb, spec.DataVersionElectra, spec.DataVersionFulu, + spec.DataVersionGloas, } ) From 5e1c4bf480ea8de984d67c576f655153e109b36b Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Mon, 23 Mar 2026 10:11:21 +1000 Subject: [PATCH 02/11] chore(go.mod): replace dependency on github.com/attestantio/go-eth2-client with github.com/pk910/go-eth2-client for temporary support while awaiting upstream merge --- go.mod | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 7dd49bb..9946290 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,10 @@ module github.com/ethpandaops/beacon go 1.25.1 +// TODO: remove once Glamsterdam (Gloas) support is merged upstream. +// Tracks: https://github.com/pk910/go-eth2-client/pull/7 +replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b + require ( github.com/attestantio/go-eth2-client v0.27.1 github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 @@ -61,5 +65,3 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) - -replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b From 7b1d6d7ddd508e2e8a5cedbb9ad9c46c3037e85e Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Mon, 23 Mar 2026 10:32:05 +1000 Subject: [PATCH 03/11] chore(api.go): remove inline gosec comment for cleaner code readability and maintainability --- pkg/beacon/api/api.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/beacon/api/api.go b/pkg/beacon/api/api.go index b3d24dd..4009a72 100644 --- a/pkg/beacon/api/api.go +++ b/pkg/beacon/api/api.go @@ -62,7 +62,7 @@ func (c *consensusClient) post(ctx context.Context, path string, body map[string req.Header.Set(k, v) } - rsp, err := c.client.Do(req) //nolint:gosec // URL is constructed from configured base URL, not user input. + rsp, err := c.client.Do(req) if err != nil { return nil, err } @@ -98,7 +98,7 @@ func (c *consensusClient) get(ctx context.Context, path string) (json.RawMessage req.Header.Set(k, v) } - rsp, err := c.client.Do(req) //nolint:gosec // URL is constructed from configured base URL, not user input. + rsp, err := c.client.Do(req) if err != nil { return nil, err } @@ -144,7 +144,7 @@ func (c *consensusClient) getRaw(ctx context.Context, path string, contentType s req.Header.Set("Accept", contentType) - rsp, err := c.client.Do(req) //nolint:gosec // URL is constructed from configured base URL, not user input. + rsp, err := c.client.Do(req) if err != nil { return nil, err } From f64d291dca367896a0c63be9edc25c8431b17014 Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Tue, 24 Mar 2026 11:50:45 +1000 Subject: [PATCH 04/11] chore(go.mod): update dependencies to latest versions for improved stability and security chore(go.sum): synchronize checksum file with updated dependencies in go.mod --- go.mod | 24 +++++++++++++----------- go.sum | 56 ++++++++++++++++++++++++++++++-------------------------- 2 files changed, 43 insertions(+), 37 deletions(-) diff --git a/go.mod b/go.mod index 9946290..280339c 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client require ( github.com/attestantio/go-eth2-client v0.27.1 github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 - github.com/ethereum/go-ethereum v1.16.4 + github.com/ethereum/go-ethereum v1.17.2-0.20260319135215-e5d453c086c7 github.com/ethpandaops/ethwallclock v0.2.0 github.com/go-co-op/gocron v1.16.2 github.com/prometheus/client_golang v1.23.2 @@ -22,6 +22,7 @@ require ( require ( 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/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -29,10 +30,10 @@ require ( github.com/emicklei/dot v1.6.4 // indirect github.com/fatih/color v1.18.0 // indirect github.com/ferranbt/fastssz v0.1.4 // indirect - github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/goccy/go-yaml v1.9.5 // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/golang/snappy v1.0.0 // indirect github.com/holiman/uint256 v1.3.2 // indirect github.com/huandu/go-clone v1.6.0 // indirect github.com/klauspost/cpuid/v2 v2.2.9 // indirect @@ -50,16 +51,17 @@ require ( github.com/r3labs/sse/v2 v2.10.0 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect - go.opentelemetry.io/otel v1.16.0 // indirect - go.opentelemetry.io/otel/metric v1.16.0 // indirect - go.opentelemetry.io/otel/trace v1.16.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/otel v1.40.0 // indirect + go.opentelemetry.io/otel/metric v1.40.0 // indirect + go.opentelemetry.io/otel/trace v1.40.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/sync v0.13.0 // indirect - golang.org/x/sys v0.36.0 // indirect + golang.org/x/crypto v0.44.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.40.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect - google.golang.org/protobuf v1.36.8 // indirect + google.golang.org/protobuf v1.36.11 // indirect gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 0563e31..355ae2e 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ 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/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -16,8 +18,8 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/emicklei/dot v1.6.4 h1:cG9ycT67d9Yw22G+mAb4XiuUz6E6H1S0zePp/5Cwe/c= github.com/emicklei/dot v1.6.4/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= -github.com/ethereum/go-ethereum v1.16.4 h1:H6dU0r2p/amA7cYg6zyG9Nt2JrKKH6oX2utfcqrSpkQ= -github.com/ethereum/go-ethereum v1.16.4/go.mod h1:P7551slMFbjn2zOQaKrJShZVN/d8bGxp4/I6yZVlb5w= +github.com/ethereum/go-ethereum v1.17.2-0.20260319135215-e5d453c086c7 h1:3iXPDQhD4YaF9wzx6um5lydHidwThQQ2E3SMQpAk7dM= +github.com/ethereum/go-ethereum v1.17.2-0.20260319135215-e5d453c086c7/go.mod h1:8BS3L+ky1nBsSvjoKueaUeEYxKnC0sbW2ImjVCXkpy8= github.com/ethpandaops/ethwallclock v0.2.0 h1:EeFKtZ7v6TAdn/oAh0xaPujD7N4amjBxrWIByraUfLM= github.com/ethpandaops/ethwallclock v0.2.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= @@ -34,8 +36,8 @@ github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbS github.com/go-co-op/gocron v1.16.2 h1:p9ghzsN5PqqPyWXYDO2JlvD1DOUNT8pPSyGYC62XBcY= github.com/go-co-op/gocron v1.16.2/go.mod h1:W/N9G7bntRo5fVQlmjncvqSt74jxCxHfjyHlgcB33T8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -56,8 +58,8 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -128,8 +130,8 @@ github.com/r3labs/sse/v2 v2.10.0 h1:hFEkLLFY4LDifoHdiCN/LlGBAdVJYsANaLqNYa1l/v0= github.com/r3labs/sse/v2 v2.10.0/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= @@ -144,30 +146,32 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s= -go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= -go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo= -go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= -go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= -go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= +go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -183,13 +187,13 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -201,8 +205,8 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc= gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= From 72e6019053643bed616e222da40a3c8c5044364f Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Wed, 25 Mar 2026 13:33:38 +1000 Subject: [PATCH 05/11] chore(deps): update github.com/ethereum/go-ethereum to v1.17.2-0.20260324190457-8f361e342cb9 to obtain the latest fixes and improvements --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 280339c..72984f3 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client require ( github.com/attestantio/go-eth2-client v0.27.1 github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 - github.com/ethereum/go-ethereum v1.17.2-0.20260319135215-e5d453c086c7 + github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 github.com/ethpandaops/ethwallclock v0.2.0 github.com/go-co-op/gocron v1.16.2 github.com/prometheus/client_golang v1.23.2 diff --git a/go.sum b/go.sum index 355ae2e..fe33538 100644 --- a/go.sum +++ b/go.sum @@ -18,8 +18,8 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/emicklei/dot v1.6.4 h1:cG9ycT67d9Yw22G+mAb4XiuUz6E6H1S0zePp/5Cwe/c= github.com/emicklei/dot v1.6.4/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= -github.com/ethereum/go-ethereum v1.17.2-0.20260319135215-e5d453c086c7 h1:3iXPDQhD4YaF9wzx6um5lydHidwThQQ2E3SMQpAk7dM= -github.com/ethereum/go-ethereum v1.17.2-0.20260319135215-e5d453c086c7/go.mod h1:8BS3L+ky1nBsSvjoKueaUeEYxKnC0sbW2ImjVCXkpy8= +github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 h1:87oCZDemf+tvCIUtKt9EUtkfXbU/llIl41ML8+vZ8Mo= +github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= github.com/ethpandaops/ethwallclock v0.2.0 h1:EeFKtZ7v6TAdn/oAh0xaPujD7N4amjBxrWIByraUfLM= github.com/ethpandaops/ethwallclock v0.2.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= From 4de46d12471e555909cd3ff90cb043dd625de8a6 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Tue, 14 Apr 2026 10:54:54 +0200 Subject: [PATCH 06/11] chore(deps): migrate go-eth2-client to ethpandaops fork v0.0.1 Replaces the pk910 replace directive with a direct dependency on github.com/ethpandaops/go-eth2-client v0.0.1, and updates all imports from github.com/attestantio/go-eth2-client to the ethpandaops fork. Also adds spec.DataVersionHeze to ForkOrder (now exposed by v0.0.1). Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 2 +- go.mod | 19 ++++----------- go.sum | 30 ++++++++---------------- pkg/beacon/api/types/deposit_snapshot.go | 2 +- pkg/beacon/beacon.go | 16 ++++++------- pkg/beacon/beacon_block.go | 2 +- pkg/beacon/bootstrap.go | 4 ++-- pkg/beacon/event.go | 4 ++-- pkg/beacon/fetch.go | 12 +++++----- pkg/beacon/genesis.go | 6 ++--- pkg/beacon/metrics_beacon.go | 4 ++-- pkg/beacon/metrics_events.go | 2 +- pkg/beacon/metrics_events_test.go | 2 +- pkg/beacon/metrics_fork.go | 2 +- pkg/beacon/options.go | 2 +- pkg/beacon/publisher.go | 10 ++++---- pkg/beacon/state/blob_schedule.go | 2 +- pkg/beacon/state/blob_schedule_test.go | 2 +- pkg/beacon/state/fork_epoch.go | 5 ++-- pkg/beacon/state/fork_epoch_test.go | 4 ++-- pkg/beacon/state/fork_order_test.go | 2 +- pkg/beacon/state/spec.go | 4 ++-- pkg/beacon/status.go | 2 +- pkg/beacon/status_test.go | 4 ++-- pkg/beacon/subscriber.go | 10 ++++---- pkg/beacon/subscriptions.go | 14 +++++------ 26 files changed, 75 insertions(+), 93 deletions(-) diff --git a/README.md b/README.md index 4890e21..e2407f4 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ As a general rule, any function that starts with `Fetch` will fetch data from th ## Built with -- [attestantio/go-eth2-client](github.com/attestantio/go-eth2-client) +- [attestantio/go-eth2-client](github.com/ethpandaops/go-eth2-client) - [ethpandaops/ethwallclock](github.com/ethpandaops/ethwallclock) ## Options diff --git a/go.mod b/go.mod index 72984f3..e57dcd8 100644 --- a/go.mod +++ b/go.mod @@ -2,15 +2,11 @@ module github.com/ethpandaops/beacon go 1.25.1 -// TODO: remove once Glamsterdam (Gloas) support is merged upstream. -// Tracks: https://github.com/pk910/go-eth2-client/pull/7 -replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b - require ( - github.com/attestantio/go-eth2-client v0.27.1 github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 github.com/ethpandaops/ethwallclock v0.2.0 + github.com/ethpandaops/go-eth2-client v0.0.1 github.com/go-co-op/gocron v1.16.2 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -24,30 +20,27 @@ require ( 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/beorn7/perks v1.0.1 // indirect + github.com/casbin/govaluate v1.10.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect - github.com/emicklei/dot v1.6.4 // indirect github.com/fatih/color v1.18.0 // indirect - github.com/ferranbt/fastssz v0.1.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/goccy/go-yaml v1.9.5 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/holiman/uint256 v1.3.2 // indirect github.com/huandu/go-clone v1.6.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.9 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/pk910/dynamic-ssz v0.0.4 // indirect + github.com/pk910/dynamic-ssz v1.3.0 // indirect + github.com/pk910/hashtree-bindings v0.1.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/common v0.66.1 // indirect github.com/prometheus/procfs v0.16.1 // indirect - github.com/prysmaticlabs/go-bitfield v0.0.0-20240618144021-706c95b2dd15 // indirect github.com/r3labs/sse/v2 v2.10.0 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect @@ -62,8 +55,6 @@ require ( golang.org/x/sys v0.40.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/protobuf v1.36.11 // indirect - gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index fe33538..7326acc 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608 github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/casbin/govaluate v1.10.0 h1:ffGw51/hYH3w3rZcxO/KcaUIDOLP84w7nsidMVgaDG0= +github.com/casbin/govaluate v1.10.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 h1:xz6Nv3zcwO2Lila35hcb0QloCQsc38Al13RNEzWRpX4= @@ -16,17 +18,15 @@ github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/emicklei/dot v1.6.4 h1:cG9ycT67d9Yw22G+mAb4XiuUz6E6H1S0zePp/5Cwe/c= -github.com/emicklei/dot v1.6.4/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 h1:87oCZDemf+tvCIUtKt9EUtkfXbU/llIl41ML8+vZ8Mo= github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= github.com/ethpandaops/ethwallclock v0.2.0 h1:EeFKtZ7v6TAdn/oAh0xaPujD7N4amjBxrWIByraUfLM= github.com/ethpandaops/ethwallclock v0.2.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= +github.com/ethpandaops/go-eth2-client v0.0.1 h1:Xifvb7RF24tguA6HxEaE2vIN1BsY44SOSH/B+CBSFPk= +github.com/ethpandaops/go-eth2-client v0.0.1/go.mod h1:9BBd/XIw1egZTkxtFGMvgXnsxX6ypKHKNKD7itqjmNQ= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= -github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= -github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -74,8 +74,8 @@ github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U= github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= -github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= -github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -91,10 +91,6 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= @@ -106,10 +102,10 @@ github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/pk910/dynamic-ssz v0.0.4 h1:DT29+1055tCEPCaR4V/ez+MOKW7BzBsmjyFvBRqx0ME= -github.com/pk910/dynamic-ssz v0.0.4/go.mod h1:b6CrLaB2X7pYA+OSEEbkgXDEcRnjLOZIxZTsMuO/Y9c= -github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b h1:jfPN1Fg6yQzGdwRf1WEGbelmC+ciqVZw96LmFa8u7tI= -github.com/pk910/go-eth2-client v0.0.0-20260211135810-4d8cc413fd3b/go.mod h1:1MBvz1DVe6jZduHJDJuJ/1S4LzYmDmvx+r5alo4pyrM= +github.com/pk910/dynamic-ssz v1.3.0 h1:b6v5v3HWAmdxSVKWk4GS7Y/lhURZPAHRQ7EEMUparQk= +github.com/pk910/dynamic-ssz v1.3.0/go.mod h1:NmeFF4jxzVwWC8cnEhUB7xMI++8hd/0OZvZHFrUvFfs= +github.com/pk910/hashtree-bindings v0.1.0 h1:w7NyRWFi2OaYEFvo9ADcE/QU6PMuVLl3hBgx92KiH9c= +github.com/pk910/hashtree-bindings v0.1.0/go.mod h1:zrWt88783JmhBfcgni6kkIMYRdXTZi/FL//OyI5T/l4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -122,10 +118,6 @@ github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9Z github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= -github.com/prysmaticlabs/go-bitfield v0.0.0-20240618144021-706c95b2dd15 h1:lC8kiphgdOBTcbTvo8MwkvpKjO0SlAgjv4xIK5FGJ94= -github.com/prysmaticlabs/go-bitfield v0.0.0-20240618144021-706c95b2dd15/go.mod h1:8svFBIKKu31YriBG/pNizo9N0Jr9i5PQ+dFkxWg3x5k= -github.com/prysmaticlabs/gohashtree v0.0.4-beta h1:H/EbCuXPeTV3lpKeXGPpEV9gsUpkqOOVnWapUyeWro4= -github.com/prysmaticlabs/gohashtree v0.0.4-beta/go.mod h1:BFdtALS+Ffhg3lGQIHv9HDWuHS8cTvHZzrHWxwOtGOs= github.com/r3labs/sse/v2 v2.10.0 h1:hFEkLLFY4LDifoHdiCN/LlGBAdVJYsANaLqNYa1l/v0= github.com/r3labs/sse/v2 v2.10.0/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= @@ -207,8 +199,6 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc= -gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/beacon/api/types/deposit_snapshot.go b/pkg/beacon/api/types/deposit_snapshot.go index 293881a..23e81d8 100644 --- a/pkg/beacon/api/types/deposit_snapshot.go +++ b/pkg/beacon/api/types/deposit_snapshot.go @@ -6,7 +6,7 @@ import ( "errors" "strings" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) // DepositSnapshot represents an EIP-4881 deposit snapshot. diff --git a/pkg/beacon/beacon.go b/pkg/beacon/beacon.go index abca48e..db5d3bf 100644 --- a/pkg/beacon/beacon.go +++ b/pkg/beacon/beacon.go @@ -8,19 +8,19 @@ import ( "sync" "time" - eth2client "github.com/attestantio/go-eth2-client" - eapi "github.com/attestantio/go-eth2-client/api" - v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/altair" - "github.com/attestantio/go-eth2-client/spec/deneb" - "github.com/attestantio/go-eth2-client/spec/electra" - "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/chuckpreslar/emission" "github.com/ethpandaops/beacon/pkg/beacon/api" "github.com/ethpandaops/beacon/pkg/beacon/api/types" "github.com/ethpandaops/beacon/pkg/beacon/state" "github.com/ethpandaops/ethwallclock" + eth2client "github.com/ethpandaops/go-eth2-client" + eapi "github.com/ethpandaops/go-eth2-client/api" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec" + "github.com/ethpandaops/go-eth2-client/spec/altair" + "github.com/ethpandaops/go-eth2-client/spec/deneb" + "github.com/ethpandaops/go-eth2-client/spec/electra" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/go-co-op/gocron" "github.com/rs/zerolog" "github.com/sirupsen/logrus" diff --git a/pkg/beacon/beacon_block.go b/pkg/beacon/beacon_block.go index a4d3b09..1e29159 100644 --- a/pkg/beacon/beacon_block.go +++ b/pkg/beacon/beacon_block.go @@ -1,7 +1,7 @@ package beacon import ( - "github.com/attestantio/go-eth2-client/spec" + "github.com/ethpandaops/go-eth2-client/spec" ) // GetDepositCountsFromBeaconBlock returns the number of deposits in a beacon block. diff --git a/pkg/beacon/bootstrap.go b/pkg/beacon/bootstrap.go index 62d1685..9791c07 100644 --- a/pkg/beacon/bootstrap.go +++ b/pkg/beacon/bootstrap.go @@ -5,9 +5,9 @@ import ( "net/http" "time" - eth2client "github.com/attestantio/go-eth2-client" - ehttp "github.com/attestantio/go-eth2-client/http" "github.com/ethpandaops/beacon/pkg/beacon/api" + eth2client "github.com/ethpandaops/go-eth2-client" + ehttp "github.com/ethpandaops/go-eth2-client/http" ) // ensureClients ensures that the node has a client and an API client. diff --git a/pkg/beacon/event.go b/pkg/beacon/event.go index d239ecd..9a3dd3c 100644 --- a/pkg/beacon/event.go +++ b/pkg/beacon/event.go @@ -3,10 +3,10 @@ package beacon import ( "time" - v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ethpandaops/beacon/pkg/beacon/api/types" "github.com/ethpandaops/beacon/pkg/beacon/state" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) // EventTopics is a list of topics that can be subscribed to. diff --git a/pkg/beacon/fetch.go b/pkg/beacon/fetch.go index 49e8bff..9595448 100644 --- a/pkg/beacon/fetch.go +++ b/pkg/beacon/fetch.go @@ -4,14 +4,14 @@ import ( "context" "errors" - eth2client "github.com/attestantio/go-eth2-client" - "github.com/attestantio/go-eth2-client/api" - v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/deneb" - "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ethpandaops/beacon/pkg/beacon/api/types" "github.com/ethpandaops/beacon/pkg/beacon/state" + eth2client "github.com/ethpandaops/go-eth2-client" + "github.com/ethpandaops/go-eth2-client/api" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec" + "github.com/ethpandaops/go-eth2-client/spec/deneb" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) func (n *node) FetchSyncStatus(ctx context.Context) (*v1.SyncState, error) { diff --git a/pkg/beacon/genesis.go b/pkg/beacon/genesis.go index 4ff6041..869e352 100644 --- a/pkg/beacon/genesis.go +++ b/pkg/beacon/genesis.go @@ -4,9 +4,9 @@ import ( "context" "errors" - eth2client "github.com/attestantio/go-eth2-client" - "github.com/attestantio/go-eth2-client/api" - v1 "github.com/attestantio/go-eth2-client/api/v1" + eth2client "github.com/ethpandaops/go-eth2-client" + "github.com/ethpandaops/go-eth2-client/api" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" ) func (n *node) FetchGenesis(ctx context.Context) (*v1.Genesis, error) { diff --git a/pkg/beacon/metrics_beacon.go b/pkg/beacon/metrics_beacon.go index 208dacb..d4a7a4b 100644 --- a/pkg/beacon/metrics_beacon.go +++ b/pkg/beacon/metrics_beacon.go @@ -7,8 +7,8 @@ import ( "math" "time" - v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec" "github.com/go-co-op/gocron" "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" diff --git a/pkg/beacon/metrics_events.go b/pkg/beacon/metrics_events.go index c1f9c16..2c97065 100644 --- a/pkg/beacon/metrics_events.go +++ b/pkg/beacon/metrics_events.go @@ -5,7 +5,7 @@ import ( "sync" "time" - v1 "github.com/attestantio/go-eth2-client/api/v1" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" "github.com/go-co-op/gocron" "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" diff --git a/pkg/beacon/metrics_events_test.go b/pkg/beacon/metrics_events_test.go index 819b291..afc853f 100644 --- a/pkg/beacon/metrics_events_test.go +++ b/pkg/beacon/metrics_events_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - v1 "github.com/attestantio/go-eth2-client/api/v1" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" "github.com/prometheus/client_golang/prometheus" dto "github.com/prometheus/client_model/go" "github.com/sirupsen/logrus" diff --git a/pkg/beacon/metrics_fork.go b/pkg/beacon/metrics_fork.go index da19a7f..68eead1 100644 --- a/pkg/beacon/metrics_fork.go +++ b/pkg/beacon/metrics_fork.go @@ -3,8 +3,8 @@ package beacon import ( "context" - "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ethpandaops/ethwallclock" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" ) diff --git a/pkg/beacon/options.go b/pkg/beacon/options.go index 08a2979..ec23856 100644 --- a/pkg/beacon/options.go +++ b/pkg/beacon/options.go @@ -3,8 +3,8 @@ package beacon import ( "time" - ehttp "github.com/attestantio/go-eth2-client/http" "github.com/ethpandaops/beacon/pkg/human" + ehttp "github.com/ethpandaops/go-eth2-client/http" ) // Options holds the options for a beacon node. diff --git a/pkg/beacon/publisher.go b/pkg/beacon/publisher.go index 2508934..d7103ad 100644 --- a/pkg/beacon/publisher.go +++ b/pkg/beacon/publisher.go @@ -4,13 +4,13 @@ import ( "context" "time" - v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/altair" - "github.com/attestantio/go-eth2-client/spec/electra" - "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ethpandaops/beacon/pkg/beacon/api/types" "github.com/ethpandaops/beacon/pkg/beacon/state" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec" + "github.com/ethpandaops/go-eth2-client/spec/altair" + "github.com/ethpandaops/go-eth2-client/spec/electra" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) // Official beacon events that are proxied. diff --git a/pkg/beacon/state/blob_schedule.go b/pkg/beacon/state/blob_schedule.go index cd4ac94..23153e9 100644 --- a/pkg/beacon/state/blob_schedule.go +++ b/pkg/beacon/state/blob_schedule.go @@ -3,7 +3,7 @@ package state import ( "sort" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) // BlobScheduleEntry represents a single entry in the BLOB_SCHEDULE configuration. diff --git a/pkg/beacon/state/blob_schedule_test.go b/pkg/beacon/state/blob_schedule_test.go index b77237d..00955be 100644 --- a/pkg/beacon/state/blob_schedule_test.go +++ b/pkg/beacon/state/blob_schedule_test.go @@ -3,7 +3,7 @@ package state import ( "testing" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/stretchr/testify/assert" ) diff --git a/pkg/beacon/state/fork_epoch.go b/pkg/beacon/state/fork_epoch.go index 21ec044..f54cce0 100644 --- a/pkg/beacon/state/fork_epoch.go +++ b/pkg/beacon/state/fork_epoch.go @@ -4,8 +4,8 @@ import ( "errors" "sort" - "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/ethpandaops/go-eth2-client/spec" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) var ( @@ -19,6 +19,7 @@ var ( spec.DataVersionElectra, spec.DataVersionFulu, spec.DataVersionGloas, + spec.DataVersionHeze, } ) diff --git a/pkg/beacon/state/fork_epoch_test.go b/pkg/beacon/state/fork_epoch_test.go index e123b2e..02b0153 100644 --- a/pkg/beacon/state/fork_epoch_test.go +++ b/pkg/beacon/state/fork_epoch_test.go @@ -3,9 +3,9 @@ package state_test import ( "testing" - "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ethpandaops/beacon/pkg/beacon/state" + "github.com/ethpandaops/go-eth2-client/spec" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/stretchr/testify/assert" ) diff --git a/pkg/beacon/state/fork_order_test.go b/pkg/beacon/state/fork_order_test.go index 504bc9f..7d1fc7b 100644 --- a/pkg/beacon/state/fork_order_test.go +++ b/pkg/beacon/state/fork_order_test.go @@ -3,8 +3,8 @@ package state_test import ( "testing" - "github.com/attestantio/go-eth2-client/spec" "github.com/ethpandaops/beacon/pkg/beacon/state" + "github.com/ethpandaops/go-eth2-client/spec" ) func TestForkOrderIncludesAllSpecDataVersions(t *testing.T) { diff --git a/pkg/beacon/state/spec.go b/pkg/beacon/state/spec.go index c9d3964..3e541ba 100644 --- a/pkg/beacon/state/spec.go +++ b/pkg/beacon/state/spec.go @@ -6,8 +6,8 @@ import ( "math/big" "strings" - sp "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/phase0" + sp "github.com/ethpandaops/go-eth2-client/spec" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/spf13/cast" ) diff --git a/pkg/beacon/status.go b/pkg/beacon/status.go index 1a0e78d..3b689dc 100644 --- a/pkg/beacon/status.go +++ b/pkg/beacon/status.go @@ -3,7 +3,7 @@ package beacon import ( "sync" - v1 "github.com/attestantio/go-eth2-client/api/v1" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" ) // Status is a beacon node status. diff --git a/pkg/beacon/status_test.go b/pkg/beacon/status_test.go index 955a2ee..d8b69ab 100644 --- a/pkg/beacon/status_test.go +++ b/pkg/beacon/status_test.go @@ -4,8 +4,8 @@ import ( "sync" "testing" - v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec/phase0" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) diff --git a/pkg/beacon/subscriber.go b/pkg/beacon/subscriber.go index eb7147b..bdbb974 100644 --- a/pkg/beacon/subscriber.go +++ b/pkg/beacon/subscriber.go @@ -3,11 +3,11 @@ package beacon import ( "context" - v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/altair" - "github.com/attestantio/go-eth2-client/spec/electra" - "github.com/attestantio/go-eth2-client/spec/phase0" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec" + "github.com/ethpandaops/go-eth2-client/spec/altair" + "github.com/ethpandaops/go-eth2-client/spec/electra" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) func (n *node) handleSubscriberError(err error, topic string) { diff --git a/pkg/beacon/subscriptions.go b/pkg/beacon/subscriptions.go index bf41fd4..3bef151 100644 --- a/pkg/beacon/subscriptions.go +++ b/pkg/beacon/subscriptions.go @@ -6,13 +6,13 @@ import ( "fmt" "time" - eth2client "github.com/attestantio/go-eth2-client" - "github.com/attestantio/go-eth2-client/api" - v1 "github.com/attestantio/go-eth2-client/api/v1" - "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/altair" - "github.com/attestantio/go-eth2-client/spec/electra" - "github.com/attestantio/go-eth2-client/spec/phase0" + eth2client "github.com/ethpandaops/go-eth2-client" + "github.com/ethpandaops/go-eth2-client/api" + v1 "github.com/ethpandaops/go-eth2-client/api/v1" + "github.com/ethpandaops/go-eth2-client/spec" + "github.com/ethpandaops/go-eth2-client/spec/altair" + "github.com/ethpandaops/go-eth2-client/spec/electra" + "github.com/ethpandaops/go-eth2-client/spec/phase0" ) func (n *node) ensureBeaconSubscription(ctx context.Context) error { From bdc1647be069e055600c34c1c7b3c0f6a3e31a0d Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Thu, 7 May 2026 12:11:01 +1000 Subject: [PATCH 07/11] fix(go.mod): update go-eth2-client and dynamic-ssz dependencies to latest versions for better stability and performance --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index e57dcd8..c5266d4 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 github.com/ethpandaops/ethwallclock v0.2.0 - github.com/ethpandaops/go-eth2-client v0.0.1 + github.com/ethpandaops/go-eth2-client v0.1.2-0.20260501105559-03ed5eacf583 github.com/go-co-op/gocron v1.16.2 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 @@ -35,7 +35,7 @@ require ( github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/pk910/dynamic-ssz v1.3.0 // indirect + github.com/pk910/dynamic-ssz v1.3.1 // indirect github.com/pk910/hashtree-bindings v0.1.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect diff --git a/go.sum b/go.sum index 7326acc..ab673d8 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 h1:87oCZDe github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= github.com/ethpandaops/ethwallclock v0.2.0 h1:EeFKtZ7v6TAdn/oAh0xaPujD7N4amjBxrWIByraUfLM= github.com/ethpandaops/ethwallclock v0.2.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= -github.com/ethpandaops/go-eth2-client v0.0.1 h1:Xifvb7RF24tguA6HxEaE2vIN1BsY44SOSH/B+CBSFPk= -github.com/ethpandaops/go-eth2-client v0.0.1/go.mod h1:9BBd/XIw1egZTkxtFGMvgXnsxX6ypKHKNKD7itqjmNQ= +github.com/ethpandaops/go-eth2-client v0.1.2-0.20260501105559-03ed5eacf583 h1:hELKAXI1fVVhrsm61rgNKtKHynxSlnHcpCXXF8mS4Yc= +github.com/ethpandaops/go-eth2-client v0.1.2-0.20260501105559-03ed5eacf583/go.mod h1:qoj9ZVKydI99IuIyWt4EvGq4rGgMYfOy6q8zTtwYdy4= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= @@ -102,8 +102,8 @@ github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/pk910/dynamic-ssz v1.3.0 h1:b6v5v3HWAmdxSVKWk4GS7Y/lhURZPAHRQ7EEMUparQk= -github.com/pk910/dynamic-ssz v1.3.0/go.mod h1:NmeFF4jxzVwWC8cnEhUB7xMI++8hd/0OZvZHFrUvFfs= +github.com/pk910/dynamic-ssz v1.3.1 h1:S/no7kRA5FSORmfybG4Cs49CjPgP94fePKPxt8uKkdI= +github.com/pk910/dynamic-ssz v1.3.1/go.mod h1:ARK5qDyrJ/MHpaZHGJYvCKElvaMYTE9pXOQbvPDeE0U= github.com/pk910/hashtree-bindings v0.1.0 h1:w7NyRWFi2OaYEFvo9ADcE/QU6PMuVLl3hBgx92KiH9c= github.com/pk910/hashtree-bindings v0.1.0/go.mod h1:zrWt88783JmhBfcgni6kkIMYRdXTZi/FL//OyI5T/l4= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= From 3a57d83b072de50e9c0098422ad229ee724147cf Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Thu, 7 May 2026 14:55:10 +1000 Subject: [PATCH 08/11] feat: ePBS SSE subs --- go.mod | 2 +- go.sum | 4 +- pkg/beacon/beacon.go | 15 +++++++ pkg/beacon/event.go | 8 ++++ pkg/beacon/options.go | 10 +++++ pkg/beacon/publisher.go | 26 ++++++++++++ pkg/beacon/subscriber.go | 38 ++++++++++++++++++ pkg/beacon/subscriptions.go | 79 +++++++++++++++++++++++++++++++++++++ 8 files changed, 179 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index c5266d4..d3514ca 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 github.com/ethpandaops/ethwallclock v0.2.0 - github.com/ethpandaops/go-eth2-client v0.1.2-0.20260501105559-03ed5eacf583 + github.com/ethpandaops/go-eth2-client v0.1.2-0.20260507042554-4e9992fe2f0e github.com/go-co-op/gocron v1.16.2 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 diff --git a/go.sum b/go.sum index ab673d8..65a1f8b 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 h1:87oCZDe github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= github.com/ethpandaops/ethwallclock v0.2.0 h1:EeFKtZ7v6TAdn/oAh0xaPujD7N4amjBxrWIByraUfLM= github.com/ethpandaops/ethwallclock v0.2.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= -github.com/ethpandaops/go-eth2-client v0.1.2-0.20260501105559-03ed5eacf583 h1:hELKAXI1fVVhrsm61rgNKtKHynxSlnHcpCXXF8mS4Yc= -github.com/ethpandaops/go-eth2-client v0.1.2-0.20260501105559-03ed5eacf583/go.mod h1:qoj9ZVKydI99IuIyWt4EvGq4rGgMYfOy6q8zTtwYdy4= +github.com/ethpandaops/go-eth2-client v0.1.2-0.20260507042554-4e9992fe2f0e h1:kGV+Z154YNte8m1JGT3+yh4/XxgHcoqzXKDxkKQQHEc= +github.com/ethpandaops/go-eth2-client v0.1.2-0.20260507042554-4e9992fe2f0e/go.mod h1:qoj9ZVKydI99IuIyWt4EvGq4rGgMYfOy6q8zTtwYdy4= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= diff --git a/pkg/beacon/beacon.go b/pkg/beacon/beacon.go index db5d3bf..1416aca 100644 --- a/pkg/beacon/beacon.go +++ b/pkg/beacon/beacon.go @@ -20,6 +20,7 @@ import ( "github.com/ethpandaops/go-eth2-client/spec/altair" "github.com/ethpandaops/go-eth2-client/spec/deneb" "github.com/ethpandaops/go-eth2-client/spec/electra" + "github.com/ethpandaops/go-eth2-client/spec/gloas" "github.com/ethpandaops/go-eth2-client/spec/phase0" "github.com/go-co-op/gocron" "github.com/rs/zerolog" @@ -134,6 +135,20 @@ type Node interface { // OnDataColumnSidecar is called when a data column sidecar is received. OnDataColumnSidecar(ctx context.Context, handler func(ctx context.Context, ev *v1.DataColumnSidecarEvent) error) + // EIP-7732 ePBS subscriptions. + // OnExecutionPayload is called when a SignedExecutionPayloadEnvelope has been imported into fork-choice. + OnExecutionPayload(ctx context.Context, handler func(ctx context.Context, ev *gloas.SignedExecutionPayloadEnvelope) error) + // OnExecutionPayloadGossip is called when a SignedExecutionPayloadEnvelope has passed gossip validation. + OnExecutionPayloadGossip(ctx context.Context, handler func(ctx context.Context, ev *gloas.SignedExecutionPayloadEnvelope) error) + // OnExecutionPayloadAvailable is called when the node has verified the execution payload and blobs are locally available. + OnExecutionPayloadAvailable(ctx context.Context, handler func(ctx context.Context, ev *v1.ExecutionPayloadAvailableEvent) error) + // OnExecutionPayloadBid is called when a SignedExecutionPayloadBid passes gossip validation. + OnExecutionPayloadBid(ctx context.Context, handler func(ctx context.Context, ev *gloas.SignedExecutionPayloadBid) error) + // OnPayloadAttestationMessage is called when a PayloadAttestationMessage is received. + OnPayloadAttestationMessage(ctx context.Context, handler func(ctx context.Context, ev *gloas.PayloadAttestationMessage) error) + // OnProposerPreferences is called when a SignedProposerPreferences is received. + OnProposerPreferences(ctx context.Context, handler func(ctx context.Context, ev *gloas.SignedProposerPreferences) error) + // - Custom events // OnReady is called when the node is ready. OnReady(ctx context.Context, handler func(ctx context.Context, event *ReadyEvent) error) diff --git a/pkg/beacon/event.go b/pkg/beacon/event.go index 9a3dd3c..7c8cbad 100644 --- a/pkg/beacon/event.go +++ b/pkg/beacon/event.go @@ -53,6 +53,14 @@ const ( topicBlobSidecar = "blob_sidecar" topicDataColumnSidecar = "data_column_sidecar" topicEvent = "raw_event" + + // EIP-7732 ePBS beacon SSE topics. + topicExecutionPayload = "execution_payload" + topicExecutionPayloadAvailable = "execution_payload_available" + topicExecutionPayloadBid = "execution_payload_bid" + topicExecutionPayloadGossip = "execution_payload_gossip" + topicPayloadAttestationMessage = "payload_attestation_message" + topicProposerPreferences = "proposer_preferences" ) type ReadyEvent struct { diff --git a/pkg/beacon/options.go b/pkg/beacon/options.go index ec23856..df5f057 100644 --- a/pkg/beacon/options.go +++ b/pkg/beacon/options.go @@ -83,6 +83,10 @@ func DefaultDisabledBeaconSubscriptionOptions() BeaconSubscriptionOptions { } // DefaultEnabledBeaconSubscriptionOptions returns the default options for an enabled beacon subscription. +// +// EIP-7732 ePBS topics are appended unconditionally; pre-Gloas networks won't emit +// them, so consumers should gate subscription registration on the connected node's +// fork if they want to avoid noisy logs on older networks. func DefaultEnabledBeaconSubscriptionOptions() BeaconSubscriptionOptions { return BeaconSubscriptionOptions{ Enabled: true, @@ -97,6 +101,12 @@ func DefaultEnabledBeaconSubscriptionOptions() BeaconSubscriptionOptions { topicVoluntaryExit, topicContributionAndProof, topicBlobSidecar, + topicExecutionPayload, + topicExecutionPayloadGossip, + topicExecutionPayloadAvailable, + topicExecutionPayloadBid, + topicPayloadAttestationMessage, + topicProposerPreferences, }, } } diff --git a/pkg/beacon/publisher.go b/pkg/beacon/publisher.go index d7103ad..8135281 100644 --- a/pkg/beacon/publisher.go +++ b/pkg/beacon/publisher.go @@ -10,6 +10,7 @@ import ( "github.com/ethpandaops/go-eth2-client/spec" "github.com/ethpandaops/go-eth2-client/spec/altair" "github.com/ethpandaops/go-eth2-client/spec/electra" + "github.com/ethpandaops/go-eth2-client/spec/gloas" "github.com/ethpandaops/go-eth2-client/spec/phase0" ) @@ -118,3 +119,28 @@ func (n *node) publishFirstTimeHealthy(ctx context.Context) { func (n *node) publishSingleAttestation(ctx context.Context, event *electra.SingleAttestation) { n.broker.Emit(topicSingleAttestation, event) } + +// EIP-7732 ePBS beacon SSE event publishers. +func (n *node) publishExecutionPayload(ctx context.Context, event *gloas.SignedExecutionPayloadEnvelope) { + n.broker.Emit(topicExecutionPayload, event) +} + +func (n *node) publishExecutionPayloadGossip(ctx context.Context, event *gloas.SignedExecutionPayloadEnvelope) { + n.broker.Emit(topicExecutionPayloadGossip, event) +} + +func (n *node) publishExecutionPayloadAvailable(ctx context.Context, event *v1.ExecutionPayloadAvailableEvent) { + n.broker.Emit(topicExecutionPayloadAvailable, event) +} + +func (n *node) publishExecutionPayloadBid(ctx context.Context, event *gloas.SignedExecutionPayloadBid) { + n.broker.Emit(topicExecutionPayloadBid, event) +} + +func (n *node) publishPayloadAttestationMessage(ctx context.Context, event *gloas.PayloadAttestationMessage) { + n.broker.Emit(topicPayloadAttestationMessage, event) +} + +func (n *node) publishProposerPreferences(ctx context.Context, event *gloas.SignedProposerPreferences) { + n.broker.Emit(topicProposerPreferences, event) +} diff --git a/pkg/beacon/subscriber.go b/pkg/beacon/subscriber.go index bdbb974..cbd734d 100644 --- a/pkg/beacon/subscriber.go +++ b/pkg/beacon/subscriber.go @@ -7,6 +7,7 @@ import ( "github.com/ethpandaops/go-eth2-client/spec" "github.com/ethpandaops/go-eth2-client/spec/altair" "github.com/ethpandaops/go-eth2-client/spec/electra" + "github.com/ethpandaops/go-eth2-client/spec/gloas" "github.com/ethpandaops/go-eth2-client/spec/phase0" ) @@ -83,6 +84,43 @@ func (n *node) OnSingleAttestation(ctx context.Context, handler func(ctx context }) } +// EIP-7732 ePBS beacon SSE event handlers. +func (n *node) OnExecutionPayload(ctx context.Context, handler func(ctx context.Context, event *gloas.SignedExecutionPayloadEnvelope) error) { + n.broker.On(topicExecutionPayload, func(event *gloas.SignedExecutionPayloadEnvelope) { + n.handleSubscriberError(handler(ctx, event), topicExecutionPayload) + }) +} + +func (n *node) OnExecutionPayloadGossip(ctx context.Context, handler func(ctx context.Context, event *gloas.SignedExecutionPayloadEnvelope) error) { + n.broker.On(topicExecutionPayloadGossip, func(event *gloas.SignedExecutionPayloadEnvelope) { + n.handleSubscriberError(handler(ctx, event), topicExecutionPayloadGossip) + }) +} + +func (n *node) OnExecutionPayloadAvailable(ctx context.Context, handler func(ctx context.Context, event *v1.ExecutionPayloadAvailableEvent) error) { + n.broker.On(topicExecutionPayloadAvailable, func(event *v1.ExecutionPayloadAvailableEvent) { + n.handleSubscriberError(handler(ctx, event), topicExecutionPayloadAvailable) + }) +} + +func (n *node) OnExecutionPayloadBid(ctx context.Context, handler func(ctx context.Context, event *gloas.SignedExecutionPayloadBid) error) { + n.broker.On(topicExecutionPayloadBid, func(event *gloas.SignedExecutionPayloadBid) { + n.handleSubscriberError(handler(ctx, event), topicExecutionPayloadBid) + }) +} + +func (n *node) OnPayloadAttestationMessage(ctx context.Context, handler func(ctx context.Context, event *gloas.PayloadAttestationMessage) error) { + n.broker.On(topicPayloadAttestationMessage, func(event *gloas.PayloadAttestationMessage) { + n.handleSubscriberError(handler(ctx, event), topicPayloadAttestationMessage) + }) +} + +func (n *node) OnProposerPreferences(ctx context.Context, handler func(ctx context.Context, event *gloas.SignedProposerPreferences) error) { + n.broker.On(topicProposerPreferences, func(event *gloas.SignedProposerPreferences) { + n.handleSubscriberError(handler(ctx, event), topicProposerPreferences) + }) +} + func (n *node) OnEvent(ctx context.Context, handler func(ctx context.Context, event *v1.Event) error) { n.broker.On(topicEvent, func(event *v1.Event) { n.handleSubscriberError(handler(ctx, event), topicEvent) diff --git a/pkg/beacon/subscriptions.go b/pkg/beacon/subscriptions.go index 3bef151..7b27c34 100644 --- a/pkg/beacon/subscriptions.go +++ b/pkg/beacon/subscriptions.go @@ -12,6 +12,7 @@ import ( "github.com/ethpandaops/go-eth2-client/spec" "github.com/ethpandaops/go-eth2-client/spec/altair" "github.com/ethpandaops/go-eth2-client/spec/electra" + "github.com/ethpandaops/go-eth2-client/spec/gloas" "github.com/ethpandaops/go-eth2-client/spec/phase0" ) @@ -102,6 +103,18 @@ func (n *node) handleEvent(ctx context.Context, event *v1.Event) error { return n.handleBlobSidecar(ctx, event) case topicDataColumnSidecar: return n.handleDataColumnSidecar(ctx, event) + case topicExecutionPayload: + return n.handleExecutionPayload(ctx, event) + case topicExecutionPayloadGossip: + return n.handleExecutionPayloadGossip(ctx, event) + case topicExecutionPayloadAvailable: + return n.handleExecutionPayloadAvailable(ctx, event) + case topicExecutionPayloadBid: + return n.handleExecutionPayloadBid(ctx, event) + case topicPayloadAttestationMessage: + return n.handlePayloadAttestationMessage(ctx, event) + case topicProposerPreferences: + return n.handleProposerPreferences(ctx, event) default: return fmt.Errorf("unknown event topic %s", event.Topic) @@ -228,3 +241,69 @@ func (n *node) handleDataColumnSidecar(ctx context.Context, event *v1.Event) err return nil } + +func (n *node) handleExecutionPayload(ctx context.Context, event *v1.Event) error { + envelope, valid := event.Data.(*gloas.SignedExecutionPayloadEnvelope) + if !valid { + return errors.New("invalid execution payload event") + } + + n.publishExecutionPayload(ctx, envelope) + + return nil +} + +func (n *node) handleExecutionPayloadGossip(ctx context.Context, event *v1.Event) error { + envelope, valid := event.Data.(*gloas.SignedExecutionPayloadEnvelope) + if !valid { + return errors.New("invalid execution payload gossip event") + } + + n.publishExecutionPayloadGossip(ctx, envelope) + + return nil +} + +func (n *node) handleExecutionPayloadAvailable(ctx context.Context, event *v1.Event) error { + available, valid := event.Data.(*v1.ExecutionPayloadAvailableEvent) + if !valid { + return errors.New("invalid execution payload available event") + } + + n.publishExecutionPayloadAvailable(ctx, available) + + return nil +} + +func (n *node) handleExecutionPayloadBid(ctx context.Context, event *v1.Event) error { + bid, valid := event.Data.(*gloas.SignedExecutionPayloadBid) + if !valid { + return errors.New("invalid execution payload bid event") + } + + n.publishExecutionPayloadBid(ctx, bid) + + return nil +} + +func (n *node) handlePayloadAttestationMessage(ctx context.Context, event *v1.Event) error { + message, valid := event.Data.(*gloas.PayloadAttestationMessage) + if !valid { + return errors.New("invalid payload attestation message event") + } + + n.publishPayloadAttestationMessage(ctx, message) + + return nil +} + +func (n *node) handleProposerPreferences(ctx context.Context, event *v1.Event) error { + prefs, valid := event.Data.(*gloas.SignedProposerPreferences) + if !valid { + return errors.New("invalid proposer preferences event") + } + + n.publishProposerPreferences(ctx, prefs) + + return nil +} From 7101e4f262472aaba3c9c218c5beb5c861ec4b90 Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Thu, 7 May 2026 15:22:22 +1000 Subject: [PATCH 09/11] feat(metrics): introduce constants for metrics labels to improve code clarity and maintainability refactor(metrics): replace hard-coded label strings with constants to reduce duplication and minimize errors --- pkg/beacon/metrics.go | 5 +++ pkg/beacon/metrics_beacon.go | 52 +++++++++++++++---------------- pkg/beacon/metrics_events.go | 2 +- pkg/beacon/metrics_events_test.go | 4 +-- pkg/beacon/metrics_fork.go | 6 ++-- pkg/beacon/metrics_general.go | 2 +- pkg/beacon/options.go | 13 +++----- 7 files changed, 42 insertions(+), 42 deletions(-) diff --git a/pkg/beacon/metrics.go b/pkg/beacon/metrics.go index 7469ef2..a5c1e53 100644 --- a/pkg/beacon/metrics.go +++ b/pkg/beacon/metrics.go @@ -8,6 +8,11 @@ import ( "github.com/sirupsen/logrus" ) +const ( + metricsLabelBlockID = "block_id" + metricsLabelVersion = "version" +) + // Metrics contains all the metrics jobs. type Metrics struct { jobs map[string]MetricsJob diff --git a/pkg/beacon/metrics_beacon.go b/pkg/beacon/metrics_beacon.go index d4a7a4b..390dcc2 100644 --- a/pkg/beacon/metrics_beacon.go +++ b/pkg/beacon/metrics_beacon.go @@ -62,8 +62,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), Transactions: *prometheus.NewGaugeVec( @@ -74,8 +74,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), Slashings: *prometheus.NewGaugeVec( @@ -86,8 +86,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, "type", }, ), @@ -99,8 +99,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), Deposits: *prometheus.NewGaugeVec( @@ -111,8 +111,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), VoluntaryExits: *prometheus.NewGaugeVec( @@ -123,8 +123,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), FinalityCheckpoints: *prometheus.NewGaugeVec( @@ -180,8 +180,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), WithdrawalsAmount: *prometheus.NewGaugeVec( @@ -192,8 +192,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), WithdrawalsIndexMax: *prometheus.NewGaugeVec( @@ -204,8 +204,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), WithdrawalsIndexMin: *prometheus.NewGaugeVec( @@ -216,8 +216,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), BlobKZGCommitments: *prometheus.NewGaugeVec( @@ -228,8 +228,8 @@ func NewBeaconMetrics(beac Node, log logrus.FieldLogger, namespace string, const ConstLabels: constLabels, }, []string{ - "block_id", - "version", + metricsLabelBlockID, + metricsLabelVersion, }, ), } @@ -448,28 +448,28 @@ func (b *BeaconMetrics) recordNewBeaconBlock(blockID string, block *spec.Version slot, err := block.Slot() if err != nil { - b.log.WithError(err).WithField("block_id", blockID).Error("Failed to get slot from block") + b.log.WithError(err).WithField(metricsLabelBlockID, blockID).Error("Failed to get slot from block") } else { b.Slot.WithLabelValues(blockID, version).Set(float64(slot)) } attesterSlashing, err := block.AttesterSlashings() if err != nil { - b.log.WithError(err).WithField("block_id", blockID).Error("Failed to get attester slashing from block") + b.log.WithError(err).WithField(metricsLabelBlockID, blockID).Error("Failed to get attester slashing from block") } else { b.Slashings.WithLabelValues(blockID, version, "attester").Set(float64(len(attesterSlashing))) } proposerSlashing, err := block.ProposerSlashings() if err != nil { - b.log.WithError(err).WithField("block_id", blockID).Error("Failed to get proposer slashing from block") + b.log.WithError(err).WithField(metricsLabelBlockID, blockID).Error("Failed to get proposer slashing from block") } else { b.Slashings.WithLabelValues(blockID, version, "proposer").Set(float64(len(proposerSlashing))) } attestations, err := block.Attestations() if err != nil { - b.log.WithError(err).WithField("block_id", blockID).Error("Failed to get attestations from block") + b.log.WithError(err).WithField(metricsLabelBlockID, blockID).Error("Failed to get attestations from block") } else { b.Attestations.WithLabelValues(blockID, version).Set(float64(len(attestations))) } diff --git a/pkg/beacon/metrics_events.go b/pkg/beacon/metrics_events.go index 2c97065..51c4503 100644 --- a/pkg/beacon/metrics_events.go +++ b/pkg/beacon/metrics_events.go @@ -46,7 +46,7 @@ func NewEventJob(bc Node, log logrus.FieldLogger, namespace string, constLabels ConstLabels: constLabels, }, []string{ - "event", + metricsJobNameEvent, }, ), TimeSinceLastEvent: prometheus.NewGauge( diff --git a/pkg/beacon/metrics_events_test.go b/pkg/beacon/metrics_events_test.go index afc853f..5f44b2d 100644 --- a/pkg/beacon/metrics_events_test.go +++ b/pkg/beacon/metrics_events_test.go @@ -34,7 +34,7 @@ func TestEventMetrics_ConcurrentAccess(t *testing.T) { Name: "event_count", Help: "Test event count", }, - []string{"event"}, + []string{metricsJobNameEvent}, ), TimeSinceLastEvent: prometheus.NewGauge( prometheus.GaugeOpts{ @@ -128,7 +128,7 @@ func TestEventMetrics_LastEventTime(t *testing.T) { Name: "event_count", Help: "Test event count", }, - []string{"event"}, + []string{metricsJobNameEvent}, ), TimeSinceLastEvent: prometheus.NewGauge( prometheus.GaugeOpts{ diff --git a/pkg/beacon/metrics_fork.go b/pkg/beacon/metrics_fork.go index 68eead1..0db657f 100644 --- a/pkg/beacon/metrics_fork.go +++ b/pkg/beacon/metrics_fork.go @@ -39,7 +39,7 @@ func NewForksJob(beac Node, log logrus.FieldLogger, namespace string, constLabel ConstLabels: constLabels, }, []string{ - "fork", + metricsJobNameFork, }, ), Activated: *prometheus.NewGaugeVec( @@ -50,7 +50,7 @@ func NewForksJob(beac Node, log logrus.FieldLogger, namespace string, constLabel ConstLabels: constLabels, }, []string{ - "fork", + metricsJobNameFork, }, ), Current: *prometheus.NewGaugeVec( @@ -61,7 +61,7 @@ func NewForksJob(beac Node, log logrus.FieldLogger, namespace string, constLabel ConstLabels: constLabels, }, []string{ - "fork", + metricsJobNameFork, }, ), } diff --git a/pkg/beacon/metrics_general.go b/pkg/beacon/metrics_general.go index 598a3aa..d07a636 100644 --- a/pkg/beacon/metrics_general.go +++ b/pkg/beacon/metrics_general.go @@ -36,7 +36,7 @@ func NewGeneralJob(beac Node, log logrus.FieldLogger, namespace string, constLab ConstLabels: constLabels, }, []string{ - "version", + metricsLabelVersion, }, ), Peers: *prometheus.NewGaugeVec( diff --git a/pkg/beacon/options.go b/pkg/beacon/options.go index df5f057..60a3f50 100644 --- a/pkg/beacon/options.go +++ b/pkg/beacon/options.go @@ -84,9 +84,10 @@ func DefaultDisabledBeaconSubscriptionOptions() BeaconSubscriptionOptions { // DefaultEnabledBeaconSubscriptionOptions returns the default options for an enabled beacon subscription. // -// EIP-7732 ePBS topics are appended unconditionally; pre-Gloas networks won't emit -// them, so consumers should gate subscription registration on the connected node's -// fork if they want to avoid noisy logs on older networks. +// execution_payload, execution_payload_gossip, execution_payload_available, +// execution_payload_bid, payload_attestation_message, and proposer_preferences +// can be added once Gloas is live if you want them defaulting. Not adding for +// now due to connection thrashing, etc. func DefaultEnabledBeaconSubscriptionOptions() BeaconSubscriptionOptions { return BeaconSubscriptionOptions{ Enabled: true, @@ -101,12 +102,6 @@ func DefaultEnabledBeaconSubscriptionOptions() BeaconSubscriptionOptions { topicVoluntaryExit, topicContributionAndProof, topicBlobSidecar, - topicExecutionPayload, - topicExecutionPayloadGossip, - topicExecutionPayloadAvailable, - topicExecutionPayloadBid, - topicPayloadAttestationMessage, - topicProposerPreferences, }, } } From da13b89dbf44a8ff6f17446da9302181ecf55dc9 Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Thu, 14 May 2026 10:06:37 +1000 Subject: [PATCH 10/11] chore(api.go): add inline comment to suppress golint warnings for operator-supplied beacon node config URLs for clarity and maintainability --- pkg/beacon/api/api.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/beacon/api/api.go b/pkg/beacon/api/api.go index 4009a72..040da2e 100644 --- a/pkg/beacon/api/api.go +++ b/pkg/beacon/api/api.go @@ -62,7 +62,7 @@ func (c *consensusClient) post(ctx context.Context, path string, body map[string req.Header.Set(k, v) } - rsp, err := c.client.Do(req) + rsp, err := c.client.Do(req) //nolint:gosec // url is operator-supplied beacon node config, not user input if err != nil { return nil, err } @@ -98,7 +98,7 @@ func (c *consensusClient) get(ctx context.Context, path string) (json.RawMessage req.Header.Set(k, v) } - rsp, err := c.client.Do(req) + rsp, err := c.client.Do(req) //nolint:gosec // url is operator-supplied beacon node config, not user input if err != nil { return nil, err } @@ -144,7 +144,7 @@ func (c *consensusClient) getRaw(ctx context.Context, path string, contentType s req.Header.Set("Accept", contentType) - rsp, err := c.client.Do(req) + rsp, err := c.client.Do(req) //nolint:gosec // url is operator-supplied beacon node config, not user input if err != nil { return nil, err } From ddfa770071535ac43b6723041e7ba226064c22cc Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Thu, 14 May 2026 10:31:36 +1000 Subject: [PATCH 11/11] chore(deps): bump go-ethereum to bal-devnet-6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the go-ethereum pin from bal-devnet-3 commit 8f361e342cb9 (2026-03-23) to bal-devnet-6 HEAD 73944e329925 (2026-05-07) — the EL branch deployed on glamsterdam-devnet-3 per ethpandaops/glamsterdam-devnets ansible inventory. bal-devnet-6 contains the latest BAL (EIP-7928) refinements plus Amsterdam slot-number support (EIP-7843) needed for Gloas observability. --- go.mod | 8 ++++---- go.sum | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index d3514ca..ad89cf8 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.25.1 require ( github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9 - github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 + github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925 github.com/ethpandaops/ethwallclock v0.2.0 github.com/ethpandaops/go-eth2-client v0.1.2-0.20260507042554-4e9992fe2f0e github.com/go-co-op/gocron v1.16.2 @@ -49,9 +49,9 @@ require ( go.opentelemetry.io/otel/metric v1.40.0 // indirect go.opentelemetry.io/otel/trace v1.40.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.44.0 // indirect - golang.org/x/net v0.47.0 // indirect - golang.org/x/sync v0.18.0 // indirect + golang.org/x/crypto v0.47.0 // indirect + golang.org/x/net v0.49.0 // indirect + golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.40.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/go.sum b/go.sum index 65a1f8b..54ca9d3 100644 --- a/go.sum +++ b/go.sum @@ -18,8 +18,8 @@ github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9 h1:87oCZDemf+tvCIUtKt9EUtkfXbU/llIl41ML8+vZ8Mo= -github.com/ethereum/go-ethereum v1.17.2-0.20260324190457-8f361e342cb9/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= +github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925 h1:d0kQnVKgCER1xIEYB0ucuNLfq4PtBZw+abMceZKUO8g= +github.com/ethereum/go-ethereum v1.17.3-0.20260507223249-73944e329925/go.mod h1:f2EhRwqewIZkGoQekywI2Y2RZAMTSavLNkD9qItFy1A= github.com/ethpandaops/ethwallclock v0.2.0 h1:EeFKtZ7v6TAdn/oAh0xaPujD7N4amjBxrWIByraUfLM= github.com/ethpandaops/ethwallclock v0.2.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= github.com/ethpandaops/go-eth2-client v0.1.2-0.20260507042554-4e9992fe2f0e h1:kGV+Z154YNte8m1JGT3+yh4/XxgHcoqzXKDxkKQQHEc= @@ -152,18 +152,18 @@ go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= -golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -184,8 +184,8 @@ golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=