Which version of OpenZeppelin Contracts should be used for upgradeable contracts?

Thanks for the feedback @elmariachi111!

We know, and we're actively working on making it simpler, less confusing, and more documented.

I've been working for the past few weeks on the plan outlined in The Future of contracts-ethereum-package and the work is almost complete. I think I can safely say we will be releasing it next week, along with some initial documentation. We'll make sure that the new package is mentioned in the relevant places and well explained.


As for your questions:

Yes, although note that you don't need to use the presets, you can use any contract from the package, as indicated by the "UpgradeSafe" suffix they are all safe to use with upgradeable proxies.

This would not work: @openzeppelin/contracts has constructors, and it's not possible to remove the constructors through inheritance by just adding Initializable. This is why there are two packages: one of them has constructors, the other doesn't (along with a few other necessary changes).

2 Likes