I am new to developing on Ethereum, so I hope these questions aren't too dumb.

I have a smart contract that allows me to mint an NFT to another public key.

  1. Who is the owner of this NFT - me, or the recipient?
  2. Can I change the name, description, image, and/or the token URI of this token after it has been minted to the recipient?
  3. Since this NFT is created by my smart contract, does it mean that only my smart contract can make changes to it?
  4. If I make any changes to my smart contract, can I upgrade my existing smart contract by deploying it to the same address? What happens to any NFT that I minted using my existing smart contract?

2 Answers 2


You should understand that by default, there is no such thing as "ownership" in contracts. When you deploy a contract, it only has the functionality written in its source code - no extra functionality. So if you want ownership functionality, it has to be present in the source code.


  1. Probably if you mint it to an address, that address becomes the owner. But you should check the code what actually happens.

  2. If such things are allowed by the code, then yes. But usually it's not allowed.

  3. Depends on the implementation. Often, the minter has zero access to the NFT after it has been minted. On the other hand, if the code is weird or buggy, anyone may have access to alter it.

  4. You can never deploy a new contract to the same address (unless you control the whole blockchain, such as in a local testnet). Contracts can't be removed from the blockchain, unless they have explicit functionality coded in them which uses the special selfdestruct functionlity to remove the contract. If such functionality isn't there, the contract will stay in the blockchain forever, in that same address.

  1. the owner is the public key but read the code
  2. all metadata may be are in that url and could be changed or are in IPFS that could not be changed. read the code
  3. if you mean changing metadata? it depends to previous answer
  4. no the ethereum block chain does not let you do. you could only deploy another one. test all your logic in Rinkeby network

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.