Smartnode
The CLI package for Rocket Pool smart nodes.
Install / Use
/learn @rocket-pool/SmartnodeREADME
Rocket Pool - Smart Node Package
Rocket Pool is a next generation Ethereum Proof-of-Stake (PoS) infrastructure service designed to be highly decentralised, distributed, and compatible with Ethereum's new consensus protocol.
Running a Rocket Pool Smart Node allows you to stake on Ethereum with only 4 ETH. You can earn a higher return than you would outside the network by capturing up to an additional 14% commission on staked ETH as well as RPL rewards.
This repository contains the source code for:
- The Rocket Pool Smart Node client (CLI), which is used to manage a smart node either locally or remotely (over SSH)
- The Rocket Pool Smart Node service, which provides an API for client communication and performs background node tasks
The Smart Node service is designed to be run as part of a Docker stack and generally does not need to be installed manually. See the Rocket Pool dockerhub page for a complete list of Docker images.
Installation
See the Smart Node Installer repository for supported platforms and installation instructions.
Development
A Makefile is included for building, testing, and linting.
makeormake defaultwill build rocketpool-cli, rocketpool-daemon, treegen, and run the linter.- build/rocketpool-cli and build/rocketpool-daemon will be symlinked to the version and architecture specific binaries in build/
make allwill build rocketpool-cli, rocketpool-daemon, treegen, and run the linter.- symlinks will be created for the first 3 binaries in build/
make releasewill build all architecture specific binaries as well as docker images and manifests- It will tag docker images as latest as well as the version in
shared/version.txt - It will put cli and native mode binaries in build/<version>
- It will tag docker images as latest as well as the version in
make build/rocketpool-clibuilds just the cli- The build is done in docker, unless you run
make NO_DOCKER=true \<cmd\>
- The build is done in docker, unless you run
make build/rocketpool-daemonbuilds just the daemon- The build is done in docker, unless you run
make NO_DOCKER=true \<cmd\>
- The build is done in docker, unless you run
make build/treegenbuilds just the treegen stand-alone binary.- The build is done in docker, unless you run
make NO_DOCKER=true \<cmd\>
- The build is done in docker, unless you run
make dockerbuilds the rocketpool/smartnode containers for all supported architectures and saves them in build/<version>/dockermake docker-pushbuilds, loads, pushes, creates a multi-arch manifest, and pushes the smartnode containers and manifest.make docker-latestdoes the same as docker-push, but tags latest which is also pushed.make lintruns the linter.make testruns all unit tests.make cleandeletes any binaries. It does not clear your go caches. It does not clean up old docker images.
CLI Commands
The following commands are available via the Smart Node client:
COMMANDS:
-
auction, a - Manage Rocket Pool RPL auctions
rocketpool auction status, s- Get RPL auction statusrocketpool auction lots, l- Get RPL lots for auctionrocketpool auction create-lot, t- Create a new lotrocketpool auction bid-lot, b- Bid on a lotrocketpool auction claim-lot, c- Claim RPL from a lotrocketpool auction recover-lot, r- Recover unclaimed RPL from a lot (returning it to the auction contract)
-
faucet, f - Access the legacy RPL faucet
rocketpool faucet status, s-rocketpool faucet withdraw-rpl, w- Withdraw legacy RPL from the faucet
-
minipool, m - Manage the node's minipools
rocketpool minipool status, s- Get a list of the node's minipoolsrocketpool minipool stake, t- Stake a minipool after the scrub check, moving it from prelaunch to staking.rocketpool minipool set-withdrawal-creds, swc- Convert the withdrawal credentials for a migrated solo validator from the old 0x00 value to the minipool address. Required to complete the migration process.rocketpool minipool import-key, ik- Import the externally-derived key for a minipool that was previously a solo validator, so the Smart Node's VC manages it instead of your externally-managed VC.rocketpool minipool promote, p- Promote a vacant minipool after the scrub check, completing a solo validator migration.rocketpool minipool refund, r- Refund ETH belonging to the node from minipoolsrocketpool minipool distribute-balance, d- Distribute a minipool's ETH balance between your withdrawal address and the rETH holders.rocketpool minipool exit, e- Exit staking minipools from the beacon chainrocketpool minipool close, c- Withdraw any remaining balance from a minipool and close itrocketpool minipool delegate-upgrade, u- Upgrade a minipool's delegate contract to the latest version
-
claims, l - View and claim multiple rewards and node credits
rocketpool claims claim-all, c- Claim multiple rewards and node creditsrocketpool claims status, s- View multiple rewards and node credits
-
megapool, g - Manage the node's megapool
rocketpool megapool deposit, d- Creates one or more megapool validatorsrocketpool megapool status, s- Get the megapool statusrocketpool megapool validators, v- Get details about all megapool validatorsrocketpool megapool repay-debt, r- Repay any debt the node may haverocketpool megapool claim, c- Claim any megapool rewards that were distributed but not yet claimedrocketpool megapool stake, k- Stake a megapool validatorrocketpool megapool exit-queue, x- Exit the megapool queuerocketpool megapool exit-validator, t- Request to exit a megapool validatorrocketpool megapool notify-validator-exit, n- Notify that a validator exit is in progressrocketpool megapool notify-final-balance, f- Notify that a validator exit has completed and the final balance has been withdrawnrocketpool megapool distribute, b- Distribute any accrued execution layer rewards sent to this megapoolrocketpool megapool set-use-latest-delegate, l- Enable or disable the "use-latest-delegate" flag on the node's megapool. If enabled, the megapool will ignore its current delegate contract and always use whatever the latest delegate isrocketpool megapool delegate-upgrade, u- Upgrade a megapool's delegate contract to the latest versionrocketpool megapool dissolve-validator, i- Dissolve a megapool validator
-
network, e - Manage Rocket Pool network parameters
rocketpool network stats, s- Get stats about the Rocket Pool network and its tokensrocketpool network timezone-map, t- Shows a table of the timezones that node operators belong torocketpool network node-fee, f- Get the current network node commission raterocketpool network rpl-price, p- Get the current network RPL price in ETHrocketpool network generate-rewards-tree, g- Generate and save the rewards tree file for the provided interval. Note that this is an asynchronous process, so it will return before the file is generated. You will need to userocketpool service logs apito follow its progress.rocketpool network dao-proposals, d- Get the currently active DAO proposals
-
node, n - Manage the node
rocketpool node status, s- Get the node's statusrocketpool node sync, y- Get the sync progress of the eth1 and eth2 clientsrocketpool node register, r- Register the node with Rocket Poolrocketpool node rewards, e- Get the time and your expected RPL rewards of the next checkpointrocketpool node set-withdrawal-address, w- Set the node's primary withdrawal address, which will receive all ETH rewards (and RPL if the RPL withdrawal address is not set)rocketpool node confirm-withdrawal-address, f- Confirm the node's pending withdrawal address if it has been set back to the node's address itselfrocketpool node set-rpl-withdrawal-address, srwa- Set the node's RPL withdrawal address, which will receive all RPL rewards and staked RPL withdrawalsrocketpool node confirm-rpl-withdrawal-address, crwa- Confirm the node's pending rpl withdrawal address if it has been set back to the node's address itselfrocketpool node allow-rpl-locking, arl- Allow the node to lock RPL when creating governance proposals/challenges=rocketpool node deny-rpl-locking, drl- Do not allow the node to lock RPL when creating governance proposals/challengesrocketpool node set-timezone, t- Set the node's timezone locationrocketpool node swap-rpl, p- Swap old RPL for new RPLrocketpool node stake-rpl, k- Stake RPL against the noderocketpool node add-address-to-stake-rpl-whitelist, asw- Adds an address to your node's RPL staking whitelist, so it can stake RPL on behalf of your node.rocketpool node remove-address-from-stake-rpl-whitelist, rsw- Removes an address from your node's RPL staking whitelist, so it can no longer stake RPL on behalf of your node.rocketpool node claim-rewards, c- Claim available RPL and ETH rewards for any checkpoint you haven't claimed yetrocketpool node withdraw-rpl, i- Withdraw RPL staked against the noderocketpool node withdraw-eth, h- Withdraw ETH staked on behalf of the noderocketpool node send, n- Send ETH or tokens from the node account to an address. ENS names supported. <token> can be 'rpl', 'eth', 'fsrpl' (for the old RPL v1 token), 'reth', or the address of an arbitrary token you want to send (including the 0x prefix).rocketpool node initialize-fee-distributor, z- Create the fee distributor contract for your node, so you can withdraw priority fees and MEV rewards after the merge- `rocketpool node distribut
