BurnPoolV2 燃烧池
BurnPoolV2 是 Chaos Protocol 的核心收益分配合约,实现了基于 FIFO(先进先出)队列的"燃烧即投资"回报系统。
基本信息
| 属性 | 值 |
|---|---|
| 合约类型 | UUPS 可升级合约 |
| 最低参与额 | 100 USDT |
| 回报倍数 | 2x |
| 推荐奖励 | 有 |
| 支持 Permit2 | 是 |
核心机制
1. 燃烧流程
用户通过 BurnPoolV2 参与"燃烧",实际上是一个投资行为:
有推荐人:
用户投入 100 USDT
↓
┌───────────────────────────────────┐
│ 40 USDT → 添加LP (全部给用户) │
│ 20 USDT → 推荐奖励 │
│ ├─ 10 USDT → 金库LP │
│ └─ 10 USDT → 代币 │
│ 35 USDT → 买币参与税收分红 │
│ 5 USDT → 买币销毁 (黑洞) │
└───────────────────────────────────┘
↓
LP 存入 VaultV5 → 进入 FIFO 分红队列无推荐人:
用户投入 100 USDT
↓
┌───────────────────────────────────┐
│ 40 USDT → 添加LP (全部给用户) │
│ 55 USDT → 买币参与税收分红 │
│ 5 USDT → 买币销毁 (黑洞) │
└───────────────────────────────────┘
↓
LP 存入 VaultV5 → 进入 FIFO 分红队列分配说明:
- LP 部分:40 USDT + 等值代币添加流动性,全部给用户
- 推荐奖励:10 USDT 等值金库 LP + 10 USDT 等值代币给推荐人(无推荐人时追加到税收分红)
- 参与税收:购买代币,交易产生 3% 税费进入分红池
- 销毁机制:5 USDT 购买代币发送到黑洞地址,减少流通供应
2. FIFO 分红队列
BurnPoolV2 使用先进先出队列管理用户分红:
solidity
struct UserInfo {
uint256 totalInvested; // 总投入USDT
uint256 totalWithdrawn; // 已提取USDT
uint256 queueIndex; // 队列位置
bool isInQueue; // 是否在队列中
}分红流程:
- 用户投入USDT后进入队列
- TaxToken交易税产生的USDT进入BurnPoolV2
- USDT按照
accPerShare累计分配给所有活跃用户 - 当用户累计收益达到目标(投入×2)时自动出队
3. 收益计算
solidity
uint256 public constant MULTIPLE = 2; // 2倍回报
// 用户目标收益
uint256 targetReturn = user.totalInvested * MULTIPLE;
// 当前可提取收益
uint256 pending = user.totalInvested * accPerShare - user.totalWithdrawn;4. 推荐人系统
用户首次燃烧时可以绑定推荐人:
绑定条件:
- 推荐人必须已经进行过燃烧
- 一经绑定,不可更改
推荐人奖励(100 USDT 燃烧示例):
- 10 USDT 等值金库 LP
- 10 USDT 等值代币
无推荐人时:
- 40 USDT LP 全部给用户
- 推荐奖励部分归入销毁
5. Boost 加速机制
BurnPoolV2 实现了推荐人加速机制:
solidity
uint256 public constant BOOST_WINDOW = 8 hours;触发条件:
- 推荐人的被推荐人在8小时内完成燃烧
- 推荐人可以从奖金池获得额外奖励
奖金池来源:
- TaxToken交易税的20%通过
notifyPrizeReceived进入
用户操作
参与燃烧
solidity
// 基本燃烧
function burn(uint256 usdtAmount) external;
// 带推荐人的燃烧
function burnWithReferrer(
uint256 usdtAmount,
address referrer
) external;
// Permit2 签名燃烧(无gas)
function burnWithPermit(
uint256 usdtAmount,
address referrer,
Permit2Data calldata permit2Data
) external;查询收益
solidity
// 查询待领取USDT
function getPendingUsdt(address user) external view returns (uint256);
// 查询用户信息
function getUserInfo(address user) external view returns (UserInfo memory);
// 查询队列信息
function getQueueInfo() external view returns (
uint256 totalQueued,
uint256 nextIndex,
uint256 totalPending
);领取分红
solidity
function claimUsdt() external;收入来源
BurnPoolV2 的收入来源:
| 来源 | 比例 | 说明 |
|---|---|---|
| TaxToken交易税 | 80% | 每笔Chaos交易的3%税费中的80% |
| 用户燃烧投入 | 100% | 用户投入的USDT用于购买代币 |
安全特性
- UUPS 可升级: 支持合约升级而不改变地址
- Permit2 支持: 无gas签名操作
- FIFO队列: 确保公平的收益分配
- 最低参与额: 100 USDT防止粉尘攻击
数据结构
UserInfo
solidity
struct UserInfo {
uint256 totalInvested; // 总投入USDT
uint256 totalWithdrawn; // 已提取USDT
uint256 queueIndex; // 队列中的位置
bool isInQueue; // 是否在队列中
address referrer; // 推荐人地址
uint256 referrerReward; // 推荐人已获得的奖励
uint256 lastBurnTimestamp; // 最后燃烧时间
}事件
solidity
event Burn(address indexed user, uint256 usdtAmount, uint256 lpAmount);
event Claim(address indexed user, uint256 usdtAmount);
event ReferrerBound(address indexed user, address indexed referrer);
event BoostTriggered(address indexed referrer, uint256 bonusAmount);