Skip to content

Add stable megapool validator deposit UI#25

Open
saju01 wants to merge 3 commits into
dappnode:mainfrom
saju01:ui-megapool-deposits
Open

Add stable megapool validator deposit UI#25
saju01 wants to merge 3 commits into
dappnode:mainfrom
saju01:ui-megapool-deposits

Conversation

@saju01

@saju01 saju01 commented Jun 2, 2026

Copy link
Copy Markdown

Summary

Adds a follow-up stable Smartnode v1.20 UI path for creating Saturn/megapool validators from the Dappnode UI.

This stays on the current stable Smartnode release line (v1.20.3) and does not depend on dev/nightly builds.

Why

Smartnode v1.20 removed the old rocketpoold api ... command tree that the existing Dappnode API wrapper shells out to. Stable v1.20 now exposes the node HTTP API from the daemon on the configured Smartnode API port (8280).

That stable API includes the Saturn/megapool deposit flow under the node deposit API path, with responses returning validatorPubkeys for the new validators.

Changes

  • Migrates the Dappnode API wrapper from rocketpoold api ... shell calls to the stable daemon HTTP API (ROCKETPOOL_API_URL, default http://127.0.0.1:8280).
  • Preserves large wei integers as strings before JSON parsing to avoid JS precision loss.
  • Updates first-run password setup to use POST /api/wallet/set-password after the daemon HTTP API is listening.
  • Adds a Dappnode helper endpoint for the next megapool validator bond requirement.
  • Adds a UI creation flow for a stable 4 ETH Megapool / Saturn validator path.
  • Imports returned validator keys from validatorPubkeys after successful deposit.
  • Keeps legacy 8/16 minipool choices out of the actual create flow for now, because v1.20's node deposit path is now the megapool/Saturn path.

Verification

  • yarn --cwd build/api build
  • yarn --cwd build/ui build

React build passes with existing unrelated warnings in RewardsTab.tsx and Minipools.tsx.

Scope / follow-ups

This PR focuses on creating a new stable Saturn/megapool validator deposit from the UI. It intentionally does not add full UI management for reduce-bond, repay-debt, distribute, exit, or claim flows.

Safety note / requested validation

I’m confident this stays on the stable Smartnode v1.20.3 API surface, but because this changes the Dappnode wrapper’s transaction path and first-run password setup, I would not suggest merging it solely on static/build checks.

Before merge, I’d like a maintainer to validate on a Dappnode Hoodi/testnet install:

  1. first-run wallet password setup still works,
  2. the UI can fetch the next megapool validator bond requirement through :8280,
  3. can-deposit returns the expected result,
  4. a test deposit imports the returned validatorPubkeys into Web3Signer correctly.

PR #24 can still be reviewed/merged independently as the smaller stable-version bump and config-template fix. This PR is the larger UI/API compatibility follow-up.

saju01 and others added 3 commits May 31, 2026 14:55
- 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.
@saju01

saju01 commented Jun 2, 2026

Copy link
Copy Markdown
Author

Added an explicit safety/validation note to the PR body: this stays on stable Smartnode v1.20.3, but because it changes the Dappnode transaction path and first-run password setup, it should get a Hoodi/testnet Dappnode validation before merge. PR #24 remains the smaller independent stable bump.

@mgarciate

Copy link
Copy Markdown
Collaborator

Great job @saju01 . Please, create this PR on https://github.com/dappnode/DAppNodePackage-rocketpool-testnet

@saju01

saju01 commented Jun 2, 2026

Copy link
Copy Markdown
Author

Thanks @mgarciate — created the Hoodi/testnet PR here:

dappnode#154

I ported the same stable v1.20.3 / megapool UI+API work while preserving the testnet package identity (rocketpool-testnet.public.dappnode.eth, NETWORK=hoodi, Hoodi global envs, and web3signer-hoodi). I also added a small startup fix so the existing testnet NETWORK=hoodi env matches the Hoodi branch in rocketpool-start.sh.

Local checks passed there:

  • yarn --cwd build/api build
  • yarn --cwd build/ui build
  • bash -n build/rocketpool-start.sh

@saju01

saju01 commented Jun 24, 2026

Copy link
Copy Markdown
Author

Status update now that #28 (tropibot) is bumping the package to Smartnode v1.20.5:

This PR is independent of and complementary to the auto-bump. #28 only updates dappnode_package.json + docker-compose.yml (daemon version); it does not add the megapool deposit UI/API. This PR is the part that adds:

  • first-run wallet password setup
  • megapool next-validator-bond fetch via the internal Smartnode HTTP API (:8280)
  • can-deposit / deposit flow
  • validator key import into Web3Signer

Compatibility confirmed on v1.20.5: the wrapper maps to stable Smartnode HTTP routes (/api/node/can-deposit, /api/megapool/status, /api/wallet/*, etc.). v1.20.4 and v1.20.5 are client-update + bugfix releases with no Smartnode API route changes, so this work stays compatible on top of #28. Happy to rebase onto current main (post-#28) whenever you'd like. Closed the older v1.20.3 bump PR #24 as superseded.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants