This project uses the Beacon proxy pattern to deploy multiple minimal clones of one implementation contract in a upgradeable way.
There are single tests to confirm both implementations logic and clones-test
to check and confirm that the upgreadability works properly. When a new implementation is upgraded on the beacon proxy, all the contracts previously created become proxies of the new implementation, having access to those new functions while preserving their previous state.
Simple and dummy version 1 implementation
Simple and dummy version 2 implementation. Changes the version
function to check that, after upgrading the beacon implementation address, all the clones uses the new implementation.
Uses the BeaconProxy and UpgradeableBeacon to create multiple minimal contracts based on the current implementation address. Offers the possibility to change the implementation address upgrading all previously created clones automatically to the new implementation address.