We have built our own NFT contract with merkle tree whitelist. But we are struggeling with the verify_collection part. Is this the correct way of implementing this? Our update_authority of the NFTs is a PDA from the contract.

  • mint collection NFT
  • store information of collection NFT in PDA (collection_autority / collection_mint / collection_meta etc)
  • mint the NFT
  • in the mint function call set_and_verify_collection with the info stored in the collection pda

Is this the correct way?

2 Answers 2


It does seams the Correct Approach although you should add good control access on the function which is minting the Collection NFT and allow only trusted ones to invoke it. I feel storing the mint address would be enough you can derive the rest on-chain or in the client side.

  • 1
    Thanks for your answer. The mint collection NFT is restricted to only the admin of the contract - so this should be safe (we use the same protection for all our other admin functions like updatePrice or setUri) Would you be able to give an example of how to derive the accounts on-chain?
    – Florian
    Commented Jul 19, 2022 at 12:45

Yes, I think this is correct. But To do this, the most important is accounts as parameter.

There is Collection Authority Record account.

Collection Authority Record accounts are used internally by the program to keep track of which authorities are allowed to set and/or verify the collection of the token's Metadata account.

You should use initialized Collection Authority Record account.

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.