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:
appIdMUST be deterministic or provided by the app owner.metadataURISHOULD point to immutable metadata (IPFS or content-addressed storage).- Status MUST be Active to be discoverable.
- Modules MUST be recorded via
addModuleand 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
AppRegistryand 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.