Skip to main content

RocketPoolStrategy

Git Source

Inherits: BaseYieldSkimmingStrategy

Title: RocketPoolStrategy

Author: Golem Foundation

Yield skimming strategy for RocketPool rETH

Captures yield from rETH appreciation by tracking rETH/ETH exchange rate ROCKETPOOL MECHANISM:

  • rETH represents staked ETH in RocketPool protocol
  • Exchange rate: rETH → ETH increases as staking rewards accrue
  • Rate starts at ~1.0 and increases over time
  • Different from Lido: non-rebasing, rate appreciation only YIELD CAPTURE:
  • User deposits 100 rETH at rate 1.0
  • Rate increases to 1.05 (5% staking rewards)
  • Vault value: 105 ETH
  • Profit: Strategy shares worth 5 ETH value minted to dragon router EXCHANGE RATE SOURCE:
  • Calls RocketPool.getExchangeRate()
  • Based on RocketPool's accounting
  • Cannot be manipulated
  • 18 decimal precision

Notes:

  • security-contact: [email protected]

  • security: Exchange rate from RocketPool (trusted source)

  • security: Slashing risk: Validators can be slashed, affecting rate

Functions

constructor

constructor(
address _asset,
string memory _name,
string memory _symbol,
address _management,
address _keeper,
address _emergencyAdmin,
address _donationAddress,
bool _enableBurning,
address _tokenizedStrategyAddress
)
BaseYieldSkimmingStrategy(
_asset, // shares address
_name,
_symbol,
_management,
_keeper,
_emergencyAdmin,
_donationAddress,
_enableBurning,
_tokenizedStrategyAddress
);

Parameters

NameTypeDescription
_assetaddressAddress of the underlying asset
_namestringStrategy name
_symbolstringStrategy symbol
_managementaddressAddress with management role
_keeperaddressAddress with keeper role
_emergencyAdminaddressAddress with emergency admin role
_donationAddressaddressAddress that receives donated/minted yield
_enableBurningboolWhether loss-protection burning from donation address is enabled
_tokenizedStrategyAddressaddressAddress of TokenizedStrategy implementation

decimalsOfExchangeRate

Returns exchange rate precision (18 decimals)

RocketPool uses 18 decimal precision for exchange rate

function decimalsOfExchangeRate() public pure override returns (uint256);

Returns

NameTypeDescription
<none>uint256decimals Always returns 18

_getCurrentExchangeRate

Returns current rETH → ETH exchange rate

Queries RocketPool protocol for current rate Rate increases as staking rewards accrue

Note: security: Rate from RocketPool protocol (manipulation-resistant)

function _getCurrentExchangeRate() internal view override returns (uint256);

Returns

NameTypeDescription
<none>uint256rate Amount of ETH per 1 rETH (18 decimal precision)