OCIO Vault
A vault that takes idle capital, moves it across chains via Chainlink CCIP, and puts it to work in third-party lending protocols, all inside a single ERC4626-compliant share.
| Role | Architect |
| Chain(s) | Ethereum + satellite chains via CCIP |
| Stack | Solidity, Solady, Chainlink CCIP |
| Status | Testnet, pre-audit |
What it does
OCIOVaultsits on the home chain, accepts deposits, mints ERC4626 shares, and instructsCrossChainExecutorcontracts on satellite chains to deploy capital into Aave, Morpho, or Compound.- A paired lending-pool subsystem provides liquidity for redemptions and yield deployment through two borrow types: a fixed-rate strategy loan, capped by a utilization ceiling, and a variable-rate instant loan for redemption flows.
- Overdue-borrow buffers and per-day interest escalation replace a liquidation engine for this use case: a
Borrowerproxy blocks any new borrow while a prior one is overdue, instead of seizing collateral.
The interesting part
totalAssets() is tracked at deployment cost, not market value, on purpose: no price oracle in the loop means no flashloan-driven share-price manipulation, at the cost of yield only materializing once proceeds actually return home. Redemptions that can’t be filled instantly burn shares immediately and queue the payout, so double-redemption isn’t possible even in the async path, and the CCIP receiver never drains that queue itself: an unbounded loop inside a fixed-gas CCIP callback is how you get a stuck message, so draining is a separate, ownerless, publicly callable function.
Source is internal to Swarm and not published.