Skip to main content

App Namespace Spec (app.*)

The app.* namespace defines a standard application framework on Olymp. It is separate from core.* and games.*.

Goals

  • Standardize app/module registration and metadata.
  • Provide role-based permissions per app ID.
  • Route fees into protocol treasury using ProtocolFeeCollector.
  • Remain generic and composable across domains.

AppRegistry

Purpose: Register app IDs, owners, metadata, and module contracts.

Rules:

  • appId MUST be deterministic or provided by the app owner.
  • metadataURI SHOULD point to immutable metadata (IPFS or content-addressed storage).
  • Status MUST be Active to be discoverable.
  • Modules MUST be recorded via addModule and can be suspended.

AppPermissions

Roles:

  • APP_ADMIN: manages configuration and roles.
  • APP_OPERATOR: operates app services or indexers.
  • APP_PUBLISHER: publishes app content or metadata updates.

Rules:

  • App owner is the initial admin.
  • Only admins can grant/revoke roles.
  • Role checks are enforced by AppRegistry and app modules.

AppFeeRouter

Purpose: Standard payment entry point for apps.

Rules:

  • Fees MUST be routed to ProtocolFeeCollector.
  • Optional app-owner split MAY be enabled per app.
  • Router MUST verify app status is Active.

AppEntitlements (optional)

Purpose: Subscription/entitlement model for apps.

Rules:

  • Entitlements are time-based and stored on-chain.
  • Payments are in OLYMP and routed to ProtocolFeeCollector.
  • Apps MAY require entitlement checks off-chain or on-chain.

Relationship to games.*

Games contracts remain in games.*. A game may register itself in app.* for discovery and fee routing, but this is optional.