Require Minipools to Use the Latest Delegate
UPDATE: The Sentiment Poll for this is now live
!!Alert!!
Read this and ask questions if you don’t understand, here or in the discord. This could be a contentious proposition and should be thoroughly vetted before proceeding to a sentiment poll.
Proposal: For a future Smartnode update, force minipools to use the latest delegate smart contract. The primary driver of this is to eventually, with community support/vote, allow forced exits of underperforming minipools.
Introduction
A meaningful number of minipools are underperforming, dragging down rETH yield and thus potentially harming demand. This could contribute to the minipool queue not clearing in a timely manner, which threatens our ability to transition cleanly to the Saturn 1 architecture (megapools, RPL fee switch, alternative protocol funding schemes, etc.). Even if/when the queue eventually clears, this drag on yield could continue to slow rETH adoption and exacerbate the above mentioned issues.
A proposal is in development that would allow the Smartnode to force node operators to use the latest protocol deployed delegate smart contract. This effect would only be relevant after updating to that version of Smartnode. Currently, users can choose to use the latest delegate or remain on a previous delegate of their choosing, thus avoiding certain smart contract changes they do not wish to partake in.
This proposal is a philosophical change in how Rocket Pool operates. It no longer allows node operators to avoid contract updates they do not want once they upgrade to this Smartnode version.
One likely consequence of this change will be to allow forced exits on underperforming minipools. This would be a separate vote or roadmap item, however.
This post:
- Summarizes the problem and why
use-latest-delegatematters - Outlines the proposed change: forcing
use-latest-delegate = yes - Presents a governance path to proceed to a formal proposal / snapshot
Summary
What is the minipool delegate?
Minipools are implemented using a proxy; the minipool contract does little work and instead forwards most calls to a delegate implementation contract (the delegate). The delegate contract controls things such as:
- Minipool lifecycle: Defines the state for a minipool, including allowed transitions (prelaunch, staking, withdrawable, dissolved) and who may trigger them.
- Validator launch: Enforces when and how a minipool is permitted to stake and become an active Ethereum validator.
- ETH distribution: Determines when balances can be distributed and how ETH is split between the node operator and rETH holders, including commission logic.
- Penalties & slashing: Applies penalty rates and slashing rules that reduce a node operator’s share when performance or withdrawal conditions are not met.
- Withdrawals & exits: Governs how validators are exited, when funds become withdrawable, and how final balances are handled or finalized.
- Governance & trusted-node actions: Defines which protocol or trusted-node contracts can intervene in minipool behavior (e.g., scrubbing or other governance-driven actions).
- Upgrades & fixes: Serves as the upgrade point for bug fixes, security patches, and protocol rule changes without redeploying minipools.
What is the use-latest-delegate flag?
Node Operators can currently choose whether their minipools:
- Pin to the current delegate at the time the pool is created (default behavior currently)
- Always uses the latest protocol delegate
Smartnode supports explicitly setting this behavior:
rocketpool minipool set-use-latest-delegate — when enabled, a minipool ignores its current delegate and uses whatever the latest delegate is.
The Problem We’re Trying to Solve
A large enough group of poorly performing minipools has real protocol-level consequences:
- Lower rETH yield → weaker rETH demand
- Weaker rETH demand → harder to clear queues / complicates transition to megapools
- No Megapools → no RPL fee switch, less options for protocol funding, less options for institutional incentives
There is already longstanding discussion about forced exits as a protocol tool, but it becomes very difficult to enforce protocol-wide standards if a meaningful subset of pools (minipools) can remain permanently on older delegate behavior. Note that megapools do not have this same set of issues as they do not use this delegate model.
As of this post, there are 620 severely underperforming minipools, a majority of which are not attesting on the correct chain at all. See @steely’s performance website for current numbers. Note that an extensive effort to track these NOs down and give them support has been ongoing.
The effect on yield is estimated to be over 3% and note that once these NOs get in the hole (via leaking), they are a drag for a while as they need to go to back above 32 ETH to start earning for the rETH holders again.
Also, note that node operators are no longer at a premium. With Saturn 1 and 2 upgrades, capital efficiency dramatically increases. The protocol is struggling with rETH demand, not node operator demand.
Proposal (High Level)
Make a Smartnode version wherein all nodes that update to it are effectively forced to use the latest delegate, rather than pin to the current one.
This could be implemented as:
- On Smartnode upgrade,
use-latest-delegateis set toyesand cannot be toggled tono - On Smartnode upgrade,
use-latest-delegateis set toyesbut operator can toggle tono
Once a node operator upgrades to this Smartnode, their minipools by default will use delegate upgrades, enabling governance-approved protocol actions (including, potentially, force-exit mechanisms where applicable).
Pros of forcing use-latest-delegate = yes
- Protocol-wide consistency: Everyone runs under the same minipool logic
- Enforceability: Governance-approved mechanisms (including performance enforcement / exit tools where applicable) become practical
- Yield protection: Raises the floor on validator performance over time, supporting rETH competitiveness.
- Operational simplicity: Reduces “why does this minipool behave differently?” support/debug burden.
- Saturn 1 readiness: Helps remove one of the biggest practical blockers to clearing queues and moving cleanly into the new architecture.
If Node Operators can opt out of enforcement, rETH holders are subsidizing negligence.
Cons / risks
- Permissionless/opt-in optics: This is a philosophical shift away from “NOs can choose the rules their pools live by”
- Governance risk concentration: Delegate upgrades become more powerful; any governance compromise becomes more dangerous
- Trust and process requirements go up: We likely need stronger/more public facing DAO and team alignment and communication on exactly what goes into each delegate upgrade
- Backward compatibility: Some NOs may strongly object to losing the ability to pin a delegate for stability
Rocket Pool intentionally made minipool upgrades opt-in historically to reduce the risk of a malicious oDAO majority harming NOs. Although some would argue that a malicious oDAO can hurt the protocol just as much without this.
Path Forward
The Require Use Latest Delegate thread on discord and this forum should be used to debate this issue. We must reach out via discord pings and ping channel pings to the broader community for input on this issue.
When/if we feel we have settled in the discussion, a sentiment poll will be taken and the regular governance process will proceed.
Open Questions
-
Is the rETH yield more important than Node Operator control?
-
Are there ways this can be abused we are not ready to deal with?
-
What governance controls should be required for delegate updates if we remove opt-out? For example, should pDAO have to vote on delegate updates or on certain types of updates?
Conclusion
This is a major philosophical change, but this design was created before we could know what the limitations of it would truly be. Make your case so we can proceed with what the DAO and team think is best for the protocol.