Upgrade contract without changes to storage layout

Hi @cmdzro,

The implementation version string that you see in the debug logs (3ea64c77d47fa926979be270f802d38301853572d3d949a0f6cc8a3963452d27) is a hash of the contract's creation bytecode and is used to determine the contract's version.

Since a previous deployment was found with the same hash, this could mean that either the old contract is still being provided in your script, or the new contract implementation was already deployed and it is simply reusing it (perhaps it was deployed for a different proxy before -- deploying multiple proxies with the same implementation contract code would just use the same implementation contract address for all of those proxies).

So I would suggest to check the following:

  • whether const newImplFactory = await ethers.getContractFactory(contractName) is indeed the latest version of your contract implementation's code
  • whether 0x67cF62Da24c93142ebd8A43581c7fA28e677072E contains the bytecode of the latest version of your contract implementation. For example, if you deploy a new proxy using that implementation address, are you able to call the new methods?