Skip to content

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;

接单流程:

  1. 使用等值的LP代币接单
  2. 合约将LP拆分为USDT和代币
  3. 代币部分被卖出换回USDT
  4. 形成以当前价格为基准的对赌持仓

结算/取消

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);

安全特性

  1. UUPS 可升级: 支持合约升级
  2. 时间锁: 30分钟锁定期防止即时取消
  3. 动态手续费: 激励长期持有LP
  4. 利润上限: 最大2倍利润限制
  5. 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);

相关链接

Chaos Protocol Documentation