feat(ui): devnet deposit tooling - faucet, wallet-free submission, batching, builder top-ups, ENS - #845
feat(ui): devnet deposit tooling - faucet, wallet-free submission, batching, builder top-ups, ENS#845barnabasbusa wants to merge 3 commits into
Conversation
…tching, builder top-ups, ENS Devnet-focused overhaul of the submit deposit pages (validator + builder): Faucet: - frontend.faucet config (prefunded EL keys, amount, per-address cooldown) - POST /validators/deposits/faucet sends funds via a ready execution client with dynamic gas estimation (glamsterdam repricing: transfers to new accounts need ~207k gas, hardcoded 21000 mines but fails out-of-gas) - faucet buttons track the funding tx to confirmation and surface on-chain failures Wallet-free submission: - the deposit generator hands its mnemonic to the pages; without a connected wallet, deposits/batches/top-ups are signed locally with the derived account (m/44'/60'/0'/0/0) through the rpc proxy - proxy allowlist gains eth_getBlockByNumber, eth_sendRawTransaction, eth_getTransactionReceipt - mnemonic + full generator config cached in sessionStorage per mode ENS: - GET /ens/resolve (forward) and /ens/lookup (reverse) over the existing resolver; address inputs accept ENS names, credential cells display them - devnet run.sh resolves mainnet ENS (canonical registry pinned - remote networks otherwise inherit the local registry address) Generator modal: - builder-mode wording, per-mode defaults (0xB0/50 ETH vs 0x02/32 ETH), dynamic amount from live balance / count, 0x00/0x01 deposits capped at 32 ETH (reactive + generation safety net), override rows seeded from defaults with an effective-credentials preview Batching: - Submit All: one tx deploying a throwaway constructor-executing batcher (self-destructs, refunds leftover), per-position queue fee escalation for the EIP-8282 predeploy Top-ups: - builder page gains a Topup tab (builder registry search endpoints, zeroed-signature top-up calldata + queue fee); topup amounts hard-capped by the funding wallet balance, EB-room overage downgraded to a warning Misc: - all hardcoded gas limits in tx paths replaced with estimation - deposit source chooser split into wallet/file vs generator panels, hideable via frontend.disableDepositGenerator - shared SubmitShared/ module (tracked-tx lifecycle, status button, ENS input, banner, fee math, credential colors matching utils/format.go) - tx page: pending txs no longer render with the failed (red) badge
|
Companion config PR enabling these features on kurtosis devnets: ethpandaops/ethereum-package#1478 (depends on this PR - the config is forward-compatible and stays dormant until a dora image containing this change is used). |
SummaryLarge devnet-focused feature: a backend faucet (services/faucet.go + POST /validators/deposits/faucet), wallet-free deposit/top-up submission signed with a locally derived EL account via the RPC proxy (new allowlisted methods), ENS resolve/lookup endpoints, a reworked generator modal with session persistence, batch submission via a self-destructing deployer, and builder top-ups. The Go wiring, template/model plumbing and the frontend flows are consistent with existing patterns; the faucet has two robustness gaps worth a look, neither a merge blocker. Issues
Reviewed @ |
Summary
Devnet-focused overhaul of the submit deposit pages (validator + builder), making the full deposit lifecycle possible without any external tooling: generate a mnemonic in the browser, fund its wallet from a built-in faucet, and submit deposits / batches / top-ups signed locally - no wallet extension, no staking-deposit-cli, no separate faucet.
Features
Devnet faucet
frontend.faucetconfig: prefunded EL private keys, amount per request, per-address cooldownPOST /validators/deposits/faucetsends funds through a ready execution clientWallet-free submission
eth_getBlockByNumber,eth_sendRawTransaction,eth_getTransactionReceiptENS support
GET /ens/resolve(name→address) andGET /ens/lookup(address→name) over the existing resolver0xb0…name.ethrun.shresolves mainnet ENS (canonical registry pinned explicitly - remote networks otherwise inherit the local registry address)Generator modal
Batch submission
Top-ups
?ajax=load_builders|search_buildersendpoints query the builder registry only); top-ups send a zeroed signature (not verified for top-ups) + the live queue feeMisc
frontend.disableDepositGeneratorhides the generator for non-devnet deploymentsSubmitShared/module: tracked-tx lifecycle hook + status button (Submit → Signing → Pending w/ tx link → Submitted / Failed-on-chain + Retry), ENS input, local-wallet banner, batcher, fee math, credential colors matched toutils/format.gorun.sh: faucet prefunded with the ethereum-package dev keys, mainnet ENS, raised proxy rate limitsTest plan
Verified live on a glamsterdam-devnet-8 kurtosis enclave: faucet funding (incl. the out-of-gas root-cause analysis via
debug_traceTransaction), wallet-free single submits, a 2-deposit builder batch (mined, batcher self-destructed, leftover refunded), mainnet ENS resolution (bbusa.eth/potuz.eth), pending/confirmed tracking. Builder topup tab and validator-page batch are code-complete but not yet exercised on-chain.