본문으로 건너뛰기

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

ComponentDescription
StorefrontWeb-based game catalog for browsing and discovery
LauncherDesktop app for downloading, managing, and launching games
Developer ConsolePublisher portal for submitting and managing games
Smart ContractsOn-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

  1. Connect your wallet through the Developer Console
  2. Complete KYC verification to obtain a verified publisher account
  3. Pay submission fee and deposit (1 LYTH fee + 10 LYTH refundable deposit)
  4. Register your game to obtain a unique on-chain game ID
  5. Upload your build through the Developer Console
  6. 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.json manifest 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:

  1. Download: Games are distributed via torrent-based downloads with integrity verification
  2. Install: Downloaded builds are extracted and stored locally
  3. Launch: Games are launched with optional sandbox isolation for security
  4. 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:

PlatformIsolation
macOSDeny-default policy; restricted file and network access
LinuxNamespace isolation; deny access to home directory except the game directory
WindowsLow 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.