Recently , I am working on a NFT contract. I am aware of the kiosk implementation in SUI. While minting a NFT, I created Kiosk for the user and mint the NFT and lock that NFT in the user’s kiosk and then the kioskOwnerCap is transferred to the user (These are done in PTB) so that at the end a kiosk is created for the user and NFT is locked there. To make sure the NFT never leaves the kiosk platform and me as a creator always gets the royalty, I enforced royalty rule and kiosk lock rule in the collection. Now listing , buying through kiosk , everything works fine. Me as a creator is also getting the royalty everytime a trade is being done.
Some of the issues that I faced during these steps were,
-
I couldn’t find the tradeport or bluemove testnet UI , where I can list and test the trade (to make sure even if any of the user listed my collection’s NFTs on any marketplace, I should be able to get the royalty). Let me know if you know about the testnet marketplace UI link.
→ To tackle this I launched it on mainnet for testing. -
Now the main issue is , since the NFTs of my collections are locked in my kiosk and when I try to click list on the tradeport or bluemove, an issue is raised. Specifically in tradeport, the issue looks like this
error MoveAbort(MoveLocation { module: ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000002, name: Identifier(“kiosk”) }, function: 7, instruction: 19, function_name: Some(“take”) }, 8) in command 0
The tradeport is trying to take the locked item from my kiosk , which obviously will throw the error. My assumption was when I have the items in my kiosk , and I try to list on marketplace , the items should have been listed on my kiosk. Why is tradeport trying to take the items out of my kiosk ?? -
To tackle the above problem no 2, I tried to just place the items in my kiosk instead of locking. Now when I click on list on tradeport UI, finally my nfts are being listed, but in this case the listing is not done in my kiosk. It is done somewhere else and later on let’s say user2 purchases the items , then the items are transferred to user2 wallet. Although I had the kiosk lock rule and royalty rule in the collection, I as an admin didn’t get any royalty.
I can see other collections like prime , Capy follows kiosk lock rule and royalty rule, and their items are being listed on their kiosk and also the creators are getting royalty from those collections.
What’s happening here ? Can someone explain it here ? I am posting this here so that it can be useful for new devs to understand the process of creating a NFT contract in kiosk and integrating with SUI marketplace.