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().