Terra Classic Market-Module 2.0

0
281

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 shortening pool_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

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)

ItemValue
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 clamps8.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

ComponentRule
Price vote period5 blocks ≈ 30s
USTC priceprice_uusd(USTC) = voting-power-weighted median this period
Quorum auto-killIf <50% VP for 25 blocks → MM.enabled = false until 5 periods OK
TWAP sanity clampSwap fails if peg price differs >10% from 45-block CEX TWAP
Stable→stable routeHard-disabled in code (ErrStableSwapDisabled)

Absolute Brakes & Governance

  • ⅔ 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.

EpochBurnsAllowanceMint (≤)Net ΔSupply
11.3B1.04B0.78B–0.52B6.4995T
21.6B1.28B1.02B–0.58B6.4989T
32.0B1.60B1.24B–0.76B6.4981T

Total LUNC deflation after 3 epochs: 1.9B (0.03%)

USTC in Normal Growth Scenario

EpochBurnsAllowanceMint (≤)Net ΔSupply
150M40M30M–20M5.98B
275M60M48M–27M5.95B
3100M80M64M–36M5.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

EpochBurnsAllowanceMintNet Δ
crash0.2B0.16B0–0.20B
+30d0.2B0.16B≤0.16B–0.04B
+60d0.2B0.16B≤0.16B–0.04B

USTC in Crisis

EpochBurnsAllowanceMintNet Δ
crash10M8M0–10M
+30d10M8M≤8M–2M
+60d10M8M≤8M–2M

(*) Oracle kill-switch triggered → inflation = 0

Even in a disaster, deflation continues for both tokens.


Spread-Fee Policy for MM Swaps

ConditionFeeNotes
MM disabledNo swap, no fee, no burn
MM enabled & allowance > 00.35% of notionalCollected in output asset (LUNC or USTC)
Allowance exhaustedSwap 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  – Show allowance_remaining
  • 📅 90-day post-mortem:  – Adjust 80% coefficient or Fonly 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_30dcalculation 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

StrahCole ✰

Vegas

LEARN MORE

LEAVE A REPLY

Please enter your comment!
Please enter your name here