Skip to main content
Not yet available on Robinhood testnet (chain 46630), Sherwood’s current deployment target. This strategy will come online as Sherwood expands to more chains.
The WstETHMoonwellStrategy is a stacked yield strategy: it swaps WETH to wstETH via Aerodrome, then supplies wstETH to Moonwell’s lending market. The vault earns both Lido staking yield and Moonwell lending interest simultaneously.

Architecture

Yield Sources

Lido Staking

wstETH appreciates relative to ETH as Lido staking rewards accrue. This is embedded in the wstETH/WETH exchange rate.

Moonwell Lending

Supplying wstETH to Moonwell earns lending interest on top of the staking yield.

Lifecycle

PhaseWhat happensWho calls
ExecutePull WETH → swap to wstETH (Aerodrome) → mint mwstETH (Moonwell)Governor (proposal execution)
ExecutedmwstETH accrues Lido staking + Moonwell lending yield
SettleRedeem mwstETH → swap wstETH to WETH (Aerodrome) → push to vaultGovernor (proposal settlement)

Batch Calls

Execute

Settle

InitParams

The two slippage fields are per-unit rates scaled by 1e18, not absolute amounts. At swap time the contract computes minOut = amountIn * rate / 1e18, so the floor scales with the actual amount swapped (safe for dynamic-all mode and for yield-accrued settle balances). Both rates are required — initialization reverts with InvalidAmount if either is 0.

Tunable Parameters

The proposer can update slippage parameters in both Pending and Executed states (unlike other strategies which only allow updates while Executed):
ParameterDescription
minWethOutPerWstethPer-unit rate (1e18): min WETH per 1e18 wstETH on the settle swap
minWstethOutPerWethPer-unit rate (1e18): min wstETH per 1e18 WETH on the execute swap
deadlineOffsetSwap deadline in seconds from current block
The decode order is (newMinWethOutPerWsteth, newMinWstethOutPerWeth, newDeadlineOffset) — settle-side rate first:
Allowing param updates in Pending state lets the proposer adjust slippage before execution — useful if the WETH/wstETH rate shifts during the voting period.

CLI Usage

FlagDescriptionDefault
--amount <n>Amount of WETH to deployrequired
--slippage <bps>Slippage tolerance in basis points500 (5%)
The CLI converts the --slippage value into the two 1e18-scaled per-unit rates (minWstethOutPerWeth, minWethOutPerWsteth). For example a 5% (500 bps) tolerance produces a rate near 0.95e18, and the contract enforces minOut = amountIn * rate / 1e18 at each swap.

Vault Liquidity During a Proposal

This strategy is Lane B only — it does not override positions(), so the vault reports no priceable position for it and there is no oracle instant-lane. While a proposal on this strategy is active, deposits and redeems go through the Lane B async queue: requestDeposit / requestRedeem escrow in the VaultWithdrawalQueue and settle at the single frozen, realized per-proposal price stamped when the proposal settles. Outside a proposal, entry/exit is instant ERC-4626 against vault float. The chainlinkWstethEthFeed is retained for off-chain reference only — it is not consumed on-chain and does not drive vault NAV. See Deposits & Withdrawals for the full two-lane model.

Addresses (Base reference)

ContractAddress
WstETHMoonwellStrategy template0x23d145Bd100599C7418164FEae235bcE391Ae032
WETH0x4200000000000000000000000000000000000006
wstETH0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452
Moonwell mwstETH0x627Fe393Bc6EdDA28e99AE648fD6fF362514304b
Aerodrome Router0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43
Aerodrome Factory0x420DD381b31aEf6683db6B902084cB0FFECe40Da
Chainlink WSTETH/ETH feed0x43a5C292A453A3bF3606fa856197f09D7B74251a