2

I have this transparent upgradeable proxy deployed on sepolia - 0x2dFC2A866eac363cAFF516b5ce7aCd6bae1F21C1

This is the admin contract - 0x6d429719f78b146892403d06df677afa6f968d91

When I try to call the upgradeAndCall function with the data being 0x it reverts at some point. I'm passing the data as 0x because I don't wanna initialize the proxy again, I am just upgrading the implementation. Reference

enter image description here


After the transaction failed, I tried to run a simulation in tenderly, I got to know that the error was coming from the implementation contract. Attaching the screenshot below.

enter image description here

As you can see, 0x577a342e99b0064ea759ca22e5630a6da20c6c5c reverts the tx, and it is the current implementation.

I am confused, what am I doing wrong with it. Any help is appreciated.

Forum Discussion

EDIT: I tried the same process in Goerli. Deployed new proxy, proxy admin, implementation, and then tried to upgrade the implementation. The result is the same.

1 Answer 1

4

OpenZeppelin v5 TransparentUpgradeableProxy creates(deploys) its own ProxyAdmin contract. Now, in the proxy constructor you should provide not the ProxyAdmin contract address, but let's say the Admin's address of the future ProxyAdmin Contracts. The address of the automated created contract you take from Logs on Proxy creation: e.g. https://sepolia.etherscan.io/tx/0xef33c51cf395e6143928aa90a62579cb8410ec847481176e07bf53c33220cdff#eventlog AdminChanged

So the issue you have is that your admin contract is not the admin of the proxy, that's why the upgradeAndCall call is forwarded to the implementation, and the method does not exist.

3
  • Thank you so much. Just tried out and got the point. I had a question, can I now change the owner of the admin contract to my EOA so that I can continue using the same proxy instead of deploying all over again? I don't think there's any way to do that, but maybe, if you have any idea? Commented Nov 8, 2023 at 10:07
  • Doesn't seem possible to me because the current owner is another admin contract, which doesn't have a way to call changeOwner in the real admin contract Commented Nov 8, 2023 at 10:09
  • Thanks for your answer, it's the most clear and clean answer I found. Commented Jul 5 at 20:18

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.