MonoPlay Gaming Platform
MonoPlay is a decentralized game distribution platform built on Monolythium. It provides publishers with on-chain game registration, license management, and torrent-based distribution, while giving players a desktop launcher with sandboxed execution, community voting, and provable ownership of their game library.
Platform Components
| Component | Description |
|---|---|
| Storefront | Web-based game catalog for browsing and discovery |
| Launcher | Desktop app for downloading, managing, and launching games |
| Developer Console | Publisher portal for submitting and managing games |
| Smart Contracts | On-chain game registry, licenses, and rewards |
Smart Contracts
All contracts target Solidity ^0.8.20 and use OpenZeppelin v5.
GameRegistry
Canonical registry of game identities. Each game receives a unique on-chain ID tied to a publisher address.
- Games can be in one of four statuses: Active, Delisted, Suspended, or Archived
- Key functions:
registerGame(publisher),setGameStatus(),transferPublisher()
ReleaseRegistry
Immutable registry of game releases (versions). Each version stores a torrent hash, metadata hash, and publisher ECDSA signature. Updates are published as new releases rather than mutations.
- Fields:
gameId,version,torrentHash,metadataHash,signature - Uses ECDSA to verify that the publisher signed the release
LicenseRegistry
Registry of game ownership entitlements. Supports multiple license types for flexible monetization.
- License types: Free, PaidPerpetual, PaidSubscription, KeyGrant
SeederRewards
Proof-of-seeding reward distribution system. Operators create time-bounded epochs with reward pools, seeders submit proofs of participation, and rewards are distributed proportionally.
- Epoch lifecycle: Created (Active) -> Finalized
- Key functions:
createEpoch(),submitProof(),distributeRewards(),claimReward()
SubmissionFees
Manages one-time submission fees and refundable deposits for publishers. The submission fee (default 1 LYTH) is sent directly to the treasury. The refundable deposit (default 10 LYTH) is held in the contract and can be slashed for policy violations or refunded to compliant publishers.
For Publishers
Getting Started
- Connect your wallet through the Developer Console
- Complete KYC verification to obtain a verified publisher account
- Pay submission fee and deposit (1 LYTH fee + 10 LYTH refundable deposit)
- Register your game to obtain a unique on-chain game ID
- Upload your build through the Developer Console
- Sign the release with your wallet once approved — the ECDSA signature is stored on-chain
Developer Console
The Developer Console is a web application where publishers manage their games:
- Wallet-based authentication (EIP-191 challenge-response)
- KYC onboarding
- On-chain fee payment
mono.jsonmanifest validator- Game submission and release management
- Engagement analytics dashboard
mono.json Manifest
Each game includes a mono.json manifest file specifying platform entrypoints and save paths:
{
"entrypoint": {
"windows": "game.exe",
"linux": "game.x86_64",
"macos": "game.app/Contents/MacOS/game"
},
"save_path": "saves/"
}
For Players
Browsing and Discovery
Players can browse games through the Storefront web application or the Launcher desktop app:
- Home page with featured games
- Browse page with filtering by category, platform, and tags
- Individual game detail pages with descriptions, screenshots, and system requirements
- Search functionality
- Personal library view
Purchasing and Licensing
Games can be free or paid. When a player acquires a game, a license is recorded on-chain in the LicenseRegistry:
- Free: No cost, no expiry
- PaidPerpetual: One-time purchase, permanent ownership
- PaidSubscription: Time-limited access with an expiry date
- KeyGrant: Issued by the publisher (promotional keys, bundles)
License ownership is verifiable on-chain and tied to the player's wallet address.
Playing Games
The MonoPlay Launcher is a desktop application that manages the player's game library:
- Download: Games are distributed via torrent-based downloads with integrity verification
- Install: Downloaded builds are extracted and stored locally
- Launch: Games are launched with optional sandbox isolation for security
- Playtime tracking: Play sessions are tracked for voting eligibility and engagement metrics
Launcher Security
Sandboxed Execution
The launcher supports OS-specific sandboxing to isolate game processes from the host system:
| Platform | Isolation |
|---|---|
| macOS | Deny-default policy; restricted file and network access |
| Linux | Namespace isolation; deny access to home directory except the game directory |
| Windows | Low integrity level; limited process privileges |
Sandboxing is optional and can be toggled per game. When enabled, the game process runs with minimal privileges and cannot access files or network resources outside its designated directories.
Security Scanning
All uploaded game builds are automatically scanned for malicious content before they appear in the catalog. Builds are analyzed for suspicious patterns including wallet theft, credential harvesting, and unauthorized network activity. Each scan produces a risk verdict that determines whether a build is approved.
Voting System
Players can vote on games using a thumbs up/down system with anti-manipulation protections:
- Playtime eligibility: At least 15 minutes of recorded playtime required before voting
- Cooldown: 1-hour cooldown between votes on the same game
- Self-vote prevention: Publishers cannot vote on their own games
- Ranking: Games are ranked using Wilson score confidence intervals rather than raw vote counts
Engagement Scoring
Games receive an engagement score computed from multiple signals including playtime data, download counts, vote ratios, and community activity. The catalog can be sorted by engagement score to surface the most actively played and well-received games.
Related
- Deploying Contracts -- Deploy Solidity contracts on Monolythium
- MetaMask Setup -- Connect your wallet