RocketPoolStrategy
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
| Name | Type | Description |
|---|---|---|
_asset | address | Address of the underlying asset |
_name | string | Strategy name |
_symbol | string | Strategy symbol |
_management | address | Address with management role |
_keeper | address | Address with keeper role |
_emergencyAdmin | address | Address with emergency admin role |
_donationAddress | address | Address that receives donated/minted yield |
_enableBurning | bool | Whether loss-protection burning from donation address is enabled |
_tokenizedStrategyAddress | address | Address 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
| Name | Type | Description |
|---|---|---|
<none> | uint256 | decimals 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
| Name | Type | Description |
|---|---|---|
<none> | uint256 | rate Amount of ETH per 1 rETH (18 decimal precision) |