ZenSats Documentation
ZenSats is an ERC4626 vault system that automates collateralized carry trades. You deposit collateral (WBTC, wstETH, or other supported assets), the vault borrows stablecoins through a loan manager, and deploys the borrowed capital into a yield strategy. You earn the spread.
Two Forms of Collateral Accounting
The vault tracks value in collateral units using two buckets: direct collateral (collateral token held in vault + loan manager) and debt-side value (strategy and idle debt assets converted back to collateral-equivalent value via loan manager pricing).
How It Works
- Deposit collateral: You deposit the vault asset and receive ERC4626 shares.
- Borrow debt asset: The vault posts collateral in the loan manager and borrows stablecoins at a target LTV.
- Deploy strategy: Borrowed stablecoins are routed into the active yield strategy (currently: borrow crvUSD on LlamaLend -> LP in Curve crvUSD/USDT pool -> stake in StakeDAO).
- Permissionless upkeep: Anyone can call
rebalance(),harvestYield(), andaccrueYieldFees(). - Redeem shares: Withdraw/redeem burns shares and returns collateral, including unwind logic when needed.
Admin Model (Restricted Powers)
- Owner can tune bounded parameters, toggle idle mode, withdraw protocol fees, and run emergency unwind flows. Cannot swap the loan manager or strategy.
- Gov has a narrow role: swapper contract changes only, via propose/execute/cancel with a 1-week timelock. The vault validates swapper output against oracle pricing.
- No arbitrary user-fund drain path: collateral/debt tokens cannot be rescued via generic rescue function.
- Emergency mode is one-way: once enabled, it cannot be switched off.
Current Live Vaults
- WBTC LlamaLend + StakeDAO (
wbtc-llamalend) — borrow crvUSD, earn in crvUSD/USDT LP - wstETH LlamaLend + StakeDAO (
wsteth-llamalend) — same strategy on wstETH collateral
These vaults are marked Testing in the UI while TVL ramps. Implied carry is shown as LTV × (StakeDAO yield APR − LlamaLend borrow APY) on the stats page.
Legacy Vaults (withdraw-only)
- WBTC Aave-RAAC crvUSD/pmUSD (
wbtc-pmusd) - wstETH Aave-RAAC crvUSD/pmUSD (
wsteth-pmusd) - XAUT Aave-RAAC crvUSD/pmUSD (
xaut-pmusd)
Legacy vaults no longer accept new deposits (maxDeposit() returns 0). Existing share holders can withdraw.
Read Next
Core accounting, ERC4626 behavior, and risk controls
How collateralized borrowing and LTV checks work
LlamaLend + StakeDAO flow, legacy pmUSD strategy, and harvest behavior
Role boundaries, timelock scope, and emergency authority
Ask questions, report issues, and follow vault updates
Liquidity, health flags, and idle/emergency controls for strategists
Single-file spec: agent API, addresses, and all doc pages — fetchable with curl, no JavaScript
Plain markdown mirrors at /docs.md and /docs/*.md for LLM crawlers