I'm looking to use OpenZeppelin's new governance contracts in some demos I'm building, however, I'm running into an issue.
Typically, when I create (transparent) upgradeable smart contracts, I follow the following steps:
- Deploy an implementation
- Deploy a proxy admin
- Deploy a proxy
- Use the proxy admin to set the implementation address to the proxy
However, I'm having a hard time doing this with the governance contracts, as I'm not sure who should be the proxy admin. Would the proxy admin be just the proxy itself? Then if I go to propose something on the proxy, the proxy will be the one to upgrade itself if need be?
I think I'm thinking about this right?