test(gloas): add pre-fork builder onboarding test (0x03 -> builder)#195
Open
barnabasbusa wants to merge 6 commits into
Open
test(gloas): add pre-fork builder onboarding test (0x03 -> builder)#195barnabasbusa wants to merge 6 commits into
barnabasbusa wants to merge 6 commits into
Conversation
Isolates the onboard_builders_from_pending_deposits path: deposit builders via the standard validator deposit contract with 0x03 creds a few slots before GLOAS, then verify the fork dequeues the still-pending deposits into builders. Fails fast if started after the pre-fork window.
Drop the 'wait until SLOTS_PER_EPOCH/3 before the fork' gate; just deposit as soon as the test starts. Guard now only requires that GLOAS hasn't activated yet so the deposit can still be pending at the transition.
The post-fork onboard check used expectActive+failOnCheckMiss one slot after the fork. expectActive requires deposit_epoch < finalized_epoch, which can never hold for a deposit onboarded AT the fork, so it failed instantly. Make phase 2 an existence-only polling check (proves the 0x03->builder dequeue happened), and make the phase 3 active check poll instead of single-shot.
…uilder Depositing ASAP let the 0x03 deposit finalize and get drained into the validator registry as a regular validator before the fork, so the GLOAS onboarding (which only scans still-pending deposits, and skips pubkeys that are already validators) never converted it. Restore depositing ~1 epoch before the fork, within the unfinalized window, so it survives in state.pending_deposits until upgrade_to_gloas onboards it. Verified against consensus-specs v1.7.0-alpha.11 (process_pending_deposits finalized-slot gate; onboard_builders_from_pending_deposits; no min amount).
…as epoch Fills the front of the pending-deposit queue with junkCount (>16) regular 1 ETH deposits at epoch F-3, then a 0x03 builder deposit behind the wall. The boundary drain (16/epoch) can't reach the builder deposit, so it stays pending and is onboarded already-finalized (deposit_epoch=F-3 < finalized@fork), making it active in epoch F. Asserts active-in-epoch-F as the experiment.
…c+index Add builderMnemonic + builderKeyIndex config to both pre-fork playbooks so the 0x03 deposit can target an external builder's key (e.g. buildoor's), letting that builder bid on the onboarded builder. Defaults to a random mnemonic (unchanged standalone behaviour). In queuefill the builder uses a separate mnemonic from the junk wall to avoid index collisions.
🤖 qu0b-reviewerSummaryThe PR modifies the existing pre-fork builder onboarding playbook with corrected timing logic (deposit must land unfinalized at the fork) and adds a new queue-fill trick playbook that attempts to make a builder active in the very first GLOAS epoch. The timing calculations, configuration variables, indexing, and task wiring are all internally consistent and correctly use the IssuesNone. Suggestions
Reviewed @ |
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.
Stacked on #194.
Adds
playbooks/gloas-dev/builder-prefork-onboard.yaml, a focused regression test for the GLOAS pre-fork builder onboarding path (onboard_builders_from_pending_deposits).What it does
builderCountkeys via the standard validator deposit contract (0x00000000219ab540356cBB839Cbe05303d7705Fa) using 0x03 (builder) withdrawal credentials. These use the regularDOMAIN_DEPOSIT, so the ordinarygenerate_depositstask works unchanged.Notes
builder-lifecycle.yaml, which covers both onboarding paths end-to-end; this one isolates just the0x03 -> builderfork-dequeue case.assertoor validatepasses.