Rocket Pool's next major update, titled Redstone, has been released for beta testing on the Ropsten and Holesky test networks. This page describes the major changes that Redstone brings, including updates to both the Smartnode stack and to the Rocket Pool protocol in general.
Please read through this page thoroughly to understand all of the differences between the previous version of Rocket Pool and Redstone.
For detailed information on how to prepare your node for the upgrade and what to do after the upgrade, please look at the following guides:
Ropsten (and shortly, Holesky) have successfully undergone The Merge of the Execution and Consensus Layers. It no longer uses Proof-of-Work; instead, validators on Ropsten are now responsible for creating and proposing blocks on both chains. While this comes with some exciting financial benefits (which will be discussed later), it also comes with some important changes to the way validators operate.
Below is a brief summary of the changes to client behavior as part of The Merge:
Your Execution client now uses three API ports:
Execution clients now require a Consensus client to function, and Consensus clients now require an Execution client to function.
One Execution client must be linked to one, and only one, Consensus client (and vice versa).
Full execution clients are required.
As validators are now responsible for creating blocks, that means they receive the priority fees (also known as tips) attached to each transaction. These fees are paid in ETH, and they are provided directly to you every time one of your minipool validators proposes a block. Unlike the ETH locked on the Beacon Chain, you don't have to wait for withdrawals to access your priority fees! They are simply awarded to you as part of the block proposal process.
In order to know where to send the fees to, your Validator Client requires an extra parameter known as the fee recipient
.
This is the address on the Execution Layer (ETH1) that all of the priority fees earned by your node during block proposals will be sent to.
Rocket Pool is designed to fairly distribute these rewards, the same way it fairly distributes your Beacon chain rewards: half of any priority fees your minipool validators earn will go to you (plus the average commission of all of your minipools), and the other half will go to the pool stakers (minus your average commission).
To that end, the Smartnode will automatically set your Validator Client's fee recipient
to a special address known as your node's fee distributor.
Your fee distributor is a unique contract on the Execution Layer that's specific to your node.
It will hold all of the priority fees you've earned over time, and it contains the logic required to fairly split and distribute them.
This distribution process is controlled by you (the node operator), and can be done whenever you please.
It does not have a time limit.
The address for your node's fee distributor is deterministically based on your node address. That means it is known ahead of time, before the fee distributor is even created. The Smartnode will use this address as your fee recipient.
::: tip NOTE By default, your fee recipient will be set to the rETH address when you install Smartnode v1.5.0 (if the Redstone contract updates haven't been deployed yet). The Smartnode will automatically update this to your node's fee distributor address once the Redstone update has been deployed.
One exception to this rule is if you are opted into the Smoothing Pool - see the section at the end of this page for more information on it.
New Rocket Pool nodes will automatically initialize their node's distributor contract upon registration. Existing nodes will need to do this process manually. This only needs to be run once.
One interesting ramification of this is that your distributor's address may start accruing a balance before you've initialized your node distributor contract. This is okay, because your distributor will gain access to all of this existing balance as soon as you initialize it.
You can view your fee distributor's balance as part of:
The output will look like this:
{ style="display: block; margin: 0 auto" }
To initialize your node's distributor, simply run this new command:
After the Redstone update, you must call this function before you can create any new minipools with rocketpool node deposit
.
When your distributor has been initialized, you can claim and distribute its entire balance using the following command:
This will send your share of the rewards to your withdrawal address.
In addition to the Execution and Consensus client changes and the new priority fees, the Rocket Pool protocol itself has undergone some important changes you should be aware of.
One of the most significant changes introduced with the Redstone update is the new rewards system. This is a complete overhaul of the way node operators receive their RPL rewards (and ETH from the Smoothing Pool - discussed later).
The old rewards system had the following drawbacks:
The new claims system solves all of these problems.
At every interval, the Oracle DAO will collectively create a true snapshot of the state of the node operators in the Rocket Pool network, including all of their effective stake amounts. This information is compiled into a Merkle Tree - an extremely efficient way to make all of the details available to smart contracts. The Merkle Tree is built into a JSON file and hosted on the InterPlanetary File System (IPFS), and the root of the Merkle Tree is submitted to the contracts.
This new system has the following features:
When your node detects a new rewards checkpoint, it will automatically download the JSON file for that interval. You can then review your rewards using the following command:
As intervals go by and you accumulate rewards, the output will look like this:
{ style="display: block; margin: 0 auto" }
Here you can quickly see how many rewards you've earned at each interval, and can decide which ones you want to claim. Note that Ropsten's interval time is set to 1 day to facilitate testing.
You can also specify an amount you want to restake during this claim:
{ style="display: block; margin: 0 auto" }
This will let you compound your RPL rewards in one transaction, using substantially less gas than you currently need to use today.
If you prefer to build the rewards checkpoint manually instead of downloading the one created by the Oracle DAO, you can change this setting from Download
to Generate
in the TUI:
{ style="display: block; margin: 0 auto" }
As the tip implies, you will need access to an archive node to do this.
If your local Execution client is not an archive node, you can specify a separate one (such as Infura or Alchemy) in the Archive-Mode EC URL
box below it.
This URL will only be used when generating Merkle trees; it will not be used for validation duties.
If you are below 10% RPL collateral at the time of the snapshot, you will not be eligible for rewards for that snapshot. Unlike the current system, where you can simply "top off" before you claim in order to become eligible again, this will be locked in that snapshot forever and you will never receive rewards for that period. You must be above 10% collateral at the time of a snapshot in order to receive rewards for that period.
One final exciting new feature of the Redstone update is the Smoothing Pool. The Smoothing Pool is an opt-in feature that will collectively pool the priority fees of every member opted into it. During a rewards checkpoint, the total ETH balance of the pool is divided into a pool staker portion and a node operator portion. All of the rewards in the node operator portion are distributed fairly to every member of the pool.
In essence, the Smoothing Pool is a way to effectively eliminate the randomness associated with block proposals on the Beacon Chain. If you've ever had a streak of bad luck and gone months without a proposal, you may find the Smoothing Pool quite exciting.
The Smoothing Pool rewards are built into the Merkle Tree used for RPL rewards, so you claim them at the same time you claim RPL using rocketpool node claim-rewards
.
To help clarify the details, the Smoothing Pool uses the following rules:
Opting into the Smoothing Pool is done on a node level. If you opt in, all of your minipools are opted in.
The node operator's total share is determined by the average commission of every minipool in every node opted into the Smoothing Pool.
Anyone can opt in at any time. They must wait a full rewards interval (1 day on Ropsten, 28 days on Mainnet) before opting out to prevent gaming the system.
The Smoothing Pool calculates the "share" of each minipool (portion of the pool's ETH for the interval) owned by each node opted in.
Your node's total share is the sum of your minipool shares.
Your node's total share is scaled by the amount of time you were opted in.
To opt into the Smoothing Pool, run the following command:
This will record you as opted-in in the Rocket Pool contracts and automatically change your Validator Client's fee recipient
from your node's distributor contract to the Smoothing Pool contract.
To leave the pool, run this command:
To ensure that node operators don't "cheat" by manually modifying the fee recipient used in their Validator Client, Rocket Pool employs a penalty system.
The Oracle DAO constantly monitors each block produced by Rocket Pool node operators. Any block that has a fee recipient other than one of the following addresses is considered to be invalid:
A minipool that proposed a block with an invalid fee recipient will be issued a strike. On the third strike, the minipool will begin receiving infractions - each infraction will dock 10% of its total Beacon Chain balance, including ETH earnings and send them to the rETH pool stakers upon withdrawing funds from the minipool.
Infractions are at a minipool level, not a node level.
The Smartnode software is designed to ensure honest users will never get penalized, even if it must take the Validator Client offline to do so. If this happens, you will stop attesting and will see error messages in your log files about why the Smartnode can't correctly set your fee recipient.
For detailed information on how to prepare your node for the upgrade and what to do after the upgrade, please look at the following guides: