Vault Token
Overview
The Vault Token is designed to wrap multiple variants of the same underlying asset (e.g., USDC from different chains) into a single, unified token.
Core Features
Multi-Asset Support
Supports multiple underlying tokens
Configurable deposit limits per token
Decimal normalization for different token standards
Fee mechanisms for deposits and withdrawals
Rate Limiting
Built-in rate limiting for all transfers
Consults rate limiter for mints, burns, and transfers
Ensures controlled token movement
Token Configuration
Token Info Structure
struct TokenInfo {
uint8 decimals; // Decimals of the underlying token
uint256 depositFee; // Fee in basis points (e.g., 50 = 0.5%)
uint256 withdrawalFee; // Fee in basis points
uint256 maxDeposit; // Maximum allowable deposit
bool isSupported; // Whether the token is supported
}Core Operations
Deposits
Withdrawals
Rate-Limited Transfers
Security Features
Deposit Controls
Maximum deposit limits per token
Rate limiting on all transfers
Decimal normalization for safety
Access Control
Owner-controlled token configuration
Protected fee recipient updates
Restricted token support management
Fee Management
Configurable deposit/withdrawal fees
Protected fee collection mechanism
Fee recipient management
Use Cases
Asset Unification
Wrap USDC from multiple chains into a single vault token
Simplify cross-chain asset management
Enable unified liquidity pools
Fee Generation
Collect fees on deposits/withdrawals
Generate revenue from cross-chain movements
Incentivize liquidity provision
Rate-Limited Transfers
Control token velocity
Prevent large sudden movements
Enhance security through movement restrictions
Cross chain token managment
Controls movement and accounting for tokens deployed across multiple chains
Configuration Methods
// Update existing token configuration function updateToken( address token, uint256 depositFee, uint256 withdrawalFee, uint256 maxDeposit ) external onlyOwner;
Last updated