VaultV5 金库
VaultV5 是 Chaos Protocol 的 LP 代币管理和对赌合约系统,允许用户基于代币价格涨跌进行对赌交易。
基本信息
| 属性 | 值 |
|---|---|
| 合约类型 | UUPS 可升级合约 |
| 核心功能 | LP管理 + 对赌合约 |
| 合约锁定时间 | 3天 |
| LP转移手续费 | 10% |
| 取消费用率 | 1%-5% (动态) |
核心功能
1. LP 代币管理
VaultV5 管理所有通过 BurnPoolV2 产生的 LP 代币。
LP 来源
solidity
// 通过BurnPoolV2记录
function recordLpDeposit(
address user,
uint256 lpAmount
) external onlyBurnPool;
// 直接存入
function depositLp(uint256 lpAmount) external;LP 查询
solidity
// 查询用户LP余额
function getUserLpBalance(address user) external view returns (uint256);
// 查询以USDT计价的LP价值
function getUserUsdtBalance(address user) external view returns (uint256);LP 转移
用户可以将LP代币转移给其他地址:
solidity
function transferLpToken(
address to,
uint256 lpAmount
) external;手续费机制:
- 转移收取10%手续费
- 手续费对应的LP代币被销毁(发送到死地址)
solidity
uint256 fee = lpAmount * 10 / 100;
uint256 netAmount = lpAmount - fee;
// fee 部分被销毁2. 对赌合约系统
VaultV5 的核心创新是对赌合约系统,允许用户对 Chaos 代币的价格走势进行对赌。
合约状态流转
创建合约 → 锁定中(30分钟) → 等待接单 → 活跃中(3天) → 结算/取消
↓ ↓ ↓ ↓ ↓
USDT锁定 不可取消 可以接单 价格涨跌 盈亏分配创建合约 (Creator)
solidity
function createContract(
uint256 usdtAmount
) external returns (uint256 contractId);创建条件:
- 使用USDT创建
- 锁定期30分钟内不可取消
- 创建限额基于燃烧金额:
- 基础:燃烧总额的10%
- 有推荐关系:额外+2%
- 最低30 USDT
接单合约 (Taker)
solidity
function takeContract(
uint256 contractId,
uint256 lpAmount
) external;接单流程:
- 使用等值的LP代币接单
- 合约将LP拆分为USDT和代币
- 代币部分被卖出换回USDT
- 形成以当前价格为基准的对赌持仓
结算/取消
solidity
function cancelContract(uint256 contractId) external;结算规则:
| 情况 | 创建者 (Creator) | 接单者 (Taker) |
|---|---|---|
| 代币贬值 | 拿回本金 | LP按亏损比例处理 |
| 代币升值 | 获得利润的50% | 获得利润的50% |
限制条件:
- 最大利润不超过投入的2倍
- 锁定期内(30分钟)不可取消
取消手续费
手续费根据LP代币燃烧比例动态调整:
solidity
function getCancelFeeRate(
uint256 contractId
) external view returns (uint256);| 燃烧比例 | 手续费率 |
|---|---|
| ≥ 90% | 1% |
| ≥ 50% | 1% - 5% (线性递减) |
| < 50% | 5% |
3. 价格基准 (Benchmark)
对赌合约使用创建时的价格作为基准:
solidity
struct Contract {
uint256 benchmarkPrice; // 创建时的价格
uint256 creatorAmount; // 创建者投入的USDT
uint256 takerAmount; // 接单者投入的LP价值
uint256 createdAt; // 创建时间
uint256 lockedUntil; // 锁定截止时间
ContractStatus status; // 合约状态
}用户操作
查询合约
solidity
// 查询单个合约
function getContract(uint256 contractId) external view returns (Contract memory);
// 查询所有开放合约
function getOpenContractsV2() external view returns (uint256[] memory);
// 查询用户创建的合约
function getUserCreatedContracts(address user) external view returns (uint256[] memory);
// 查询用户接单的合约
function getUserTakenContracts(address user) external view returns (uint256[] memory);预览取消
solidity
// 预览取消合约的盈亏
function previewCancellation(
uint256 contractId
) external view returns (
int256 creatorPnl,
int256 takerPnl,
uint256 fee
);Permit2 支持
solidity
function createContractWithPermit(
uint256 usdtAmount,
Permit2Data calldata permit2Data
) external returns (uint256 contractId);安全特性
- UUPS 可升级: 支持合约升级
- 时间锁: 30分钟锁定期防止即时取消
- 动态手续费: 激励长期持有LP
- 利润上限: 最大2倍利润限制
- Owner 提取: 紧急情况下可提取代币
事件
solidity
event ContractCreated(uint256 indexed contractId, address indexed creator, uint256 amount);
event ContractTaken(uint256 indexed contractId, address indexed taker, uint256 lpAmount);
event ContractCancelled(uint256 indexed contractId, int256 creatorPnl, int256 takerPnl);
event LpTransferred(address indexed from, address indexed to, uint256 amount, uint256 fee);