Since EthCC’s hackathon, I have been working on KitsuneWallet, which isn’t a wallet but rather a proxy/master pattern for the upgrade of self-governed onchain wallets.
I’ve been working with UniversalLogin from the start to address their need for upgradeability, but now is the time to discuss this approach and seek opinions from other developers. While OpenZeppelin proposes tools for upgradeability, my opinion is that your approach works best with contracts such as token, dapps and other, where the upgrade process changes some method but not the underlying memory space.
I, on the other hand, am focussing on small contract with potentially radical memory space evolution (imagine having a UniversalLogin account, which is a proxy pointing to an implementation, and wanting to transform it into a GnosisSafe account that uses the GnosisSafe implementation).
Code is available for review/testing at https://github.com/Amxx/KitsuneWallet-ERC1836.
Please have a look and share your impressions. Documentation is lacking but the code and tests should be self-explanatory to anyone with a good understanding of inheritance and delegation.