So there’s a few Stellar NFT marketplaces popping up, and some of them offer the options of royalties.
This is one of the more exciting uses of NFTs – making sure the original creator gets a cut of every resale.
However, this is rather difficult to enforce on Stellar due to the openness of the decentralized exchange.
Once the asset is in someone’s Stellar wallet, they can take it off the marketplace and freely sell it on the SDEx and subvert royalties.
If users can only buy/sell through the marketplace then it is relatively easy to enforce, but this sort of defeats a lot of the convenience of the SDEx.
Even so, enforcement will require the asset to either be held custodially or initially setup with the “Authorization Required” flag. Then, when someone wants to sell the NFT to a new owner, the creator can create a transaction that simultaneously “allows trust” and either sends the royalty to the creator or creates a claimable balance. This operation can then be atomically batched with the asset trade.
It might be easiest to automate if the seller sends a signed XDR for the agreed upon trade price and destination to the creator so it can be batched with the properly priced royalty payment and allow trust operation. This will require only a partially locked issuing account, and the secret key for the issuing account. If this account was created using a marketplace or generator, they would have to keep a secure copy of the secret key, or ensure the creator stores it safely or else the NFT will no longer be tradeable to any new wallets.
Obviously, this does not protect against someone simply handing over the private key to their wallet in order to avoid a royalty fee, or the two parties agreeing on a separate additional payment to reduce the royalty fee.
Let’s lock it down!