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

  1. Deposit collateral: You deposit the vault asset and receive ERC4626 shares.
  2. Borrow debt asset: The vault posts collateral in the loan manager and borrows stablecoins at a target LTV.
  3. Deploy strategy: Borrowed stablecoins are routed into the active yield strategy (currently: USDT -> crvUSD -> pmUSD/crvUSD LP -> StakeDAO).
  4. Permissionless upkeep: Anyone can call rebalance(), harvestYield(), and accrueYieldFees().
  5. 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 Vault Family

  • WBTC Aave-RAAC crvUSD/pmUSD
  • wstETH Aave-RAAC crvUSD/pmUSD

Legacy deployments may remain visible for historical withdrawals or analytics, but new deposits should use active vaults.

Read Next

Before Depositing

Read the Risks section and verify addresses in Contracts.