glamsterdam devnet 6#746
Open
pk910 wants to merge 4 commits into
Open
Conversation
…ed execution requests tab (slot details)
qu0b
approved these changes
Jun 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Glamsterdam devnet-6 readiness: decoupled builder deposits & exits (EIP-8282)
Summary
Glamsterdam devnet-6 decouples builder deposits and exits from validator
deposits and voluntary exits. Builder onboarding and offboarding now flow through
two dedicated EL system contracts and two new execution-request types, instead of
piggybacking on the regular deposit contract (0x03 credentials) and voluntary
exits.
This PR makes Dora ready for that change end-to-end: the consensus state
transition, EL contract indexing, database schema, and the web UI all understand
the new request types.
Spec references
go-eth2-clientbumped tov0.1.4-0.20260617135310-2e8b958(go-eth2-client PR #30) — adds
gloas.BuilderDepositRequest,gloas.BuilderExitRequest, and a unifiedall.ExecutionRequestscarryingBuilderDeposits/BuilderExits.Behaviour changes for Gloas
process_builder_deposit_request(registers a new builder if the proof-of-possessionis valid under the new
DOMAIN_BUILDER_DEPOSIT, otherwise tops up the existing builder).process_builder_exit_request(source-address authenticated, requires an activebuilder with no pending withdrawals, then initiates the builder exit).
deposit contract is no longer diverted to the builder registry — it is queued as an
ordinary validator pending deposit (the pre-fork 0x03 route was an onboarding hack
only).
branch is gone from both the state transition and the UI.
New system contracts
0x0000884d2AA32eAa155F59A2f24eFa73D90082820x000014574A74c805590AFF9499fc7A690f008282Defaults live in
clients/execution/chainstate.go; they can be overridden via thenode's
eth_configsystem-contract map (BUILDER_DEPOSIT_REQUEST_PREDEPLOY_ADDRESS/
BUILDER_EXIT_REQUEST_PREDEPLOY_ADDRESS). New config knobexecutionapi.gloasDeployBlockcontrols where the contract log crawl starts.What changed
State transition (
indexer/beacon/statetransition/)applyExecutionRequestsnow processesbuilder_depositsthenbuilder_exits(after consolidations), matching the spec
for_opsorder inapply_parent_execution_payload.processBuilderDepositRequest,processBuilderExitRequest,isActiveBuilder,getPendingBalanceToWithdrawForBuilder,initiateBuilderExit.processDepositRequest(now a plain validator queue).depositsig.BuilderDomainimplementscompute_domain(DOMAIN_BUILDER_DEPOSIT).EL contract indexers (
indexer/execution/system_contracts/)builder_deposit_indexer.goandbuilder_exit_indexer.go, modeled on thewithdrawal/consolidation indexers (contract crawler + dequeue-block tx matcher),
registered in
services/chainservice.go.pubkey(48) ++ wc(32) ++ amount(8) ++ signature(96)(no sender prefix; tx sender taken from the tx); exit =
sender(20) ++ pubkey(48).Database (
db/, migration20260617140000_builder-requests.sql)consolidations:
builder_deposits/builder_deposit_request_txs,builder_exits/
builder_exit_request_txs, with CRUD, filters, and dbtypes.Indexing / aggregation (
indexer/beacon/writedb.go)(parent-payload) execution requests and persisted.
toward the combined exit count in both per-slot and per-epoch aggregations.
services/chainservice_deposits.go): removed the now-stalebuilder-deposit exceptions. The previous logic assumed post-Gloas 0x03 deposits were
diverted out of the pending-deposit queue (leaving index gaps to skip and skipping them as
queue anchors). Under EIP-8282 a 0x03 deposit via the regular contract enters the queue
like any validator deposit, and real builder deposits never appear in the regular deposit
stream — so the EL deposit index sequence is contiguous with the queue again. Reverted to a
clean contiguous backward-count; added a table-driven regression test.
Web UI
regrouped), Builder Deposits (
/builders/deposits), Builder Exits(
/builders/exits). The list pages merge unfinalized (cache) + finalized (DB) dataand pair each request with its matching EL transaction.
Execution Requests tab that renders one table per non-empty type (deposit /
withdrawal / consolidation / builder deposit / builder exit), skipping empty types.
The header notes the requests come from the parent payload (EIP-7732).
voluntary-exits page.
Validation
go build ./...,go vet ./..., andgolangci-lint run --new-from-rev=origin/masterare clean.
are queryable; templates parse without errors.
To verify on devnet-6
cmd/statetransition-testagainst devnet-6 — theauthoritative correctness check for the new request processing.
7002/7251 system contracts; confirm against the deployed builder deposit contract.
addresses above if the node serves different
eth_configkeys.