BurnPoolV2
BurnPoolV2 is the core revenue distribution contract of Chaos Protocol, implementing a "burn-to-invest" return system based on FIFO (First In, First Out) queue.
Basic Information
| Property | Value |
|---|---|
| Contract Type | UUPS Upgradeable |
| Minimum Investment | 100 USDT |
| Return Multiple | 2x |
| Referral Reward | Yes |
| Permit2 Support | Yes |
Core Mechanism
1. Burn Process
Users participate in "burning" through BurnPoolV2, which is actually an investment behavior:
With Referrer:
User Invests 100 USDT
↓
┌───────────────────────────────────┐
│ 40 USDT → Add LP (All to User) │
│ 20 USDT → Referral Reward │
│ ├─ 10 USDT → Vault LP │
│ └─ 10 USDT → Tokens │
│ 35 USDT → Buy Tokens for Tax │
│ 5 USDT → Buy Tokens to Burn │
└───────────────────────────────────┘
↓
LP Deposited to VaultV5 → Enter FIFO Dividend QueueWithout Referrer:
User Invests 100 USDT
↓
┌───────────────────────────────────┐
│ 40 USDT → Add LP (All to User) │
│ 55 USDT → Buy Tokens for Tax │
│ 5 USDT → Buy Tokens to Burn │
└───────────────────────────────────┘
↓
LP Deposited to VaultV5 → Enter FIFO Dividend QueueDistribution Details:
- LP Portion: 40 USDT + equivalent tokens for liquidity, all to user
- Referral Reward: 10 USDT equivalent Vault LP + 10 USDT equivalent tokens to referrer (without referrer, added to tax participation)
- Tax Participation: Buy tokens, 3% transaction tax goes to dividend pool
- Burn Mechanism: 5 USDT to buy tokens sent to black hole address, reducing circulating supply
2. FIFO Dividend Queue
BurnPoolV2 uses a first-in-first-out queue to manage user dividends:
solidity
struct UserInfo {
uint256 totalInvested; // Total USDT invested
uint256 totalWithdrawn; // Total USDT withdrawn
uint256 queueIndex; // Position in queue
bool isInQueue; // Whether in queue
}Dividend Flow:
- User enters queue after investing USDT
- USDT from TaxToken transaction tax enters BurnPoolV2
- USDT is distributed to all active users according to
accPerShare - User automatically exits queue when cumulative returns reach target (investment × 2)
3. Revenue Calculation
solidity
uint256 public constant MULTIPLE = 2; // 2x return
// User target return
uint256 targetReturn = user.totalInvested * MULTIPLE;
// Current withdrawable return
uint256 pending = user.totalInvested * accPerShare - user.totalWithdrawn;4. Referrer System
Users can bind a referrer during their first burn:
Binding Conditions:
- Referrer must have already performed a burn
- Once bound, cannot be changed
Referrer Rewards (100 USDT burn example):
- 10 USDT equivalent Vault LP
- 10 USDT equivalent tokens
Without Referrer:
- 40 USDT LP all to user
- Referral reward portion goes to burn
5. Boost Acceleration Mechanism
BurnPoolV2 implements a referrer acceleration mechanism:
solidity
uint256 public constant BOOST_WINDOW = 8 hours;Trigger Conditions:
- Referrer's referral completes burn within 8 hours
- Referrer can receive additional rewards from prize pool
Prize Pool Source:
- 20% of TaxToken transaction tax enters via
notifyPrizeReceived
User Operations
Participate in Burn
solidity
// Basic burn
function burn(uint256 usdtAmount) external;
// Burn with referrer
function burnWithReferrer(
uint256 usdtAmount,
address referrer
) external;
// Permit2 signature burn (gasless)
function burnWithPermit(
uint256 usdtAmount,
address referrer,
Permit2Data calldata permit2Data
) external;Query Returns
solidity
// Query pending USDT
function getPendingUsdt(address user) external view returns (uint256);
// Query user info
function getUserInfo(address user) external view returns (UserInfo memory);
// Query queue info
function getQueueInfo() external view returns (
uint256 totalQueued,
uint256 nextIndex,
uint256 totalPending
);Claim Dividends
solidity
function claimUsdt() external;Revenue Sources
BurnPoolV2's revenue sources:
| Source | Percentage | Description |
|---|---|---|
| TaxToken Transaction Tax | 80% | 80% of 3% tax from each Chaos transaction |
| User Burn Investment | 100% | USDT invested by users for token purchase |
Security Features
- UUPS Upgradeable: Supports contract upgrade without changing address
- Permit2 Support: Gasless signature operations
- FIFO Queue: Ensures fair revenue distribution
- Minimum Investment: 100 USDT prevents dust attacks
Data Structures
UserInfo
solidity
struct UserInfo {
uint256 totalInvested; // Total USDT invested
uint256 totalWithdrawn; // Total USDT withdrawn
uint256 queueIndex; // Position in queue
bool isInQueue; // Whether in queue
address referrer; // Referrer address
uint256 referrerReward; // Referrer rewards received
uint256 lastBurnTimestamp; // Last burn timestamp
}Events
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);