Economic Model
Dual-currency architecture, token flow mechanics, and the economics of competitive play.
Overview: Two-Currency Architecture
Monsuta Core uses a dual-currency model. This is not optional — it is a core design decision that prevents the inflation loop that kills most blockchain games.
| Currency | Role | Token (Faded Monsuta) |
|---|---|---|
| Gameplay currency | Internal resource. Earned through play, spent on game features. | THC (ERC-20 on Avalanche) |
| Settlement currency | External value layer. Funds prizes, entry fees, sponsorships. | AVAX (native) or any ERC-20 |
Why Not One Currency?
A single-token model creates a toxic loop:
- Players earn the same token they use to enter competitions
- Supply grows with every match played
- Demand stays flat
- Token price falls → prizes are worth less → players quit → token falls further
Separating the currencies isolates speculation from gameplay mechanics.
THC — The Gameplay Currency
FadedMonsutaTHC is an ERC-20 deployed on Avalanche C-Chain. It is the first implementation of Monsuta Core's gameplay currency pattern.
Key Properties
decimals = 4(matching WAX precision)totalSupplystarts at zero and is minted/burned by the bridge- No admin minting: tokens only created via bridge
claim()with valid oracle signatures - Bidirectional: WAX ↔ Avalanche via the teleport bridge
How THC Enters Circulation
| Source | Mechanism |
|---|---|
| WAX → AVAX bridge | Player bridges existing WAX THC into Avalanche |
| Match rewards | Game server awards THC after match (off-chain ledger → claim) |
| Season milestones | Awarded at season end based on rank |
| Achievement completion | One-time drops for specific accomplishments |
How THC Exits Circulation
| Sink | Mechanism |
|---|---|
| Crafting costs | Consumed when crafting items or blending |
| Upgrade fees | Spent to enhance existing NFTs |
| Entry tickets | Spent to enter specific game modes |
| AVAX → WAX bridge | Burns on Avalanche, releases on WAX |
Design rule: THC is a resource, not a yield product. Every source of new THC must correspond to a game mechanic that consumes it.
AVAX — The Settlement Currency
AVAX is used for competitive prize custody and sponsorship. It does not enter gameplay mechanics.
Who Provides AVAX
| Actor | How |
|---|---|
| Players | Entry fees deposited when registering for funded tournaments |
| Sponsors / guilds | Direct fund() call to the Prize Pool contract |
| Game operator | Initial pool seeding for launch tournaments |
Where AVAX Goes
| Destination | Mechanism |
|---|---|
| Winners | claim() call by winner address, directly from smart contract |
| Treasury | Configurable fee % sent at submitResults() time |
| Unclaimed sweep | After 30-day deadline, remaining balance swept to treasury or owner |
Token Flow Diagram
WAX (legacy) Avalanche C-Chain
────────────── ──────────────────────────────────────
WAX THC balance AVAX (settlement currency)
│ │
│ bridge WAX→AVAX │ sponsors + entry fees
▼ ▼
AVAX THC balance PrizePool Contract
(FadedMonsutaTHC) │
│ submit results
│ gameplay activity │
▼ ▼
Earn THC via Winners call claim()
match rewards │
│ ▼
▼ Player AVAX balance
Spend THC on
crafting / upgrades
│
▼
THC exits circulation
(burned by game mechanics)
Prize Pool Economics
Each PrizePool instance is an isolated contract. The financial model per pool:
totalFunded = Σ(entry fees) + Σ(sponsor deposits)
treasuryFee = totalFunded × treasuryFeePercent / 100
availablePrizes = totalFunded - treasuryFee
assert: Σ(winner amounts submitted) ≤ availablePrizes
The server calculates exact payout amounts off-chain based on prizeSplit[] and then submits them. The contract only verifies the math holds.
Example (64-player tournament, 0.1 AVAX entry, 5% treasury fee, [50/30/20] split):
totalFunded = 64 × 0.1 = 6.4 AVAX
treasuryFee = 6.4 × 0.05 = 0.32 AVAX
availablePrizes = 6.08 AVAX
1st place: 6.08 × 0.50 = 3.04 AVAX
2nd place: 6.08 × 0.30 = 1.824 AVAX
3rd place: 6.08 × 0.20 = 1.216 AVAX
Staking Economics
NFTStaking.sol supports three reward models:
| Model | How Rewards Are Calculated |
|---|---|
FixedEmissions | rewardPerEpoch tokens distributed per epoch, regardless of pool size |
Pooled | rewardPool × pooledDistributionBps / 10000 distributed per epoch |
Hybrid | Fixed emissions first, then pooled percentage on the remainder |
NFT weight determines share of each epoch's distribution:
userShare = userWeight / totalWeight
epochReward = computeDistributable()
userEpochEarning = epochReward × userShare
Weight mode is either Flat (all NFTs = weight of 1) or Manual (owner assigns per-token weights — useful for rarity tiers).
Economic Health Indicators
A healthy economy shows:
| Indicator | Healthy Sign | Warning Sign |
|---|---|---|
| THC supply growth | Grows proportional to new players bridging in | Grows faster than active crafting consumption |
| Tournament participation | Consistent AVAX deposits from players and sponsors | All pools seeded by game operator only |
| Crafting activity | High % of earned THC being spent | THC accumulating in wallets with no spending |
| Staking distribution | Broad distribution across many wallets | 1-2 wallets holding most staking weight |
Configurable Parameters Per Game
Any game using Monsuta Core defines its own economic config:
| Parameter | Description |
|---|---|
settlementToken | What players pay prizes with (AVAX = address(0), or any ERC-20) |
entryFee | Cost to enter a pool per player |
treasuryFeePercent | % of pool routed to treasury (0–100) |
prizeSplit[] | Payout distribution e.g. [50, 30, 20] |
maxParticipants | Hard cap per pool (0 = unlimited) |
rewardModel | Fixed, Pooled, or Hybrid staking |
epochDuration | How often staking rewards distribute |
lockDuration | How long staked NFTs are locked |
rewardPerEpoch | Fixed emissions amount per epoch |
pooledDistributionBps | Pooled % in basis points (e.g. 1000 = 10%) |
These are set at contract initialization. No code changes needed to tune the economics for a different game.