Example Asset Patterns
Reference these examples to learn common asset patterns on Sui, including loyalty tokens, regulated coins, closed-loop tokens, fixed supply coins, in-game currencies, and kiosk-based tokenized assets. Select a subtopic below to see the pattern it covers.
What are asset patterns on Sui?
Sui supports several standard patterns for creating and managing digital assets onchain. Each pattern defines how an asset is minted, transferred, spent, or restricted. Choosing the right pattern depends on your use case: whether the asset is freely tradeable, restricted to specific actions, or tied to a particular platform or ecosystem. For instance, choose a closed-loop token when spending must be limited to a set of approved services, because the token's policy object lists those services and fails any transaction that targets a service that is not registered.
Asset patterns on Sui are implemented as Move modules. Each pattern uses Sui's object model to represent the asset and its associated policy. The Move type system enforces the structure of each pattern, while the policy objects a pattern defines are checked at runtime during transaction execution, so invalid operations cause the transaction to fail.
For example, a Closed-Loop Token requires a TokenPolicy object that lists approved services. When a user tries to spend the token, the policy checks whether the target service is registered. If it is not, the transaction fails.
Fixed Supply
Initialize a coin with a fixed total supply, then lock the supply to prevent further minting using dynamic fields and freezing.
Loyalty Tokens
Use the Sui Closed-Loop Token standard to create tokens that are only valid within specific workflows and services. One example of Closed-Loop Tokens is a loyalty token.
In-Game Currencies
Use the Sui Closed-Loop Token standard to create assets that you can use as currency within a game application.
Soulbound NFTs
Use Sui Move struct abilities and the Sui framework transfer module to make an NFT soulbound (non-transferable).
Staking Rewards
Implement a generic staking pool where users deposit stake tokens and earn reward tokens proportionally over time, using the Synthetix reward-per-token accumulator pattern for O(1) gas cost regardless of staker count.
NFT Rentals
An example that enables users to rent NFTs according to the rules of a provided policy instead of owning them outright.
Kiosk Joining Patterns
Use the Kiosk standard to join tokenized assets while enforcing transfer policies, and learn how to extend the pattern with custom burn tickets and a redesigned admin model that separates Treasury and AdminCap.
WebAssembly and Template Pattern
Use the WASM bytecode-template library to serialize, edit, and deserialize Move bytecode in a web environment, enabling you to create and publish new asset tokenization types without recompiling Move source code.