We've decided to use the UUPS proxy module offered by OpenZeppelin for our contracts to enable future updates.
However, our contract implementation requires users to deposit crypto for some functionality to work.
We'd like the crypto our users send to ideally stay in the same place and not require movement for every implementation upgrade.
Is this possible? If so, should our users send crypto to the proxy or the implementation contract for this to work?
Thanks!
Referencing https://docs.openzeppelin.com/contracts/4.x/api/proxy and https://docs.openzeppelin.com/upgrades-plugins/1.x/
Another Question :
If we were to deploy a v2 implementation and update the proxy, then our user deposits would be split between the v1 and v2 implementation contracts. Is there any way to avoid this? Or would we need to instruct our users to manually migrate their funds to the v2 implementation?
Answer :
contract MigrationContract
Upgrade Proxy to v2:
After a sufficient migration period or when most users have moved their funds, you can proceed with upgrading the proxy contract to point to the v2 implementation.