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.
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 rules of the pattern at compile time, so invalid operations are rejected before they reach the network.
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 separated admin capabilities.
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.