Multiple UUPSUpgradeable Proxies Per Implementation

Is it possible to re-use the same implementation contract for multiple proxies? We are deploying multiple instances of a UUPSUpgradeableProxy contract class. We are wondering if it's possible to deploy one copy of the implementation contract and map multiple proxy contracts to it to save gas. We are ok with having the same admins for the _authorizeUpgrade function.

I believe that the answer is yes, since the implementation contract in this case is essentially a stateless library with public functions (i.e., a deployed library with its own bytecode, rather than an internal library which becomes a part of the deployed contract's bytecode).

Hey @aazhou1,

I think you're looking for Clones, this is an implementation based on ERC1167 Minimal Proxies to make copies pointing to a single smart contract implementation.

As @barakman described, the implementation is just the logic and can be pointed to by multiple of these proxies.

Just consider that a clone is not upgradeable, so if you're looking for that you might want to point a clone to an upgradeable proxy.