Add stable megapool validator deposit UI - #154
Conversation
|
@saju01 Just curious, have you tested the UI + API against real pools yet, even if it was outside of DAppNode? |
|
Not yet against real pools. So far I’ve validated this at the code/build level:
But I have not yet run the full UI + API flow against a live Rocket Pool Hoodi pool / actual deposit path. That’s why I marked this PR as needing Hoodi/DAppNode validation before merge. The key flows I’d want to test are:
Happy to adjust based on what you see in testnet validation. |
|
Status update — keeping this aligned with the new auto-bump cadence. The mainnet sibling's older v1.20.3 bump (#24) was closed as superseded by tropibot's v1.20.5 bump; the testnet auto-bump is #158. This deposit-UI PR is independent of those version bumps (they only touch the daemon version, not the UI/API). I re-verified compatibility: the wrapper calls stable Smartnode HTTP routes at Still flagged as needing a live Hoodi/DAppNode validation pass before merge (the build/syntax checks pass; the real-pool deposit path is what's untested). Happy to rebase onto current |
|
Update on the "have you tested the UI + API against real pools?" question — yes, now validated end-to-end on a live Hoodi pool, not just builds. I ran the v1.20.x daemon in external-client mode (public Hoodi EL RPC + Beacon API) and drove this PR's flow against real Rocket Pool contracts: First-run + deposit (this PR's flow):
One bug found while validating — worth fixing before merge: Also opened #159 as a stacked follow-up adding the exit + claim/withdraw lifecycle (exit-queue / exit-validator / notify-exit / distribute / claim-refund), validated against the same live megapool — so there's the option of deposit-only here, or the full lifecycle. |
|
Pushed the fix for the |
|
Six weeks since the last update here, so a status ping — and this branch now conflicts with Recapping where it was left, since the thread is long:
Before I rebase: is this still the direction you want for megapool deposits? If the UI is being handled differently upstream, or the timing isn't right, I'd rather hear that than rebase and keep the PR open on a design that's moved on. Equally happy to close it if it's no longer useful. If it is still wanted, say the word and I'll get it rebased and re-verified against current |
- UPSTREAM_VERSION / upstreamVersion v1.19.3 -> v1.20.3 (latest stable
Smartnode release, 2026-05-21); package version 0.1.8 -> 0.1.9.
- Fix auto_check.yml so future Smartnode releases auto-PR:
- push trigger watched 'master' but default branch is 'main'
- no permissions block -> read-only GITHUB_TOKEN could not open the
bump branch/PR (dappnodesdk bump-upstream needs write)
- bumped actions/checkout v2 -> v4; added workflow_dispatch
- Add the v1.20.x native-mode Smartnode HTTP API port default (8280) to the generated settings template without exposing it publicly.\n- Add Lodestar's QUIC P2P port default (8001), matching the existing Lighthouse/Prysm entries and upstream v1.20.3 config.\n- Add the explicit IPv6 default (disabled) and align root.version with the bundled Smartnode v1.20.3.
The settings template rendered network: ${NETWORK} (= hoodi), but the
Smartnode daemon only accepts mainnet|testnet|devnet. "testnet" is Hoodi
internally (chainId 560048, RocketStorage 0x594Fb75D...). With network: hoodi
the daemon cannot resolve the storage address and every on-chain call fails
with "The Rocket Pool storage contract was not found".
Introduce SMARTNODE_NETWORK (mainnet -> mainnet, hoodi/testnet -> testnet),
pass it through envsubst, and use it for the template's network: field. The
dappnode package keeps using NETWORK=hoodi for its own identity (web3signer-hoodi,
globals, urls); only the smartnode setting is remapped.
Verified live on Hoodi: with network: testnet, node register + 4-ETH megapool
deposit succeed and all megapool routes resolve.
065edbf to
c185ae0
Compare
|
Rebased onto current Conflict resolution: the only conflict was What remains is only the megapool deposit work: UI components, API routes, the startup script's Hoodi handling, and the settings template. Re-verified after the rebase (not assumed):
The live Hoodi validation described earlier in this thread still applies — the rebase touched only the workflow file, so the deposit flow itself is unchanged. Ready for review whenever you have a moment. |
Summary
Port of the stable Smartnode v1.20.3 + Saturn/megapool validator deposit UI/API work to the Hoodi testnet package, per maintainer request on mainnet PR #25.
This keeps the testnet package identity intact:
rocketpool-testnet.public.dappnode.ethhoodiEXECUTION_CLIENT_HOODI,CONSENSUS_CLIENT_HOODIweb3signer-hoodi.dnp.dappnode.ethWhat changed
v1.20.2to stablev1.20.3.8280.rocketpoold api ...commands and toward the stable daemon HTTP API athttp://127.0.0.1:8280./api/v1/megapool/next-validator-bondso the UI asks Smartnode for the next validator bond requirement instead of hardcoding4 ETH.NETWORK=hoodienv inrocketpool-start.sh(testnetstill works too).Validation run locally
yarn --cwd build/api build✅yarn --cwd build/ui build✅bash -n build/rocketpool-start.sh✅dappnode_package.jsonparses as valid JSON ✅UI build warnings are existing eslint warnings in
RewardsTab.tsx/Minipools.tsx; build completes.Requested Hoodi validation before merge
Because this changes the Dappnode transaction path and first-run password setup, please validate on a Dappnode Hoodi/testnet install before merging:
:8280,can-depositreturns the expected result,validatorPubkeysare imported into Web3Signer correctly.Related mainnet/stable PR: dappnode#25