I would like to write a program that has the ability to change the metadata on an NFT. I want to do this though without the update authority deploying the program and without them signing every transaction. Essentially, I'd like them to sign one transaction and then from that, grant the program permission to take and give back update authority whenever it wants

1 Answer 1


In order for the program to be able to change the metadata for an NFT, it needs to have the authority for updating the metadata.

e.g. NFT metadata is a data account, in order to modify that account there needs to be a signature of modifying that account from the owner of that account.

In this case, I advise you to have 2 instructions

instruction 1 : assigning update authority to the program, (a System Program PDA will suffice where it will be used to sign on behalf of the program since all PDAs are owned by the program). The program now can update the NFT metadata freely but it will follow the manner of updating that you have specified in your program. So you will be sure that there's no malicious updating.

instruction 2 : revoke update authority, this will give back the update authority to the original user. You have to keep track of who is the original authoritarian by using a User PDA.

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.