Draw Roulette (NFT holders)
Access prerequisites
- Permission (module):
manageToken - License/Feature: None specific (depends on tokenization/NFTs)
- Access: GENERAL → Tokenization → NFTs/Assets → Roulette button on an NFT (route
/roulette/:id)
What it is / when to use
A draw/giveaway tool among the holders of a specific NFT. The screen loads all owners of the asset given in the URL (/roulette/:id), cross-references the user database to display email/name, and provides a full-screen roulette that randomly selects a winner.
Use it for promotions of the type "whoever holds NFT X enters the draw for a prize". Access is from the NFT listing (Tokenization), not through a dedicated menu item.
Prerequisites
- Permission:
manageTokenregistered for the operator's role (dual permission: CPM enum + dynamic module in the DB). The route guard requires this module. - License/Feature: depends on the tenant having tokenization/NFTs enabled.
- Dependencies on other screens: the NFT/collection must exist and have holders. Access starts from Tokenization → NFTs/Assets (
/manage-assets), via a button that navigates toroulette/<assetId>.
Step by step
- In Tokenization → NFTs/Assets, locate the NFT and click the action that opens the Roulette.
- The screen lists the holders (customer, email, token, price paid).
- (Optional) Use Show/Hide price paid to display the amount paid by each holder.
- Click Spin to open the roulette in full screen and draw a winner.
- Click a holder to see Owner details.
- Use Export CSV to download the user base flagging who holds the NFT.
Filters and columns
| Filter / Column | What it shows | Data source |
|---|---|---|
Customer (customer) | NFT holder | getAllOwners(assetId) cross-referenced with the user database |
Email (email) | Holder's email | customer_id → user map |
| Token | Token/NFT identifier | owner record |
Price paid (price_paid) | Amount the holder paid | shown only with the toggle on; formatted via BigNumber (2 decimal places) |
| Show price paid | Toggles the price column on/off | showPricePaid (client) |
Actions and modals
- Spin: opens the
RouletteFullScreenmodal with all holders and visually draws a winner (the roulette rendering limit is handled inside the modal to support many participants). - Owner details: opens
RouletteOwnerDetailsModalComponentwith the selected holder's data. - Export CSV: downloads
users_<date>.csvwith the user base and ahaveNFTcolumn (Yesfor those who hold the raffle NFT). - Back: returns to the previous screen (
location.back()).
Business rules / cautions
Attention
- The draw considers only the current holders of the loaded asset — anyone who sold/transferred the NFT before loading is excluded.
- The price paid is sensitive information: keep the column hidden during public presentations.
- The roulette result is a visual draw on the client; record the winner manually for prize purposes (the screen does not persist the result).
- Financial values: the price paid is treated as BigNumber and displayed with 2 decimal places — non-finite values appear as "-".