I just threw some Bricks into hundreds of wallets across Radix.
If you’ve found one, congrats — you can now start playing with a lil' experimental NFT collection to use subintents. Welcome to the TAOX.
Get started on: https://t.co/wJjSHyhQjL
Here’s a quick walkthrough of what it is and how it works 🧱
Yeah love this movement, Kiosks are frustrating for users and devs alike. There's such a sacrifice in having such an opinionated way to handle NFTs, cutting short extensibility and new ideas of NFT behaviour.
There some weird dynamic of trying to cut off all the creativity you can have when you think of every asset as an object, but then Kiosks feel like you're warping all that cool stuff just to try and mimic what an NFT means on Eth or whatever. Digital objects is such a flex on Sui, but forced to conform with out-dated ideas of NFTs.
The Outpost system I built on Radix is pretty much the same as Kiosk and uses the same principles of creator configs (policies) and a call back mechanism (hot potato pattern)... I just made a few adjustments that open it up a bit more that would be cool for Kiosks too I think:
1. NFTs only live in outpost when active for trading - even if they have royalty enforcement.
2. Developers can extend the rules/policy for NFT exchange - granular control like individual royalty per individual NFT if you like.
3. Developers have access to intercept the call-back mechanism - e.g. a developer could set up some other custom code to be triggered by an NFT being moved/traded.
While I'm getting up to speed with Sui Move, I'm still learning and would love to see something change on this from other long-standing sui devs.
@BL0CKRUNNER Yehp read move-book 'cover to cover'. That was a really nice resource, especially coming from Rust.
Your articles on Medium are great too, unit testing one was a particularly helpful digestif after just reading docs.
I've always thought of personas power being they are your login username and personal data. Then, your 'accounts' are more like your different debit/credit cards.
I don't necessarily want to hookup my same cards when I login somewhere new, but I'd probably be more certain about what username/details to use when connecting - then it might be a little while before I even make a transactions on that site.
Personas don't mean much though when the dapp you connect to is just a uniswap interface - you go there to immediately do a swap and you can see all 3 buttons you'll ever click there. On the other hand, a social platform, a game, or a more involved website - you could spend a week on before maybe even doing your first on-ledger transaction potentially. It can be quite intimidating maybe to force a user to connect their credit cards before they even get to explore anything.
@aus877@radixdlt@Adam_XRD tldr.... every dapp can be reduced to a withdraw and deposit subintent really... the decision is just where to draw the line between a fully on-ledger logic system and a fully off-ledger logic system 😅
Alright @aus877 - consider this a formal challenge. (do we need a hackathon for this? @radixdlt@Adam_XRD)
Here's a range of ideas from my notebook after learning how to use subintents, I can't do 'em all 😅
Lootbox 2.0
A system where NFTs can be used to redeem other assets. The redeemable assets are not known to the user beforehand as they are decided during handling of the subintent.
Intent Escrow
Create an interface for two users to select items from their wallets to exchange. Once happy they both submit a subintent which is combined and submitted to complete the exchange. This is done with a live interface (Websockets are a deffo) like in most video games when you're trading between players in-game.
PvP Games
E.g. Rock, Paper, Scissors - two users decide on they're move by submitting subintents. Your backend evaluates both and decides the winner. Expand this to NFTs with different power, health, ability stats and you're onto something really fun.
Sealed-bid auctions
Users submit subintent bids for an auction lot - the bid amounts are not known to other users. Only the winning bid is actually submitted to the network.
Gated-access system
Have some data in your database or an API? Make a requirement to mint an asset based on this. E.g. Make joining your discord a requirement to mint an asset - your backend would validate this before being able to submit the full transaction.
Alternative voting system
With DAO votes it can be a pain to handle the fact voting weight is fungible tokens without issuing an NFT or doing some time-weighted averages. Have users submit subintents proving ownership of an amount, then submit these to the network all at the same time. If sneaky users have moved tokens around in their wallet to double spend their vote, those transactions will fail.
Fee-less systems
The dapp toolkit doesn't expose an easy way to sign random things with your key. However, with subintents, you could have users sign plain string messages that don't actually ever need to be submitted to the network. No fees would be required by the user or you as no transaction are ever actually submitted fully to the network. This could be an alternative for a ROLA verified auth flow potentially.
Web2 Data Tokenisation
If you want to make a game or platform that is a blend of web2/web3 - you can have users start in the web2 world by for example creating a character, doing a couple quests, earning XP, etc. all without doing any transactions or having a wallet. As soon as they want to trade the asset - You can then use subintents to verify the user/their xp/character/weapon was earnt in your database and then tokenise that asset to send to them. Players would have the choice of using your app completely web2, and only go web3 if they want to.
-------
Misc. thought:
Draw funds from active stake
I'm not sure on this, but in any subintent system where you are drawing funds from that user, but the actual submission of the transaction may not happen for several days/weeks - You could instead draw the funds from staked XRD (or any other staked/lp'd asset) whereby your insta-unstake them/retrieve from weft/root/a pool to then use in the transaction.
E.g. Imagine a USDC lottery using subintents where users submit subintents withdrawing $20 from their USDC that's already earning on Weft. The lottery backend accumulates intents (tickets) for a week or two, then a lucky one is chosen to receive all the money back. Meanwhile during that couple of weeks, lottery participants have still been earning on that $20 sitting on @Weft_Finance.
I predict the majority of dapps will be rebuilt using intents soon. Why would you deposit funds into a smart contract to hold if you don't have to?
Whos got a killer new intent based dapp idea that I can work on? I need ideas 👇
Jeez didn't realise the bricks would go so hard. I thought for sure peeps would be chucking their CLAY around instead... does CLAY need more liquidity to make that a thing, or is that hoarding bricks feels more like gold bullion?