Fighter Legacy & Metadata Architecture
#11.1 The Fighter Legacy System
Every NFT accumulates a permanent fight history that cannot be reset. When the NFT is sold, the new owner inherits the full career and reputation. Reputation is an attribute of the NFT, not of the wallet that holds it.
Tracked Elements
- Win/loss record, KOs dealt and received, highest ELO rank ever achieved, longest winning streak
- Signature victories (beat #1 fighter, season champion KO, upset victories)
- Titles: Head Hunter (10 head KOs), Leg Breaker (8 leg KOs), Iron Wall (15 counter blocks), The Undefeated (10 win streak), Season Champion
- Achievements: Still Mind, The Unyielding, Iron Gaze (Stare), Untouchable (Dodge), The Mountain (Breath), Disciplined / Devoted / The Iron Heart (Train streaks), Clan Champion of Season X, etc.
- All lore chapters generated about the ROKI in the ROKI Verse
- Head-to-head records against specific rivals
#11.2 Technical Architecture — Path 1 to Path 3 Migration
Launch on Path 1 (off-chain database). Migrate to Path 3 (hybrid on-chain snapshots) when the ecosystem is mature enough to justify the engineering investment.
Path 1: Off-Chain Database (Launch)
- NFT image and base traits are immutable on-chain (Metaplex Token Metadata)
- All dynamic data lives in MongoDB, keyed to NFT token ID, not wallet address
- Updates are free and instant
Path 3: Hybrid On-Chain Snapshots
- Routine data stays in the database (matches, ELO, daily stats)
- Milestone events get written permanently to on-chain metadata via Metaplex updateMetadataAccount
- On-chain writes cost a fraction of a cent on Solana
- Gives collectors true decentralized ownership of reputation
#11.3 Launch-Time Architectural Decisions
- DO NOT revoke the NFT collection's metadata update authority at mint. Keep it with a controlled multisig.
- Use IPFS or Arweave for decentralized storage of images and JSON.
- Follow Metaplex Token Metadata standard strictly.
- Key the database by token ID from day one.
- Timestamp every significant event.
- Keep a separate ‘achievements’ field — distinct from routine stats.
- Log all user actions even if not yet displayed.
#11.4 Database Schema (FighterLegacy Collection)
Document structure in MongoDB, one document per NFT token: tokenId (number, unique, keyed to NFT); contractAddress (string); createdAt (date); style (string); techniques (array of technique IDs); elo (number); wins/losses (numbers); kos (number); kosDealt (object: head/body/arms/legs counts); achievements (array of objects with name, date, metadata, source [clash/zen/dojo/stare/dodge/breath/train]); dojoConditioning (object per zone); minigameStreaks (object: breathDailyStreak, trainDailyStreak); titles (array of strings); rivalries (array of head-to-head records); loreChapters (array of lore IDs); lastUpdated (date).