Price-Based Supply Unlocks
The SupplyController contract holds 99B of the 100B total $7N7D supply. Tokens unlock as the market price reaches sustained milestones.
How It Works
Token Price Rises ──► Uniswap V4 Hook reads price ──► Updates TWAP
│
▼
72h sustained? ──► checkAndUnlock() ──► Distribute
│
▼
7-day cooldown
│
▼
Next tier eligible
TWAP Verification
Price milestones use a 72-hour Time-Weighted Average Price (TWAP) to prevent manipulation:
- The PriceUnlockHook (Uniswap V4) reads the swap price after each trade
- It calls
SupplyController.updateTWAP(price)to record the current price - The SupplyController tracks when the price first exceeded the tier threshold
- If the price drops below the threshold, the timer resets
- After 72 continuous hours above the threshold, anyone can call
checkAndUnlock()
Cooldown Period
After each successful unlock, a 7-day cooldown prevents rapid sequential unlocks. This gives the market time to absorb new supply before the next tier becomes eligible.
Tier Schedule
| Tier | Price Target | Tokens Unlocked | Cumulative Unlocked | Approx. Market Cap at Tier |
|---|---|---|---|---|
| 1 | $0.000003 | 2,000,000,000 | 3B | ~$9K |
| 2 | $0.00001 | 4,000,000,000 | 7B | ~$70K |
| 3 | $0.00003 | 6,000,000,000 | 13B | ~$390K |
| 4 | $0.0001 | 8,000,000,000 | 21B | ~$2.1M |
| 5 | $0.0003 | 10,000,000,000 | 31B | ~$9.3M |
| 6 | $0.001 | 12,000,000,000 | 43B | ~$43M |
| 7 | $0.003 | 14,000,000,000 | 57B | ~$171M |
| 8 | $0.01 | 16,000,000,000 | 73B | ~$730M |
| 9 | $0.03 | 5,000,000,000 | 78B | ~$2.3B |
| 10 | $0.10 | 22,000,000,000 | 100B (all unlocked) | ~$10B |
Market cap estimates are approximate based on circulating supply at each tier.
Tranche Distribution
Each unlock tranche is distributed to six destinations:
Unlock Tranche (100%)
│
├──► 30% Staking Rewards
│ └── Added to ProfitDistributor for staker rewards
│
├──► 20% Vault Reserves
│ └── Backs the Trading Vault
│
├──► 20% Liquidity Pool
│ └── Deepens DEX liquidity
│
├──► 15% DAO Treasury
│ └── Governance-controlled
│
├──► 10% Team Vesting
│ └── 6-month cliff, 12-month linear vest
│
└──► 5% Buyback Reserve
└── Tokens for market operations
Example: Tier 1 Unlock (2B tokens)
| Destination | Amount | Purpose |
|---|---|---|
| Staking Rewards | 600,000,000 | Reward stakers |
| Vault Reserves | 400,000,000 | Back trading vault |
| Liquidity Pool | 400,000,000 | DEX liquidity |
| DAO Treasury | 300,000,000 | Community governance |
| Team Vesting | 200,000,000 | Team allocation (vested) |
| Buyback Reserve | 100,000,000 | Market operations |
Smart Contract Security
Immutable Parameters
The following cannot be changed after deployment:
- Tier prices and amounts
- Distribution percentages (30/20/20/15/10/5)
- TWAP sustain period (72 hours)
- Cooldown period (7 days)
- Total locked supply (99B)
Access Control
| Role | Who | What They Can Do |
|---|---|---|
| PRICE_ORACLE_ROLE | PriceUnlockHook | Update TWAP price |
| DEFAULT_ADMIN_ROLE | Deployer (then renounced) | Initial setup only |
| Anyone | Any address | Call checkAndUnlock() |
Key Design Decisions
- Permissionless unlocks - No admin can gatekeep or prevent unlocks
- Oracle decoupled - SupplyController works with any TWAP oracle, not just V4
- Initialize pattern - Solves circular dependency (token needs SC address, SC needs token)
- Remainder-safe math - Buyback amount uses remainder to avoid rounding dust
Monitoring
On-Chain Events
Each unlock emits a TierUnlocked event:
event TierUnlocked(
uint8 indexed tier,
uint256 amount,
uint256 price,
uint256 timestamp
);
Querying Current State
You can check the current unlock status at any time:
| Function | Returns |
|---|---|
currentTier() | Current tier number (0-10) |
totalUnlocked() | Total tokens unlocked so far |
totalLocked() | Remaining locked tokens |
nextTierPrice() | Price needed for next unlock |
nextTierAmount() | Tokens that will unlock next |
currentTWAP() | Current 72h TWAP price |
lastUnlockTimestamp() | When the last unlock occurred |
FAQ
Can unlocks be reversed?
No. Once tokens are unlocked and distributed, the process is irreversible.
What if the price drops after unlock?
Unlocked tokens remain distributed. The next tier simply waits for its price to be reached and sustained.
Can the admin change tier prices?
No. Tier data is set in the constructor and is immutable.
What happens after all 10 tiers unlock?
The SupplyController's job is complete. All 99B tokens will have been distributed. The contract remains on-chain as a historical record.
Who pays gas for checkAndUnlock()?
Anyone can call it. In practice, the PriceUnlockHook attempts to call it after swaps when conditions appear met, so swap users indirectly pay the gas.
Back to Token Economics | Token Overview