I am attempting to create a NFT with % royalties when NFT is re-sold.

My idea would be the following :

  • The symbolic owner of the NFT is defined in the datum of the script e.g. datum = { owner : [ownerwallet] , ... }
  • The following end points are available in the smart contract :

A) purchase : if someone want to purchase the NFT (i.e. rename the owner par of the datum) B) define_selling_price : to define at which selling price the purchase operation will work C) define_who_can_purchase: to ensure that if you want to sell it to someone, nobody else can purchase it (i.e. allowed purchased wallet)

  • To ensure that the royalties are paid, the validation script verifies that there are only two resulting UTXO of the "purchase" endpoint, the first UTXO contains x% of ADA to hardwritten address (i.e. royalty ) , the second UTXO is copy of the exact same script (for future selling)

Could that be done in the described way above ? What is the exhaustive list of the parameters available for a smart validator to work?

Thank you in advance

  • Should one of the answers be marked as accepted?
    – gRebel
    Commented Apr 28, 2022 at 5:30

2 Answers 2


Yes, it can be done. Just create a smart validator that makes sure, that when the UTXO containing the asset is spend to a new address, it also requires an additional input for the royalty address.

I believe you are correct in your second question.

  • sorry I just rewrote my question with more details ^^
    – lt512
    Commented Nov 19, 2021 at 20:01

You can wrap a native asset into a tailored smart contract, but I think this only makes sense if you also provide the platform to interact with these smart contracts. It is not a sell-and-forget transaction where the buyer can do whatever he wants including using DEXs to trade his asset.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.