Skip to main content

LidoStrategy

Git Source

Inherits: BaseYieldSkimmingStrategy

Title: LidoStrategy

Author: Golem Foundation

Yield skimming strategy for Lido wstETH (wrapped staked ETH)

Captures yield from stETH appreciation by tracking wstETH exchange rate LIDO MECHANISM:

  • wstETH is a wrapper around rebasing stETH
  • Exchange rate: wstETH → stETH increases as staking rewards accrue
  • 1 wstETH = stEthPerToken() stETH
  • Rate increases ~3-5% annually from ETH staking rewards YIELD CAPTURE:
  • User deposits 100 wstETH at rate 1.0
  • Rate increases to 1.05 (5% staking rewards)
  • Vault value: 105 stETH
  • Profit: Strategy shares worth 5 stETH value minted to dragon router EXCHANGE RATE SOURCE:
  • Calls wstETH.stEthPerToken()
  • Oracle-free (uses Lido's accounting)
  • Cannot be manipulated
  • 18 decimal precision

Notes:

  • security-contact: [email protected]

  • security: Exchange rate from Lido wstETH (trusted source)

  • security: Slashing risk: ETH validators can be slashed, reducing 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 (wstETH)
_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)

wstETH uses 18 decimal precision for stEthPerToken()

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

Returns

NameTypeDescription
<none>uint256decimals Always returns 18

_getCurrentExchangeRate

Returns current wstETH → stETH exchange rate

Queries Lido's wstETH contract for current rate Rate increases as staking rewards accrue to stETH

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

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

Returns

NameTypeDescription
<none>uint256rate Amount of stETH per 1 wstETH (18 decimal precision)