Releases: rocket-pool/smartnode
v2.0.0-b4
warning: NOT FOR MAINNET!
This is Smart Node v2.0.0 Beta 4. It contains several fixes reported by beta testers from Beta 3, and a few notable (but transparent to the user) changes.
For installation or update instructions, please see the v2 installation guide.
Once you finish updating, remember to run rocketpool service config
or rocketpool service start
for the changes to take effect!
Changes
CLI
v2.0.0-b3
warning: NOT FOR MAINNET!
This is Smart Node v2.0.0 Beta 3. It contains several fixes reported by beta testers from Beta 2, and a few notable (but transparent to the user) changes.
For installation or update instructions, please see the v2 installation guide.
Once you finish updating, remember to run rocketpool service config
or rocketpool service start
for the changes to take effect!
Changes
CLI
v2.0.0 Beta 2 (NOT FOR MAINNET!)
This is Smart Node v2.0.0 Beta 2. It contains several fixes reported by beta testers from Beta 1, and a few notable (but transparent to the user) changes.
For installation or update instructions, please see the v2 installation guide.
Once you finish updating, remember to run rocketpool service config
or rocketpool service start
for the changes to take effect!
Changes
CLI
- Fixed voting on Protocol DAO proposals.
- Proposing PDAO rewards percentages now uses the correct service route.
- Fixed the
node rewards
command. - Fixed the
pdao proposals list
command. - The slippage check during
node deposit
now properly checks if the min is the same as the max and ignores the prompt. - Multiselect commands (such as
minipool distribute
) now support ranges as well as comma-separated options - e.g., things like1-3,4,5,6-10
will now work. Embrace your inner printer page dialog! wallet export
now prints the wallet key as a hex string.- The
--local-script
flag has been added back toservice install
. - Fixed some typos.
Service
- The node API no longer uses a Unix socket; it's been moved to a network socket (bound to
localhost
, default port8080
) as part of macOS support. minipool exit
now properly respects your minipool choice.- Added the archive mode setting for Geth.
- Added the
service/get-config
route to the daemon to dynamically get the Smart Node's config from the API.
v2 Migration guide
- Added a note about updating your alias if you had one set from Smart Node v1.
Known Issues
- v2 is currently not working on macOS because of some fundamental differences between it and Linux.
- Reth doesn't work on
arm64
machines that were built with particular kernels; see https://paradigmxyz.github.io/reth/installation/build-for-arm-devices.html for more info. This isn't a v2 issue, it's a Reth issue (but is worth listing for now).
v2.0.0 Beta 1 (NOT FOR MAINNET!)
After months of development, Rocket Pool is proud to release the first public beta of Smart Node v2.0.
Smart Node v2 is a complete rewrite of the Smart Node that aims to improve existing functionality, add new functionality, and make it dramatically easier to maintain. It incorporates modern tooling and techniques, years of lessons learned from working with the original Smart Node in the wild, and many suggestions provided by users that made sense but just weren't practical to build into v1.
Overview of What's New
The following is a list of what's changed from v1 so far, in no particular order:
Installation
NOTE: for actual installation instructions, please see the v2 installation guide.
- The Smart Node now comes in a
.deb
package, so users running Debian or Debian-derivative distributions can now install it viasudo apt install rocketpool
and update it viasudo apt update && sudo apt dist-upgrade
once the Rocket Pool repository is set up.- Packages for other distributions, such as RHEL or Fedora, will be introduced at a later date.
- For now, users not on Debian-based systems can install via the traditional
rocketpool service install
command. It will still pull the necessary files from GitHub as it did before.
- Installation no longer puts all core system files into your
~/.rocketpool
directory. System files (such as Docker compose templates and execution scripts) are now put into/usr/share/rocketpool
. The CLI binary is now installed to/usr/bin/rocketpool
.- Runtime files, such as your Docker compose overrides and logging, are still put into
~/.rocketpool
by default.
- Runtime files, such as your Docker compose overrides and logging, are still put into
- Installation via the CLI can optionally now be done with local install scripts and packages on your filesystem instead of needing to reach out to GitHub. This is helpful in places where GitHub can't be accessed.
- (For developers) The old
smartnode-install
repository has been migrated into thesmartnode
repository.
Daemon (Node Container / Service)
- The
api
,node
, andwatchtower
Docker containers have now all been consolidated into onenode
container. - The daemon now uses Multicall for all of its Execution client reads, batching state reads together into as few requests as possible. This significantly reduces the overhead (both CPU-wise and time-wise) on large operations that required many blockchain reads, such as
minipool status
or the new on-chain Protocol DAO voting system. - You can now run the node in passwordless mode, where the password for your node wallet is not saved to disk. This way, if someone steals your node, they will not have access to your node wallet. (They can still slash your validators, though).
- When using passwordless mode, you'll need to provide the password via the CLI any time you restart the daemon. It will be preserved in memory but not on disk.
- You can now enter masquerade mode, where your node assumes an arbitrary address that you specify. For all intents and purposes, your API, node, and watchtower loops will proceed to act like the specified node instead. As you don't have the private key for that address, your node will be in read-only mode while masquerading and won't be able to submit transactions or recover validator keys. You can end the masquerade and return to your normal (wallet) address at any time.
- This is particularly useful for support and debugging.
- The daemon now supports graceful shutdowns of the API server, node, and watchtower task loops rather than terminating them immediately upon closing.
API
- The daemon API has been overhauled. It is no longer a sequence of terminal commands executed by the CLI via
docker exec
. It has been replaced with a true HTTP-based API endpoint.- The API endpoint is hosted on a Unix socket and is accessible by processes running as the user on the node's local filesystem (e.g., the new Smart Node CLI).
- It is not (currently) accessible via a TCP port, so it can't be reached via browser; this is a feature that will be coming in the future but requires the addition of an authentication system first.
- Once that is in place, the Smart Node will be open to things such as WebUIs to replace (or at least supplement) the CLI.
- The API is now a persistent process; instead of starting and stopping with every CLI command, as in v1, it will now start with the
rocketpool_node
daemon and maintain state until the daemon stops. This means it doesn't need to reacquire all of the network contracts and parse their ABIs with every call; it only does this once at startup, which provides a significant speedup over v1.
Logging
- The CLI and daemon both now have improved logging systems.
- The CLI's global
--debug
flag will now print debugging information to the terminal as the relevant command is being executed. - The daemon now logs its activities to three separate files:
api.log
for API requests and responses, such as HTTP requests submitted by the CLI (completely new, v1 unfortunately does not have an analog for this)tasks.log
which records logs from the node's task loop (used to be the standard output of therocketpool_node
container)watchtower.log
which records logs from the watchtower's task loop (used to be the standard output of therocketpool_watchtower
container)
- The daemon's logs can be written in logfmt or JSON. They support proper, customizable log rotation and four log levels ranging from
DEBUG
toERROR
.
- The CLI's global
Transactions
- In v1, commands that provide multiple selectable options (such as distributing minipool balances) would only allow you to select one option from the list, or "all". In v2, you are now able to select an arbitrary combination of options if you want to trigger the function on some, but not all, of the options.
- In v1, running a command on multiple options would submit the transactions in sequence; the first would submit, then it would wait for it to complete before submitting the next one, and so on. In v2, the Smart Node now submits all transactions at the same time and waits for them in parallel once they've been submitted.
- This will make multi-tx operations much, much faster and less sensitive to gas fluctuations, as multiple TXs can now be included in the same block together.
- This also fixes issues where the selected gas price was only applied to the first transaction in v1. In v2, the selected gas price is applied to all transactions.
CLI Command Changes
- Use
rocketpool -pt ...
to print raw transaction info (such as calldata) without submitting if you want to use the calldata for your own activities. - Use
rocketpool -st ...
to sign all transactions and print them without submitting them to the network. This is useful for things like offline wallets or creating custom transaction bundles for services like Flashbots Protect. - Use
rocketpool --debug ...
to print debug info about the command being run, such as API back-and-forth traffic or other variables. - When using the
rocketpool service config
TUI to modify the Smart Node's configuration, you can now include the-u
file to intentionally restore all of the settings that will be replaced during a Smart Node upgrade, even if you're not upgrading.- This is useful if you manually tweaked container tags and just want to get the "recommended" tags back.
- This is also useful for development testing where you want to emulate an upgrade when you install a new build, even if the new version is the same as the old version.
rocketpool node sync
has been moved torocketpool service sync
to more accurately reflect its nature.rocketpool node sign-message
androcketpool node send-message
have been moved torocketpool wallet sign-message
androcketpool wallet send-message
for the same reason.- Use
rocketpool wallet delete-password
to enter passwordless mode. - Use
rocketpool wallet set-password
to provide the password to the daemon. You will be prompted for whether or not you want to save it to disk. - Use
rocketpool wallet masquerade
to set your node's address to someone else. - Use
rocketpool wallet restore-address
to end masquerading and set your node's address to your wallet address. - Use
rocketpool service node-logs
withapi
,tasks
, and/orwatchtower
to view the new logs respectively.
Installation
Please see the v2 installation guide for installation instructions for Docker and Hybrid mode or for Native mode depending on your setup.
Feedback
To prevent mixing v2 feedback with the existing v1 Smart Node, we request that you provide feedback in our Discord server, in the #beta-feedback thread.
v2.0.0-olddev
This is a development prototype for Smart Node v2.0.0 using the OLD devnet.
v2.0.0 Development Prototype
This is a development prototype for Smart Node v2.0.0.
v1.0.0-rc2
RC2 for Prater
This is Release Candidate 2 of the Smartnode stack, which is targeting the testnet on Prater.
New CLI Functions
rocketpool node claim-rpl
: lets you manually claim RPL rewards after a checkpoint.- The new
--nonce
global flag can be used to manually set the nonce of a transaction, which can be useful for overwriting an existing "stuck" transaction with a gas price that's too low.
Config Updates
- Added support for the Pocket Network as a decentralized ETH1 light client option.
- Added the
rplClaimGasThreshold
setting, which lets you set a gas price limit on automatic RPL reward claims - if the network price is above this limit, automatic claims will not go through. Setting it to 0 will disable auto-claims entirely.
Misc Updates
- Changed the
smartnode
andsmartnode-pow-proxy
Docker images to use Alpine instead of Ubuntu as a base. This greatly lowers their size, and offers a better security footprint since Alpine provides a smaller set of capabilities for attackers to use. - Added support for an improved total effective network stake calculation to make RPL rewards more accurate.
- Fixed timezone validation during node registration.