MUL-620 - Change GSNMultisigFactory to replace the Factory pattern by a Clone Factory pattern (proxy)#8
Open
MUL-620 - Change GSNMultisigFactory to replace the Factory pattern by a Clone Factory pattern (proxy)#8
Conversation
| GSNMultiSigWalletWithDailyLimit multisig = new GSNMultiSigWalletWithDailyLimit(); | ||
| multisig.initialize(_owners, _required, _dailyLimit); | ||
| wallet = address(multisig); | ||
| function create(address[] memory _owners, uint _required, uint _dailyLimit) public payable returns (address payable wallet) { |
Contributor
There was a problem hiding this comment.
not sure if create has to be payable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
The purpose of this PR is to upgrade our
GSNMultisigFactorysmart-contract to use a Clone Factory pattern rather than a simple Factory pattern. Instead of deploying a new GSNMultisig contract for each creation, the Clone Factory will deploy a minimal contract only called Proxy connected to a unique contract called Master Copy (composed of the logic).Impact
This doesn't have any impact on existing accounts.
Upgrade procedure
1. Deploy the master copy
Note the Master Copy address:
0x77CCA5B37d17e7D94a28FC220F92A5504eefE9F4Change the owner to
0x0000000000000000000000000000000000000000to make sure nobody can use this multisig.2. Change the code of the factory using CloneFactory
See
GSNMultisigFactory.sol3. Upgrade the Factory
4. Set the master copy
Testing strategy
TBD
Opened questions