Skip to main content

Roadmap

What we are building, in what order, and why each piece matters.


The Single Sentence​

We are building the economic settlement layer for competitive games, starting with the contracts that handle real money, and working outward to the SDK and integration layer.


The Core Claim​

The game server for Faded Monsuta can put AVAX into a prize pool, run a tournament, submit results, and players can claim their prizes — all in a way where the game developer literally cannot steal the money.

That is the central value proposition. Everything else is scaffolding.


System Components​

The platform is built in layers, from on-chain infrastructure up to game integration:

Layer 1 — On-Chain Contracts​

The foundation. Smart contracts deployed on Avalanche C-Chain that handle all trustless settlement:

ContractPurpose
FadedMonsutaTHC.solERC-20 gameplay token with bridge mint/burn mechanics
MonsutaNFT.solUpgradeable ERC-721 — batch minting, locking, royalties
CraftingRecipes.solRecipe-based item creation — trustless + server-gated
AchievementsRegistry.solOn-chain achievement attestations — EIP-712 issuance
NFTBridge.solVault-based NFT bridging with threshold oracle signatures
PrizePool.solTournament prize escrow with no admin withdrawal
PrizePoolFactory.solPool deployment and registry
NFTStaking.solNon-custodial NFT staking with Merkle epoch distribution

WAX-side contracts:

ContractPurpose
teleporteosToken bridge — deposit, teleport, oracle signing
nftbridgeNFT bridge — vault locking, oracle release

Layer 2 — Oracle & Worker Network​

Off-chain processes that bridge the gap between chains and handle computation:

WorkerPurpose
Token Bridge OracleBidirectional WAX ↔ Avalanche token attestation
NFT Bridge OracleWAX ↔ Avalanche NFT translation and signing
Metadata RouterDynamic NFT trait generation via mathematical token IDs
Staking DistributorOwnership scanning, weight computation, Merkle tree publishing

Layer 3 — SDK​

The JavaScript layer that game servers use to interact with contracts:

ClientPurpose
FactoryClientDeploy and manage prize pool instances
PrizePoolClientFund, register, activate, submit results
EventListenerReal-time contract event streaming

Layer 4 — Game Server Integration​

The connection point between Monsuta Core and the game:

Match ends
→ game server records result internally
→ if match was a prize pool match:
→ server calls pool.submitResults(winners)
→ if it was a ranked match:
→ season module updates ELO + leaderboard internally
→ at season end: server calls pool.submitResults(seasonStandings)

Layer 5 — Competition Library​

Pure JavaScript modules for competitive game infrastructure:

ModulePurpose
calculateElo()ELO rating adjustments
SeasonSeason lifecycle, match recording, finalization
LeaguePromotion/relegation between tiers
LeaderboardReal-time standings

The Build Order (And Why)​

Phase 1 — Deploy Contracts​

Deploy all smart contracts to Avalanche Fuji testnet. Verify on Snowtrace. Grant roles.

Why first: You cannot build the SDK against contracts that aren't deployed. You cannot do end-to-end testing without real contract addresses. Deploy first, everything else unblocks.


Phase 2 — Economy SDK​

Build the JS layer that wraps contract calls into a clean developer API:

const factory = new FactoryClient({ provider, signer, factoryAddress });
const pool = await factory.createPool({ entryFee, prizeSplit, ... });
const pool = new PrizePoolClient({ provider, signer, poolAddress });
await pool.fund('10.0');
await pool.submitResults(winners);

Why: Every integration point with the game server needs this. It's the missing piece between "contracts exist" and "game server uses them."


Phase 3 — Game Server Integration​

Wire the Faded Monsuta game server to use the SDK:

  • Tournament creation flow: server deploys pool via FactoryClient
  • Match end flow: server calls submitResults() for bracket finals
  • Season end batch: server calls submitResults() for season pool
  • Player claim notification: game UI shows claimable prize, links to wallet

Why: This is what proves the system works end-to-end.


Phase 4 — Competition Library​

Extract ELO/season/league logic into a testable, installable module.

Why: The game server already handles this internally. This phase is about making it clean, reusable, and independently testable.


Phase 5 — Bridge to Mainnet​

Production deployment with correct oracle configuration:

  • Raise oracle threshold to ≥ 3
  • Register 3+ independent oracle accounts
  • Move oracle keys to KMS
  • Set CONFIRMATIONS_REQUIRED = 12

Why: The bridge code works. Mainnet just needs correct security config.


Phase 6 — NFT Staking Integration​

Deploy staking contract, whitelist collections, fund the reward pool, launch distributor worker.


The Dependency Graph​

Phase 1: DEPLOY CONTRACTS
│
▼
Phase 2: BUILD SDK ──────────────────────────────┐
│ │
▼ │
Phase 3: GAME SERVER INTEGRATION │
│ Phase 6: STAKING INTEGRATION
▼
Phase 4: COMPETITION LIBRARY (parallel with 4+)

Phase 5: MAINNET BRIDGE (security config, parallel anytime)

Phases 4, 5, and 6 can run in parallel once Phase 3 is done.


What Success Looks Like​

A working system means all of the following are true:

  • Token bridge works end-to-end: WAX → Avalanche and Avalanche → WAX with real tokens
  • NFT bridge works end-to-end: WAX NFTs vault-locked, minted on Avalanche, reversible
  • MonsutaNFT and CraftingRecipes functional — batch minting, trustless and server-gated crafting
  • AchievementsRegistry functional — type registration, direct and signature-based issuance
  • PrizePool and Factory deployed and verified
  • Game server can create a prize pool, run a tournament, and submit results to chain
  • At least one player successfully claims a prize from the contract
  • NFT staking deployed — at least one player staked and claimed epoch rewards
  • All of the above documented with transaction hashes

The core claim is proven: trustless economic settlement for a competitive game, without a centralized fund custodian.


What We Are NOT Building (Yet)​

FeatureWhy Not Now
Treasury routing contractCan manually collect treasury fees initially
npm package registrySDK can be local import — package publishing isn't required
Multi-game supportOne game first — prove it works, then generalize
Analytics dashboardRead chain directly — no need for aggregation layer