For Example:

You have an NFT collection that has 5 different tiers all under the same policy ID (cip-25 metadata standard). You want to be able to provide on-chain benefits to holders of the NFT dependent on the tier they hold.

Because each tier shares the same policy ID what is the easiest way to categorize and reward the different tiers?

The solution that comes to my mind is having 1 piece of the NFTs metadata mention its tier, then using blockfrost to take a policy ID snapshot that sorts by tier name.

2 Answers 2


You can add custom metadata to your NFT. The most used standard is CIP-721.

The metadata could look like this:

  "721": {
    "<policy_id>": {
      "<asset_name>": {
        "name": <string>,
        "image": <uri | array>,
        "tier": 1 

As you mentioned you could then use an API like blockfrost or Koios to get the metadata, check the tier property and do whatever you want with that information.

  • Brilliant! This seems like the perfect solution to go with. I will take a look at the blockfrost docs and see the best way to do so. If you happen to know any open source code or a good pre-built tool for this that would be fantastic! Thank you for the help!
    – Aidan
    Commented May 6, 2023 at 0:17

You could build a Merkle tree of asset names for each tier and encode the root hash in the smart contract. In the redeemer you give the correct intermediate hashes (public), compute the root hash and verify with the tier root hash.

  • Ok fantastic! I appreciate this advice. I think we are staying away from smart contracts on this one and just using NMKR for the minting side of things. Where the more code intensive side of things come into play will be around differentiating asset types and then rewarding.
    – Aidan
    Commented May 6, 2023 at 0:16
  • Definitely easier to start without smart contracts and do this with a backend / multi-sig instead. Something like a merkle tree based solution could still be added later. Commented May 6, 2023 at 8:42

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.