Architecture
Architecture
Unison is built around five layers: the vault, strategies, cross-chain adapters, an off-chain rebalancing engine, and the DAO vault factory.
Vault
The vault is the central hub. It follows the ERC-4626 tokenized vault standard and lives on a single hub chain.
It accepts deposits and mints vault shares (uTokens) proportional to current NAV, tracks how much capital is deployed to every strategy on every chain, reserves funds for pending cross-chain withdrawals, and maintains a priority-ordered queue of registered strategies.
NAV equals the idle vault balance plus the total capital deployed to strategies. When strategies report profit, the deployed balance goes up, NAV goes up, and so does the share price.
Deposit
Users deposit on the vault's home chain or cross-chain via the bridge adapter. The vault mints uTokens based on NAV per share. Capital sits idle until the keeper deploys it to strategies.
Capital deployment
The keeper moves idle vault capital into strategies. Same-chain strategies get a direct transfer. Cross-chain strategies go through the bridge adapter. The vault tracks exactly how much is deployed to each strategy on each chain.
Withdrawal
Withdrawals follow a priority-ordered cascade:
The vault tries idle balance first. If that's not enough it pulls from same-chain strategies in priority order. If there's still a shortfall it sends withdrawal requests to cross-chain strategies and creates a pending withdrawal with a unique GUID.
Each user can have one active cross-chain withdrawal at a time. Shares stay locked until settlement completes.
Profit reporting
Strategies harvest yield periodically and report profit back to the vault. Same-chain strategies report directly. Cross-chain strategies send it through the messaging adapter. Reported profit increases total assets which pushes up the share price for all holders.
Strategies
Strategies are modular isolated contracts that deploy vault capital into yield sources. Each one lives on a specific chain and interacts with a specific protocol or set of protocols.
They are pluggable (new ones can be added without touching existing ones), isolated (a failure in one doesn't affect others or drain the vault), and self-contained (each manages its own allowances, reward claims, and compounding).
Harvest cycle
The keeper triggers a harvest. The strategy claims accrued rewards, swaps them to the deposit asset, takes the performance fee, reinvests the rest, and reports profit to the vault.
Fee structure
Performance fee
20% of profit
At each harvest
Withdrawal fee
0.2%
Only on cross-chain withdrawals
Cross-chain adapters
Cross-chain communication is abstracted behind two interfaces: one for messaging (withdraw requests, profit reports) and one for bridging (token transfers). This means the underlying provider can be swapped without changing any vault or strategy code.
The current implementation uses Chainlink CCIP for both messaging and bridging through a single adapter contract. It handles outbound token transfers and messages as well as inbound messages that execute function calls on the target contract.
The adapter is fully swappable. A new one implementing the same interfaces can replace CCIP with any bridge provider while the vault and strategy contracts stay untouched.
Off-chain rebalancing engine
The on-chain contracts handle execution. The decisions about where and when to deploy capital are made off-chain by the rebalancing engine.
Access control
All vault and strategy contracts share three roles:
Owner
Protocol multisig. Sets keeper and manager. Two-step ownership transfer.
Manager
Operations. Adds/deactivates strategies, updates fees, pause/unpause.
Keeper
Automated. Deploys capital, triggers harvests, rebalances.
Emergency safeguards
Strategy kill
Manager
Liquidates entire position, bridges funds back, revokes all allowances
Vault pause
Manager
Blocks new deposits and withdrawals. Pending withdrawals keep settling.
Strategy pause
Manager
Blocks deposits and harvests. Revokes external protocol allowances.
Strategy deactivation
Manager
Removes strategy from withdrawal queue. Can't deactivate with pending withdrawals.
Pending reset
Manager
Manually clears stuck pending state after permanent bridge failure.
Last updated