Ethena allows apps to earn yield by staking USDe into the sUSDe vault. The sUSDe vault follows the ERC-4626 standard — your app deposits USDe and receives sUSDe shares that automatically accrue yield over time. There is no minimum staking period, and rewards are distributed every 8 hours.
Ethena has a 7-day cooldown period for unstaking. Your app must first request an unstake, which places the USDe in the USDeSilo contract. After the cooldown completes, your app can withdraw the USDe.
Unlike instant withdrawal vaults, Ethena requires a 7-day cooldown period after requesting an
unstake before USDe can be withdrawn.
Request unstake (start cooldown)
Withdraw after cooldown
Call cooldownShares on the sUSDe vault to initiate the unstaking process. The USDe is placed in the USDeSilo contract during the cooldown period.
import {encodeFunctionData} from 'viem';import {useSendTransaction} from '@privy-io/react-auth';const {sendTransaction} = useSendTransaction();const cooldownAbi = [ { type: 'function', name: 'cooldownShares', inputs: [{name: 'shares', type: 'uint256'}], outputs: [{name: 'assets', type: 'uint256'}], stateMutability: 'nonpayable' }] as const;const data = encodeFunctionData({ abi: cooldownAbi, functionName: 'cooldownShares', args: [userShares]});const tx = await sendTransaction({ to: SUSDE_VAULT_ADDRESS as `0x${string}`, data, chainId: CHAIN_ID});
After the 7-day cooldown period has passed, call unstake on the sUSDe vault to withdraw USDe from the USDeSilo contract:
import {encodeFunctionData} from 'viem';import {useSendTransaction} from '@privy-io/react-auth';const {sendTransaction} = useSendTransaction();const unstakeAbi = [ { type: 'function', name: 'unstake', inputs: [{name: 'receiver', type: 'address'}], outputs: [], stateMutability: 'nonpayable' }] as const;const data = encodeFunctionData({ abi: unstakeAbi, functionName: 'unstake', args: [address]});const tx = await sendTransaction({ to: SUSDE_VAULT_ADDRESS as `0x${string}`, data, chainId: CHAIN_ID});
Always approve first: Your app must grant ERC-20 approval to the sUSDe vault before any deposit.
USDe uses 18 decimals: Use parseUnits('100', 18) for amounts.
Use convertToAssets for real-time balances: This ERC-4626 method converts sUSDe shares to their current USDe value, including accrued yield.
Plan for the 7-day cooldown: Unlike other yield protocols, Ethena requires a cooldown period before withdrawing staked USDe. During this period, the USDe is held in the USDeSilo contract.
No minimum staking period: Your app can stake and unstake in consecutive blocks, though the 7-day cooldown still applies for withdrawals.
sUSDe value only increases: Rewards can only be positive or zero — stakers cannot lose USDe by staking.
Supported chains: Ethena sUSDe staking is available on Ethereum Mainnet.
Privy makes it straightforward to build secure, user-friendly access to Ethena yield. For advanced use cases, refer to the Ethena Staking Docs, or reach out in Slack.
Your app is now ready to interact with Ethena using Privy embedded wallets!