Minipools

Overview

Minipools are the matchmaking service at the heart of the Rocket Pool network. Whenever a node operator deposits ether into Rocket Pool, they create a minipool. This minipool contains the node operator’s ether, and accepts 16 user-deposited ETH.

All minipools enter a queue and are assigned user-deposited ETH as it becomes available, in a FIFO fashion. If a node operator deposits 16 ETH, the resulting minipool must wait for its ETH assignment to begin staking. If a node operator deposits 32 ETH, the resulting minipool can begin staking immediately, and will refund the excess 16 ETH after assignment.

Minipools keep a strict record of all the funds deposited into them, and what has been withdrawn. This includes the node operator’s ETH balance, and the user-deposited ETH balance. This way, the minipool knows how much to give back to each party once it has finished staking. They also record a lot of other information about the node which created them, their staking status, and more.

Staking Minipools

Once a minipool contains 32 ETH, it is ready to begin staking. The Rocket Pool smart node software will check for these minipools at set intervals, and progress them to staking. A validator keypair will be generated for each minipool, and then a transaction will be sent to forward its balance to the Eth 2.0 Validator Registration Contract. The deposit is sent to the VRC along with the validator key generated by the smartnode, and Rocket Pool’s network-wide withdrawal credentials. This puts the node in charge of validation duties for the minipool, and Rocket Pool in charge of handling its withdrawal.

The smart node software will then watch for the validator being activated on the beacon chain. Once active, its validation duties will automatically be started.

Exiting & Withdrawing Minipools

Rocket Pool node operators may exit their minipools whenever they like, using commands provided by the smart node software. This sends a message to the beacon chain requesting that the validator be exited, which happens after some delay, according to the Eth 2.0 protocol. Once the validator is exited, Rocket Pool watchtower nodes will report this back to the network contracts, recording their final balance and minting nETH for the node operator.

Until phase 2 of the Eth 2.0 rollout, node operators may only withdraw their nETH earned after a significant delay. This prevents malicious actors from attacking the Rocket Pool network by filling it with “idle” ETH. This also means that running a node is a long term committment, and they should only be run by those prepared to do so over a long time period.

Once a validator’s balance has been withdrawn by Rocket Pool (after phase 2 only), it will be split between the nETH contract and the deposit pool. The share of ETH earned by the node operator will be sent to the nETH contract, to provide collateral for nETH token exchanges. The share of ETH belonging to Rocket Pool users will be recycled to the deposit pool, either to stake again or to act as collateral for rETH token exchanges.

Refunding Node ETH

If a minipool is created with a deposit of 32 ETH, it begins staking immediately but will still receive 16 user-deposited ETH when it reaches the front of the minipool queue. When this occurs, the excess 16 ETH deposited by the node operator becomes available for refund. The smart node software provides commands to check for minipools with available refunds, and to withdraw them back to the node account.

Rocket Pool also records the time at which user-deposited ETH is assigned to the minipool. All rewards earned by the minipool before this point are paid exclusively to the node operator. Rewards earned after this point are shared between the node operator and Rocket Pool users (after accounting for the node commission fee).

Dissolving Minipools

If a minipool is assigned user-deposited ETH but fails to begin staking within a set timeout period, it is considered to be idle. Any ethereum account can send a transaction to an idle minipool causing it to be dissolved and the user-deposited ETH in it to be returned to the deposit pool. Once a minipool has been dissolved, the node owning it may close it to return their ETH deposit to the node account. Rocket Pool watchtower nodes will automatically dissolve idle minipools at set intervals.