Smart Contract Reference
This page describes the public interface of each Multyr contract. Full ABI definitions and NatSpec documentation will be published alongside the verified source code at mainnet launch.
CoreVault
CoreVault is the primary entry point for all user interactions. It implements the ERC-4626 Tokenized Vault Standard over USDC.
ERC-4626 Interface
| Function | Signature | Description |
|---|---|---|
deposit | deposit(uint256 assets, address receiver) → uint256 shares | Deposit USDC, receive vault shares |
mint | mint(uint256 shares, address receiver) → uint256 assets | Mint exact shares by supplying the required USDC |
withdraw | withdraw(uint256 assets, address owner, address receiver) → uint256 shares | Withdraw exact USDC amount, burning the required shares |
redeem | redeem(uint256 shares, address owner, address receiver) → uint256 assets | Burn exact shares, receive the corresponding USDC |
View Functions
| Function | Signature | Description |
|---|---|---|
totalAssets | totalAssets() → uint256 | Total USDC managed by the vault (buffer + deployed capital) |
convertToShares | convertToShares(uint256 assets) → uint256 | Preview how many shares a given USDC deposit would yield |
convertToAssets | convertToAssets(uint256 shares) → uint256 | Preview how much USDC a given share count is worth |
maxDeposit | maxDeposit(address) → uint256 | Maximum USDC amount accepted for deposit |
maxWithdraw | maxWithdraw(address owner) → uint256 | Maximum USDC the owner can withdraw |
previewDeposit | previewDeposit(uint256 assets) → uint256 | Simulate deposit and return expected shares |
previewRedeem | previewRedeem(uint256 shares) → uint256 | Simulate redeem and return expected assets |
Share Price
The vault share price is derived from totalAssets() / totalSupply(). As yield accrues from underlying strategies, totalAssets increases while totalSupply remains constant (absent new deposits or withdrawals), causing the share price to appreciate.
Module Contracts
CoreVault delegates specialized logic to the following modules:
StrategyRouter
Routes capital between lending-market adapters according to configured allocation weights. Responsible for deposit routing, withdrawal sourcing, and rebalancing.
Key functions:
harvest()-- Collect yield from all active strategiesrebalance()-- Rebalance allocations to match target weightsgetStrategyAllocations()-- Return current allocation per adapter
BufferManager
Maintains an idle USDC buffer inside the vault to service instant withdrawals without triggering strategy unwinds.
Key functions:
targetBuffer()-- Return the configured buffer target (basis points)currentBuffer()-- Return the current idle USDC balance
FeeCollector
Calculates and distributes protocol fees (performance fee on yield, management fee on AUM).
OpsCollector
Accounts for operational costs (gas reimbursements, keeper compensation) deducted from protocol revenue.
RewardsVault
Holds and distributes reward tokens or incentive allocations to depositors.
Incentives
Manages depositor incentive programs (e.g., early-depositor boosts, loyalty multipliers).
PriceOracleMiddleware
Provides normalized price feeds to the vault and strategy router. Wraps underlying oracle sources (Chainlink, protocol-native) behind a unified interface.
GlobalConfig
Stores protocol-wide configuration parameters (fee rates, buffer targets, strategy caps). Governed via the timelock.
SystemSealer
One-way immutability lock. Once sealed, specific configuration slots become permanently immutable and cannot be modified even by governance.
Adapter Interface
Each lending-market adapter implements IStrategyAdapter:
interface IStrategyAdapter {
/// @notice Deposit assets into the underlying lending market
function adapterDeposit(uint256 assets) external;
/// @notice Withdraw assets from the underlying lending market
function adapterWithdraw(uint256 assets) external returns (uint256 withdrawn);
/// @notice Return the total value of assets deployed through this adapter
function deployedAssets() external view returns (uint256);
/// @notice Return the current APY estimate (basis points, annualized)
function estimatedAPY() external view returns (uint256);
/// @notice Harvest accrued yield and return it to the vault
function harvest() external returns (uint256 harvested);
}
Deployed Adapters (Arbitrum)
The table below lists the adapters deployed on Arbitrum. Other supported chains will have their own set of adapters targeting the lending markets available on that chain.
| Adapter | Underlying Protocol | Market |
|---|---|---|
| AaveV3Adapter | Aave V3 | USDC |
| EulerAdapter | Euler | USDC |
| MorphoAdapter | Morpho | USDC |
| CompoundAdapter | Compound | USDC |
Full Solidity source, ABI JSON files, and NatSpec-generated documentation will be published in the protocol repository at mainnet launch.
Document version: 1.1 Last updated: 2026-03-29