Security Model

App Permissions and Security

An app is executable only when both the user and the platform allow it.

3 sectionsapp-permissions
01

Two independent gates

Wallet-local switch

enableApp / disableApp are stored at the wallet address and can only be managed by the wallet itself.

Platform Registry

The LogicRegistry owner calls setAppStatus(logic, enabled) to allow or block an app globally.

local enabled = true
global allowed = true
---------------------
runtime executable = true
02

Registry scope

  • The Registry only stores the global safety status of app logic.
  • Enabling a logic address requires deployed bytecode.
  • The Registry is UUPS-upgradeable and controlled by its owner.
03

Integration checklist

  • Read account code, Registry state, and app state from the provider on the active chain.
  • Before signing, verify chainId, verifyingContract, deadline, nonce, asset, and recipient.
  • enableApp is not an unlimited asset approval; it permits runtime entry while app-specific checks still apply.
  • If the Registry blocks an app, executeRuntimeApp rejects it even when it remains locally enabled.