From 1974663e25114fab9cf95c8a4b4ccc376d79b809 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Thu, 2 Jul 2026 13:14:06 +0200 Subject: [PATCH 1/7] Bump go-eth2-client to eip-7688 branch for Glamsterdam devnet-7 Adopts progressive SSZ merkleization (EIP-7688) for consensus types. Fixes 'Invalid payload execution bid signature' on ePBS bid submission: the ExecutionPayloadBid hash-tree-root now uses progressive-container merkleization with active fields, matching Teku's devnet-7 root instead of the old plain binary-tree root. go-eth2-client v0.1.5 -> v0.1.6-0.20260629130636-6d2ee1978c4e --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bfdbe31c..c581399b 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.25.7 require ( github.com/ethereum/go-ethereum v1.17.3 github.com/ethpandaops/go-eth-engine-client v0.0.1 - github.com/ethpandaops/go-eth2-client v0.1.5 + github.com/ethpandaops/go-eth2-client v0.1.6-0.20260629130636-6d2ee1978c4e github.com/ethpandaops/service-authenticatoor v0.0.1 github.com/glebarez/go-sqlite v1.22.0 github.com/goccy/go-yaml v1.19.2 diff --git a/go.sum b/go.sum index 5f6d791a..da47a85c 100644 --- a/go.sum +++ b/go.sum @@ -68,8 +68,8 @@ github.com/ethereum/go-ethereum v1.17.3 h1:Ev/sQHH+UdKZHWjuVzhu2pxhi/sXaPZl23Q+Q github.com/ethereum/go-ethereum v1.17.3/go.mod h1:f2EhRwqewIZkGoQekywI2Y2RZAMTSavLNkD9qItFy1A= github.com/ethpandaops/go-eth-engine-client v0.0.1 h1:AHeLjz8JoyLvo9UtneQCYzm/gz5JkPLfQcwfXG+oGho= github.com/ethpandaops/go-eth-engine-client v0.0.1/go.mod h1:ggCXJgxLFNGpC+DkgNQkeTr3dXRQDb0+9niNmaJWAgM= -github.com/ethpandaops/go-eth2-client v0.1.5 h1:MaWQ+KT+p7g+Lkx7pVuS+7omOAPYAKvtHXzGP8FjXTM= -github.com/ethpandaops/go-eth2-client v0.1.5/go.mod h1:97Oq3omOQSGPPYgrbsOIIw2Pc4T5Ph21f8ZRyHJQBHU= +github.com/ethpandaops/go-eth2-client v0.1.6-0.20260629130636-6d2ee1978c4e h1:nfKMn36srSO5sQPVuUIRolr9O1SwXE/VQNw8kxB97bk= +github.com/ethpandaops/go-eth2-client v0.1.6-0.20260629130636-6d2ee1978c4e/go.mod h1:97Oq3omOQSGPPYgrbsOIIw2Pc4T5Ph21f8ZRyHJQBHU= github.com/ethpandaops/service-authenticatoor v0.0.1 h1:yZ0gKYf+kkj92piqqYprpF6HkhEIhCNmzDrsYth92KI= github.com/ethpandaops/service-authenticatoor v0.0.1/go.mod h1:+C6sQMBxY2E3u6BITSZakQrGRovNnB1CamuQh/RIaXI= github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= From 8f6fbb6277278181f989b24c6adac3f7a42a6879 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Thu, 2 Jul 2026 14:31:55 +0200 Subject: [PATCH 2/7] Update builder deposit contract to devnet-7 predeploy address The old EIP-8282 builder deposit predeploy 0x0000884d...8282 has no code on Glamsterdam devnet-7, so deposit txs succeeded as bare value transfers, emitted no builder-deposit request, and the builder never entered state.builders (registration timed out and re-deposited in a loop). Point BuilderDepositContractAddress at the devnet-7 predeploy 0x00006AE84ed173D4394de5E28F9ED56b28008282. Exit contract unchanged. --- pkg/lifecycle/contract.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/lifecycle/contract.go b/pkg/lifecycle/contract.go index 4690f26e..1a361e17 100644 --- a/pkg/lifecycle/contract.go +++ b/pkg/lifecycle/contract.go @@ -24,7 +24,7 @@ import ( // canonical addresses and match dora's DefaultSystemContractAddresses. var ( // BuilderDepositContractAddress is the EIP-8282 builder deposit predeploy. - BuilderDepositContractAddress = common.HexToAddress("0x0000884d2AA32eAa155F59A2f24eFa73D9008282") + BuilderDepositContractAddress = common.HexToAddress("0x00006AE84ed173D4394de5E28F9ED56b28008282") // BuilderExitContractAddress is the EIP-8282 builder exit predeploy. BuilderExitContractAddress = common.HexToAddress("0x000014574A74c805590AFF9499fc7A690f008282") ) From 70b7bffdb410a6bd987a5d34e726f890dccb1c99 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Mon, 6 Jul 2026 10:45:12 +0200 Subject: [PATCH 3/7] change early-onboarding withdrawal prefix from 0x03 to 0xB0 BUILDER_WITHDRAWAL_PREFIX changed to 0xB0 in ethereum/consensus-specs#5416 (v1.7.0-alpha.12). Pre-Gloas early-onboarding deposits through the validator deposit contract must carry the new prefix to be onboarded as builders at the fork. The EIP-8282 contract path (0x00 credentials) and deposit request type 0x03 are unaffected. --- pkg/lifecycle/contract.go | 6 +++--- pkg/lifecycle/contract_test.go | 4 ++-- pkg/lifecycle/early_deposit.go | 4 ++-- pkg/signer/bls.go | 2 +- pkg/signer/bls_test.go | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkg/lifecycle/contract.go b/pkg/lifecycle/contract.go index 1a361e17..e9d3320f 100644 --- a/pkg/lifecycle/contract.go +++ b/pkg/lifecycle/contract.go @@ -46,8 +46,8 @@ const ( builderWithdrawalPrefix = 0x00 // validatorWithdrawalPrefix is the withdrawal-credential prefix used for the // pre-Gloas early-onboarding deposit, which goes through the regular validator - // deposit contract (execution-address / 0x03-style credentials). - validatorWithdrawalPrefix = 0x03 + // deposit contract (builder-prefix / 0xB0 credentials). + validatorWithdrawalPrefix = 0xB0 ) // excessInhibitor is the EXCESS_INHIBITOR (2^256-1) stored in slot 0 of the @@ -174,7 +174,7 @@ func BuilderWithdrawalCredentials(walletAddress common.Address) [32]byte { // ValidatorWithdrawalCredentials builds the withdrawal credentials for the pre-Gloas // early-onboarding deposit, which is submitted through the regular validator deposit -// contract. Format: 0x03 + 00...00 (11 zero bytes) + wallet_address (20 bytes). +// contract. Format: 0xB0 + 00...00 (11 zero bytes) + wallet_address (20 bytes). func ValidatorWithdrawalCredentials(walletAddress common.Address) [32]byte { return buildWithdrawalCredentials(validatorWithdrawalPrefix, walletAddress) } diff --git a/pkg/lifecycle/contract_test.go b/pkg/lifecycle/contract_test.go index 3d536d0b..2576036f 100644 --- a/pkg/lifecycle/contract_test.go +++ b/pkg/lifecycle/contract_test.go @@ -38,7 +38,7 @@ func TestBuildBuilderDepositCalldata(t *testing.T) { } var wc [32]byte - wc[0] = 0x03 + wc[0] = 0xB0 sig := make([]byte, 96) for i := range sig { @@ -95,7 +95,7 @@ func TestWithdrawalCredentials(t *testing.T) { wantPrefix byte }{ {"builder uses 0x00 prefix", BuilderWithdrawalCredentials(addr), 0x00}, - {"validator uses 0x03 prefix", ValidatorWithdrawalCredentials(addr), 0x03}, + {"validator uses 0xB0 prefix", ValidatorWithdrawalCredentials(addr), 0xB0}, } for _, tt := range tests { diff --git a/pkg/lifecycle/early_deposit.go b/pkg/lifecycle/early_deposit.go index f6cf8016..3dd86b99 100644 --- a/pkg/lifecycle/early_deposit.go +++ b/pkg/lifecycle/early_deposit.go @@ -31,7 +31,7 @@ const depositContractABI = `[{"name":"deposit","type":"function","stateMutabilit // EarlyDepositService submits a pre-Gloas builder onboarding deposit via the regular // validator deposit contract. Unlike the post-fork builder deposit (EIP-8282 predeploy, -// 0x00 withdrawal prefix, DOMAIN_BUILDER_DEPOSIT), an early deposit uses 0x03 withdrawal +// 0x00 withdrawal prefix, DOMAIN_BUILDER_DEPOSIT), an early deposit uses 0xB0 withdrawal // credentials and is signed with the validator deposit domain — i.e. it is an ordinary // validator deposit that sits in the beacon state's pending_deposits queue and is // converted into a builder at the Gloas fork boundary. @@ -87,7 +87,7 @@ func (s *EarlyDepositService) HasPendingDeposit() bool { } // CreateEarlyDeposit builds, signs and sends a validator deposit for this builder via -// the regular deposit contract. The deposit uses 0x03 (execution-address) withdrawal +// the regular deposit contract. The deposit uses 0xB0 (BUILDER_WITHDRAWAL_PREFIX) withdrawal // credentials pointing at the funding wallet and is signed with the validator deposit // domain over GENESIS_FORK_VERSION. func (s *EarlyDepositService) CreateEarlyDeposit(ctx context.Context, amountGwei uint64) error { diff --git a/pkg/signer/bls.go b/pkg/signer/bls.go index 3dddca76..4c24a9e0 100644 --- a/pkg/signer/bls.go +++ b/pkg/signer/bls.go @@ -22,7 +22,7 @@ var ( // DomainDeposit is the standard domain for validator deposit signatures, and for // the genesis builder-onboarding path (a pre-fork deposit to the validator deposit - // contract with a 0x03 credential, per the Gloas spec). + // contract with a 0xB0 credential, per the Gloas spec). DomainDeposit = phase0.DomainType{0x03, 0x00, 0x00, 0x00} // DomainBuilderDeposit is DOMAIN_BUILDER_DEPOSIT (Gloas, 0x0E000000): the dedicated diff --git a/pkg/signer/bls_test.go b/pkg/signer/bls_test.go index 3ff8228c..e995eb8e 100644 --- a/pkg/signer/bls_test.go +++ b/pkg/signer/bls_test.go @@ -18,7 +18,7 @@ func TestDepositRootComputation(t *testing.T) { } var wc [32]byte - wc[0] = 0x03 + wc[0] = 0xB0 for i := 12; i < 32; i++ { wc[i] = byte(i) } From c1f4efa77f8d06ab150e16268d01d3ab6ddf7707 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Wed, 8 Jul 2026 09:39:08 +0200 Subject: [PATCH 4/7] fix alpha.12 payload deadline and builder deposit prefix consensus-specs v1.7.0-alpha.12 moved the payload deadline to 50% of the slot (PAYLOAD_DUE_BPS 7500 -> 5000, #5414), so the default reveal time of 7000ms @12s would fire 1s after the deadline and the PTC would vote every payload absent. Drop the default to 5000ms @12s. It also restricts builder deposits to BUILDER_WITHDRAWAL_PREFIX (0xB0) credentials (#5439) - deposits with any other prefix are silently ignored by process_builder_deposit_request. Switch the EIP-8282 predeploy deposit path from 0x00 to 0xB0. --- cmd/root.go | 2 +- pkg/config/default.go | 18 +++++++++--------- pkg/lifecycle/contract.go | 7 +++++-- pkg/lifecycle/contract_test.go | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 7e9d6778..40eee730 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -82,7 +82,7 @@ func init() { // ePBS time-based flags (0 = auto from slot time, scaled from the 12s value) rootCmd.PersistentFlags().Int64("epbs-bid-start", 0, "First bid time in ms relative to slot start (0 = auto: -400ms @12s, scaled to slot time)") rootCmd.PersistentFlags().Int64("epbs-bid-end", 0, "Last bid time in ms relative to slot start (0 = auto: -100ms @12s, scaled to slot time)") - rootCmd.PersistentFlags().Int64("epbs-reveal-time", 0, "Reveal time in ms relative to slot start (0 = auto: 7000ms @12s, scaled to slot time)") + rootCmd.PersistentFlags().Int64("epbs-reveal-time", 0, "Reveal time in ms relative to slot start (0 = auto: 5000ms @12s, scaled to slot time)") rootCmd.PersistentFlags().Uint64("epbs-bid-min", defaults.EPBS.BidMinAmount, "Minimum bid amount in gwei") rootCmd.PersistentFlags().Uint64("epbs-bid-increase", defaults.EPBS.BidIncrease, "Bid increase per subsequent bid in gwei") rootCmd.PersistentFlags().Int64("epbs-bid-interval", defaults.EPBS.BidInterval, "Interval between bids in ms (0 = single bid)") diff --git a/pkg/config/default.go b/pkg/config/default.go index a95abe78..a6dd5f14 100644 --- a/pkg/config/default.go +++ b/pkg/config/default.go @@ -48,15 +48,15 @@ const referenceSlotTimeMs = 12000 // PayloadBuildTime: 2100ms @12s (e.g. 1050ms @6s) // BidStartTime: -400ms @12s (e.g. -200ms @6s) // BidEndTime: -100ms @12s (e.g. -50ms @6s) -// RevealTime: 7000ms @12s (e.g. 3500ms @6s) +// RevealTime: 5000ms @12s (e.g. 2500ms @6s) // -// RevealTime (58.3% of the slot) is anchored to the Gloas/EIP-7732 deadlines: -// it sits after the attestation-aggregate deadline (AGGREGATE_DUE_BPS_GLOAS, -// 50%) — so the builder has seen enough attestation weight to know the block is -// the canonical head before committing to reveal — and comfortably before the -// hard payload deadline (PAYLOAD_DUE_BPS / PAYLOAD_ATTESTATION_DUE_BPS, 75%), -// after which the PTC votes the payload absent. The ~17% (2s @12s) margin lets -// the envelope gossip to PTC members before they attest at 75%. +// RevealTime (41.7% of the slot) is anchored to the Gloas/EIP-7732 deadlines: +// it sits after the attestation deadline (ATTESTATION_DUE_BPS_GLOAS, 25%) — so +// the builder has seen attestation weight on the block before committing to +// reveal — and comfortably before the hard payload deadline (PAYLOAD_DUE_BPS, +// 50% since consensus-specs#5414), after which the PTC votes the payload +// absent. The ~8% (1s @12s) margin lets the envelope gossip to PTC members +// before they attest at 75% (PAYLOAD_ATTESTATION_DUE_BPS). func (c *Config) ApplySlotDefaults(slotTimeMs int64) { if c.EPBS.BuildStartTime == 0 { c.EPBS.BuildStartTime = -2900 * slotTimeMs / referenceSlotTimeMs @@ -75,6 +75,6 @@ func (c *Config) ApplySlotDefaults(slotTimeMs int64) { } if c.EPBS.RevealTime == 0 { - c.EPBS.RevealTime = 7000 * slotTimeMs / referenceSlotTimeMs + c.EPBS.RevealTime = 5000 * slotTimeMs / referenceSlotTimeMs } } diff --git a/pkg/lifecycle/contract.go b/pkg/lifecycle/contract.go index e9d3320f..89d9ba67 100644 --- a/pkg/lifecycle/contract.go +++ b/pkg/lifecycle/contract.go @@ -42,8 +42,11 @@ const ( queueFeeHeadroom = 3 // builderWithdrawalPrefix is the withdrawal-credential prefix for builder - // deposits submitted via the EIP-8282 builder deposit contract. - builderWithdrawalPrefix = 0x00 + // deposits submitted via the EIP-8282 builder deposit contract. Must be + // BUILDER_WITHDRAWAL_PREFIX (0xB0): since consensus-specs#5439 (alpha.12), + // process_builder_deposit_request silently ignores deposits with any other + // prefix. + builderWithdrawalPrefix = 0xB0 // validatorWithdrawalPrefix is the withdrawal-credential prefix used for the // pre-Gloas early-onboarding deposit, which goes through the regular validator // deposit contract (builder-prefix / 0xB0 credentials). diff --git a/pkg/lifecycle/contract_test.go b/pkg/lifecycle/contract_test.go index 2576036f..b35f378c 100644 --- a/pkg/lifecycle/contract_test.go +++ b/pkg/lifecycle/contract_test.go @@ -94,7 +94,7 @@ func TestWithdrawalCredentials(t *testing.T) { creds [32]byte wantPrefix byte }{ - {"builder uses 0x00 prefix", BuilderWithdrawalCredentials(addr), 0x00}, + {"builder uses 0xB0 prefix", BuilderWithdrawalCredentials(addr), 0xB0}, {"validator uses 0xB0 prefix", ValidatorWithdrawalCredentials(addr), 0xB0}, } From dc35ae7832e914fe4381fdc781a2512b25b39f5d Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Wed, 8 Jul 2026 09:42:49 +0200 Subject: [PATCH 5/7] update stale early-deposit comment for 0xB0 predeploy prefix --- pkg/lifecycle/early_deposit.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/lifecycle/early_deposit.go b/pkg/lifecycle/early_deposit.go index 3dd86b99..f5f854ef 100644 --- a/pkg/lifecycle/early_deposit.go +++ b/pkg/lifecycle/early_deposit.go @@ -30,9 +30,9 @@ const depositContractABI = `[{"name":"deposit","type":"function","stateMutabilit `{"name":"deposit_data_root","type":"bytes32"}]}]` // EarlyDepositService submits a pre-Gloas builder onboarding deposit via the regular -// validator deposit contract. Unlike the post-fork builder deposit (EIP-8282 predeploy, -// 0x00 withdrawal prefix, DOMAIN_BUILDER_DEPOSIT), an early deposit uses 0xB0 withdrawal -// credentials and is signed with the validator deposit domain — i.e. it is an ordinary +// validator deposit contract. Both paths use 0xB0 withdrawal credentials, but unlike +// the post-fork builder deposit (EIP-8282 predeploy, DOMAIN_BUILDER_DEPOSIT), an early +// deposit is signed with the validator deposit domain — i.e. it is an ordinary // validator deposit that sits in the beacon state's pending_deposits queue and is // converted into a builder at the Gloas fork boundary. type EarlyDepositService struct { From 9d4b3cf6c5cd8137e590c97ca2559ef2f403cbb5 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Wed, 8 Jul 2026 09:49:21 +0200 Subject: [PATCH 6/7] fix stale comments from PR #126 review BuilderWithdrawalCredentials format comment still said 0x00, and the reveal-time margin sentence read as if the 1s margin were relative to the 75% PTC attestation deadline rather than the 50% payload deadline. --- pkg/config/default.go | 4 ++-- pkg/lifecycle/contract.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/config/default.go b/pkg/config/default.go index a6dd5f14..4e188c7f 100644 --- a/pkg/config/default.go +++ b/pkg/config/default.go @@ -55,8 +55,8 @@ const referenceSlotTimeMs = 12000 // the builder has seen attestation weight on the block before committing to // reveal — and comfortably before the hard payload deadline (PAYLOAD_DUE_BPS, // 50% since consensus-specs#5414), after which the PTC votes the payload -// absent. The ~8% (1s @12s) margin lets the envelope gossip to PTC members -// before they attest at 75% (PAYLOAD_ATTESTATION_DUE_BPS). +// absent. The ~8% (1s @12s) margin before that deadline lets the envelope +// gossip to PTC members, who attest at 75% (PAYLOAD_ATTESTATION_DUE_BPS). func (c *Config) ApplySlotDefaults(slotTimeMs int64) { if c.EPBS.BuildStartTime == 0 { c.EPBS.BuildStartTime = -2900 * slotTimeMs / referenceSlotTimeMs diff --git a/pkg/lifecycle/contract.go b/pkg/lifecycle/contract.go index 89d9ba67..cca87602 100644 --- a/pkg/lifecycle/contract.go +++ b/pkg/lifecycle/contract.go @@ -170,7 +170,7 @@ func buildWithdrawalCredentials(prefix byte, walletAddress common.Address) [32]b } // BuilderWithdrawalCredentials builds the withdrawal credentials for an EIP-8282 -// builder deposit. Format: 0x00 + 00...00 (11 zero bytes) + wallet_address (20 bytes). +// builder deposit. Format: 0xB0 + 00...00 (11 zero bytes) + wallet_address (20 bytes). func BuilderWithdrawalCredentials(walletAddress common.Address) [32]byte { return buildWithdrawalCredentials(builderWithdrawalPrefix, walletAddress) } From c68e599f267e92c9af2c129d7231b79353d73830 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Wed, 8 Jul 2026 10:06:16 +0200 Subject: [PATCH 7/7] bump go-eth2-client to v0.1.6 release --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 50771a51..1e021575 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/OffchainLabs/go-bitfield v0.0.0-20251031151322-f427d04d8506 github.com/ethereum/go-ethereum v1.17.4 github.com/ethpandaops/go-eth-engine-client v0.0.2-0.20260703151703-9761c6187b28 - github.com/ethpandaops/go-eth2-client v0.1.6-0.20260707104405-60250e59f0fd + github.com/ethpandaops/go-eth2-client v0.1.6 github.com/ethpandaops/service-authenticatoor v0.0.2 github.com/glebarez/go-sqlite v1.22.0 github.com/goccy/go-yaml v1.19.2 diff --git a/go.sum b/go.sum index 4cddd047..0641453d 100644 --- a/go.sum +++ b/go.sum @@ -68,8 +68,8 @@ github.com/ethereum/go-ethereum v1.17.4 h1:uA4q+qiLp7QImBsjdRbINu8iX6OEVmj4DPc5/ github.com/ethereum/go-ethereum v1.17.4/go.mod h1:qMdgwqqRAen+aT8P7KKQKi0Qt6RzG4cfejVAbCpJgqA= github.com/ethpandaops/go-eth-engine-client v0.0.2-0.20260703151703-9761c6187b28 h1:zPciPcZHSMqL3pJRooPVIVTVAo51PjDX6rYZ6gNJGlU= github.com/ethpandaops/go-eth-engine-client v0.0.2-0.20260703151703-9761c6187b28/go.mod h1:ggCXJgxLFNGpC+DkgNQkeTr3dXRQDb0+9niNmaJWAgM= -github.com/ethpandaops/go-eth2-client v0.1.6-0.20260707104405-60250e59f0fd h1:CTHdqspeZdF+d5RvROHAeuKPF3UlaTmzSrj+d5CXojQ= -github.com/ethpandaops/go-eth2-client v0.1.6-0.20260707104405-60250e59f0fd/go.mod h1:97Oq3omOQSGPPYgrbsOIIw2Pc4T5Ph21f8ZRyHJQBHU= +github.com/ethpandaops/go-eth2-client v0.1.6 h1:lG7Xz767YQQ+mN1ldzqJlj9Klg6zOElcemjXbCgJV5o= +github.com/ethpandaops/go-eth2-client v0.1.6/go.mod h1:97Oq3omOQSGPPYgrbsOIIw2Pc4T5Ph21f8ZRyHJQBHU= github.com/ethpandaops/service-authenticatoor v0.0.2 h1:0rqHA2Rw64+NG0HVGRfqVhJEkRZRzH3qhX2SkBr2u+w= github.com/ethpandaops/service-authenticatoor v0.0.2/go.mod h1:nIInMlq5O7YQDLVCL5gf0TeVAvVd9Q50k3sm3abTeG0= github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY=