The P-Assets Standard is a framework for issuing and managing permissioned balances on Sui. It enables tokenization of real-world fungible assets with built-in compliance mechanisms, transfer restrictions, and regulatory controls.
- Each address has a single chest (derived address, with easy discoverability). Objects can own chests as well. This enables with account abstractions / defi protocols implementations
- Chest uses address (object) balances, so RPCs work out of the box (wallet just treats the chest address like a normal one). Wallets/explorers needs to query for the derived chest address to get balances.
- Balances can only move from chest to chest (either by safe chest-to-chest deposits, or deriving the recipient with
unsafe_calls) - When a transfer is initiated, a
SendFundsis issued, which can be resolved, on the PTB layer, calling theCommandthat is specified by the issuer. The issuer can "approve" it in their own package by presenting a witness. Any custom logic (KYC, checks) can be implemented there. - Clawback is available (chests are shared and a clawback can be initiated using the issuer's witness).
(To be added: Issuers can attach "metadata" to user's Chests (such as KYC stamps or AML stamps they issue), which they can then check on their transfer functions to restrict movement. Since chests are shared, issuers can revoke these stamps at any moment).
- Permissioned Transfers: All transfers must go through chests and be approved by custom transfer rules
- Chest-Based Architecture: Tokens can only be held in chests, with automatic balance tracking
- Flexible Policies System: Each token type has associated rules that govern transfers with jurisdiction-specific compliance
- Optional Clawback: Regulatory compliance feature that allows token recovery when legally required
- Setup: Registry is created as a shared object, token issuers register their tokens with rules
- Chest Creation: Chests are derived for each address that needs to hold tokens
- Transfers: Initiated from source chest, creating a transfer request that must be resolved by the policy
- Resolution: Token-specific smart contracts validate and approve transfers based on compliance rules
The standard uses derived objects for predictable addresses:
- Single chest per user which holds the balances of the user
- No indexing required - chest and policy addresses are deterministically computable
- One query to see all user balances via dynamic fields on their chest
Each policy contains Command instructions that tell SDKs exactly how to resolve transfers - no need to understand complex on-chain logic. SDKs simply read the command and construct the appropriate transaction.
- Ownership Proofs: Ensure only legitimate owners can initiate transfers
- Transfer Restrictions: All transfers generate hot potato requests that must be resolved by the issuer
- Immutable Clawback: Optional feature that can only be set at registration
- Regulatory Compliance: Built-in KYC/AML (or any arbitrary logic) support for issuers
- Flexibility: Custom rules per token type with extensible off-chain resolution mechanisms