A net-deflation engine that can reopen now, throttles itself as supply shrinks, and cannot be trick-printed through stale prices.
Context & Goals
2022 taught two hard lessons:
- Unlimited capacity kills – raising
base_pool
and shorteningpool_recovery_period (PRP)
let traders mint faster than the market absorbed, destroying LUNC. - Hard $1 peg is lethal – valuing UST at $1 while it traded at pennies forced hyper-inflation.
Today (28 May 2025) we sit on:
- 6.50T LUNC
- 6B USTC
- Burns are ≈ 1.3B LUNC/month (0.02%)
The community wants the Market Module (MM) back as soon as possible to restore utility and fee flow — but will only accept continuous net supply decline.
How the Market Module Actually Mints
2.1 base_pool
— the “virtual SDR reserve”
When you swap USTC → LUNC (or vice versa), the module simulates a virtual SDR pool. It does:
- Converts USTC to SDR using oracle price
- Balances the virtual constant-product AMM
- Updates SDR “debt” from the swap
Formula (simplified):
ΔLUNC_out ≈ ( SDR_spent / SDR_pool_after ) × LUNC_pool_before
A larger base_pool
lets a single swap mint more LUNC before the price shifts.
2.2 PRP — the Refill Timer
After a swap, a deficit d
is remembered.
Each block: d_next = d_current × (1 − 1 / PRP)
- Short PRP → fast refill → can mint again soon
- Long PRP → slow refill → minting delayed
Daily Mint Capacity:
mint_cap_day ≈ 2 × base_pool / (PRP / 14,400)
(14,400 ≈ blocks per day on Terra Classic)
Net-Deflation Rule (Hard, Epoch-Based)
At the first block H₀
of every 30-day epoch:
taxburn_30d_token = Σ burns of token [H₀−30d , H₀−1] allowance_token = min(taxburn_30d_token × 0.80 , 100,000 SDR)
Each token (USTC and LUNC) has:
- Independent mint limit
- 80% of tax burns re-mintable
- 100k SDR max cap per token
Once allowance_remaining_token
hits 0, minting stops until the next epoch.
Adaptive base_pool
& PRP for the Epoch
4.1 Pick a Burst Factor
Default F = 0.07
→ Max 7% of allowance printed per day
desired_daily_cap = allowance × F
4.2 Solve for base_pool
base_pool_raw = desired_daily_cap × PRP / (2 × 14,400)
4.3 Supply-Scaled PRP
PRP = max(14,400, 14,400 × (S / 1T))
Example:
6.5T supply → PRP ≈ 93,600 blocks (6.5 days)
4.4 Final Clamps
base_pool = min(base_pool_raw, 0.00010 × mcap_in_SDR, 5,000,000 SDR)
Example for the First Epoch (Today)
Item | Value |
---|---|
burns_30d (B₀) | 1.3B LUNC |
allowance = 0.8 × B₀ | 1.04B LUNC ≈ 81k SDR |
PRP (6.5T supply) | 93,600 blocks |
desired_daily_cap (F=0.1) | 0.104B LUNC |
base_pool_raw | ≈ 8.3k SDR |
base_pool after clamps | 8.3k SDR |
theoretical mint/day | ≈ 32M LUNC (2.6k SDR) |
Since 32M < 104M, the PRP clamp is the active brake, not the burst factor F
.
Live Price Input & Anti-Manipulation Guards
Component | Rule |
---|---|
Price vote period | 5 blocks ≈ 30s |
USTC price | price_uusd(USTC) = voting-power-weighted median this period |
Quorum auto-kill | If <50% VP for 25 blocks → MM.enabled = false until 5 periods OK |
TWAP sanity clamp | Swap fails if peg price differs >10% from 45-block CEX TWAP |
Stable→stable route | Hard-disabled in code (ErrStableSwapDisabled ) |
Absolute Brakes & Governance
- A ⅔ super-majority can close the Market Module (MM) at any time.
- Caps cannot be raised via governance.
- MM is inherently capped by: – 30-day burn stats – Base pool clamps – Oracle enforcement
Scenarios
7.1 Bull-but-Boring (Utility Returns)
LUNC in Normal Growth Scenario
LUNC burns double to 2B/month by epoch 3. PRP still >3 days, base_pool limited by allowance.
Epoch | Burns | Allowance | Mint (≤) | Net Δ | Supply |
---|---|---|---|---|---|
1 | 1.3B | 1.04B | 0.78B | –0.52B | 6.4995T |
2 | 1.6B | 1.28B | 1.02B | –0.58B | 6.4989T |
3 | 2.0B | 1.60B | 1.24B | –0.76B | 6.4981T |
Total LUNC deflation after 3 epochs: 1.9B (0.03%)
USTC in Normal Growth Scenario
Epoch | Burns | Allowance | Mint (≤) | Net Δ | Supply |
---|---|---|---|---|---|
1 | 50M | 40M | 30M | –20M | 5.98B |
2 | 75M | 60M | 48M | –27M | 5.95B |
3 | 100M | 80M | 64M | –36M | 5.91B |
Total USTC deflation after 3 epochs: 83M (1.38%)
7.2 Flash-Crash & Oracle Outage
Event:
USTC dumps to $0.004; two top validators go offline. Quorum falls below 50% for 30s → MM shuts automatically.
Burns collapse during the next epochs.
LUNC in Crisis
Epoch | Burns | Allowance | Mint | Net Δ |
---|---|---|---|---|
crash | 0.2B | 0.16B | 0 | –0.20B |
+30d | 0.2B | 0.16B | ≤0.16B | –0.04B |
+60d | 0.2B | 0.16B | ≤0.16B | –0.04B |
USTC in Crisis
Epoch | Burns | Allowance | Mint | Net Δ |
---|---|---|---|---|
crash | 10M | 8M | 0 | –10M |
+30d | 10M | 8M | ≤8M | –2M |
+60d | 10M | 8M | ≤8M | –2M |
(*) Oracle kill-switch triggered → inflation = 0
Even in a disaster, deflation continues for both tokens.
Spread-Fee Policy for MM Swaps
Condition | Fee | Notes |
---|---|---|
MM disabled | — | No swap, no fee, no burn |
MM enabled & allowance > 0 | 0.35% of notional | Collected in output asset (LUNC or USTC) |
Allowance exhausted | — | Swap refused |
- 0.35% keeps arbitrage profitable
- No double tax – replaces the 0.5% chain burn tax
- Fee split: 50% burn, 50% Oracle Pool
Oracle Module Compatibility
To reactivate MM with live pricing:
- ✅ Add USTC to the oracle vote set
- ✅ Remove $1 peg assumption
- ✅ Add more CEX/aggregator price feeds
- ✅ Validators must update feeders
- ⚠️ Feeder binary rewrite is recommended – Support modern APIs – Add fallback logic – Improve error handling
These changes must be deployed before reopening MM. Otherwise, price input will be invalid → MM disabled.
Roadmap
- 🔧 Code merge & audit (~500–1,000 LOC)
- 🧪 Public testnet with simulated price spikes, quorum drops, burn bursts
- 🚀 Mainnet upgrade (two-step): – Deploy MM in inactive mode – Activate at next epoch boundary post-burn stats verification
- 📊 Dashboards/API: – Show
taxburn_30d
– Showallowance_remaining
- 📅 90-day post-mortem: – Adjust 80% coefficient or
F
only via hard fork
What We Gain
- ✅ Immediate reopening — utility & arbitrage from day 1
- 📉 Guaranteed deflation — must shrink supply every epoch
- 🧠 Oracle-safe — 30s lag = okay, 75s lag = MM shutdown
- 🔁 Elastic throttle — refill slows as supply shrinks
- 🔥 Spread fees: – 50% burn – 50% to Oracle Pool
The printer is leashed to yesterday’s bonfire — and the leash gets shorter as the fire dies out.
Voluntary Burns
At present, voluntary burns (e.g., Binance, user burns to burn module terra1...anxu
) are a large portion of total burns.
Proposal: Exclude voluntary burns from taxburn_30d
calculation to:
- Keep voluntary burners engaged
- Avoid reducing minting capacity unnecessarily
Any allowance increase should be discussed after testing and deployment.
Important Notes
- Burn data cannot be predicted
- MM behavior depends on assumptions and must be tested
- Adjustments to parameters like
F
and the 80% ratio should be done on testnet first