Permissions

System Modules and Permissions

System modules come first. Apps inherit a consistent asset-permission model from them.

3 sectionssystem-modules
01

TokenManage

TokenManage is a built-in system app following ERC-7204.

It provides a unified model for approvals, batched approvals, and transfers, so applications do not need to re-implement a wallet asset-control layer.

  • tokenApprove(): set allowance for a spender
  • tokenApproveForAll(): set wallet-wide approvals
  • tokenTransfer(): validate and consume allowance during transfer
  • tokenAllowance() / tokenIsApproveForAll(): query current permission state
02

NFTManage

NFTManage also exposes permit flows such as `nftApproveWithSig`.

This shows that Moss applies the same modular asset-control philosophy to NFTs as well.

  • Supports ERC-7564 Permit
  • Frontend can auto-read nonce and ownerIndex
  • Suitable for NFT markets, signed listings, and delegated execution
03

Authorization Model

  • System apps can be trusted by default or marked as system logic by the Registry.
  • Non-system logic must be explicitly authorized via methods such as authorizeLogic().
  • App NFT ownership and authorization state jointly determine availability.
  • Users can revoke permissions through revokeLogic().