Skip to main content

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:

  1. The PriceUnlockHook (Uniswap V4) reads the swap price after each trade
  2. It calls SupplyController.updateTWAP(price) to record the current price
  3. The SupplyController tracks when the price first exceeded the tier threshold
  4. If the price drops below the threshold, the timer resets
  5. 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

TierPrice TargetTokens UnlockedCumulative UnlockedApprox. Market Cap at Tier
1$0.0000032,000,000,0003B~$9K
2$0.000014,000,000,0007B~$70K
3$0.000036,000,000,00013B~$390K
4$0.00018,000,000,00021B~$2.1M
5$0.000310,000,000,00031B~$9.3M
6$0.00112,000,000,00043B~$43M
7$0.00314,000,000,00057B~$171M
8$0.0116,000,000,00073B~$730M
9$0.035,000,000,00078B~$2.3B
10$0.1022,000,000,000100B (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)

DestinationAmountPurpose
Staking Rewards600,000,000Reward stakers
Vault Reserves400,000,000Back trading vault
Liquidity Pool400,000,000DEX liquidity
DAO Treasury300,000,000Community governance
Team Vesting200,000,000Team allocation (vested)
Buyback Reserve100,000,000Market 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

RoleWhoWhat They Can Do
PRICE_ORACLE_ROLEPriceUnlockHookUpdate TWAP price
DEFAULT_ADMIN_ROLEDeployer (then renounced)Initial setup only
AnyoneAny addressCall checkAndUnlock()

Key Design Decisions

  1. Permissionless unlocks - No admin can gatekeep or prevent unlocks
  2. Oracle decoupled - SupplyController works with any TWAP oracle, not just V4
  3. Initialize pattern - Solves circular dependency (token needs SC address, SC needs token)
  4. 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:

FunctionReturns
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