RPIP-28: Deposits Under the Minimum Source

Allow minipool deposits that include an appropriate RPL stake, even when under the "minimum" RPL threshold
RPIP28
AuthorValdorff
StatusFinal
TypeProtocol
CategoryCore
Created2023-08-11
DiscussionLink
Vote Link
Vote Date2023-11-16
Vote ResultPassed

RPIP-28: Deposits Under the Minimum Source

Allow minipool deposits that include an appropriate RPL stake, even when under the "minimum" RPL threshold

Abstract

This proposal removes an incentive to create sock-puppet nodes by adding the ability to do a combined minipool deposit AND RPL stake. This would allow creating a new minipool even when under the minimum.

Motivation

Right now, if an NO falls below the minimum (value of RPL staked <10% of borrowed ETH), they can't add a new minipool to that node unless they stake enough to reach the minimum AND cover the new minipool. Unless, of course, they make a new node. This means that an incentive currently exists to make sock puppet nodes.

The proposed atomic method allows users that prioritize convenience or otherwise wish to remain on one node an easy method to accomplish that goal, while still being able to add minipools.

Specification

  • A function SHALL be added that allows an atomic RPL stake and minipool ETH deposit
  • This function SHALL succeed if the staked RPL meets the amount that would be needed for this minipool on a fresh node

Reference Implementation

  • Add a new RocketNodeDeposit.deposit_with_RPL function that has the same arguments as RocketNodeDeposit.deposit plus a new rpl_to_stake argument
  • RocketNodeDeposit.deposit now calls RocketNodeDeposit.deposit_with_RPL with rpl_to_stake=0
  • In RocketNodeDeposit.deposit_with_RPL
    • require(msg.value == _bondAmount, "Invalid value");
    • deposited_with_enough_rpl = (rocketNetworkPrices.getRPLPrice() * rpl_to_stake > rocketDAOProtocolSettingsNode.getMinimumPerMinipoolStake() * (32-_bondAmount))
    • Pass along deposited_with_enough_rpl as needed such that the deposit will succeed if EITHER:
      • deposited_with_enough_rpl is true
      • There's enough RPL to be above minimum once the new minipool is added (the current check)

Copyright and related rights waived via CC0.

Citation

Valdorff, "RPIP-28: Deposits Under the Minimum," Rocket Pool Improvement Proposals, no. 28, August 2023. [Online serial]. Available: https://rpips.rocketpool.net/RPIPs/rpip-28.