- Purpose of this project is to show that smart contracts upgradibilty is possible and it, actually, shows different patterns to do that.
- Upgrading the immutable
- The simple Interface Pattern
- The problem with migrating storage
- The problem with logic changes
- Flexible and storage efficient solutions
- Proxy contracts
- Unstructured and transparent proxies
- Storage patterns
- Diamond patterns
- Metamorphic contracts
https://medium.com/@shub.sharma350/upgradability-patterns-in-solidity-part-1-13e23ce1f144
https://medium.com/@shub.sharma350/upgradability-patterns-in-solidity-part-2-8a2e531d80f8
https://medium.com/@shub.sharma350/upgradability-patterns-in-solidity-part-3-cba09b164497
https://medium.com/@shub.sharma350/upgradability-patterns-in-solidity-part-4-99a2ae29876e
- Upgrade Plugin
- Upgradeable variants
- Building upgradeable contracts with OpenZeppelin
- Constructor and Initializers
- Upgradeable Libraries
- Creating contracts
- Unsafe operations
- Restrictions
https://docs.openzeppelin.com/upgrades
https://docs.openzeppelin.com/learn/upgrading-smart-contracts
https://docs.openzeppelin.com/contracts/4.x/api/proxy
https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable
https://docs.openzeppelin.com/upgrades-plugins/1.x/proxies
https://docs.openzeppelin.com/contracts/4.x/upgradeable
- Running upgrades with hardhat
- Implementing a proxy pattern
- (Review) Delegate calls
- Extending storage
- Changing logic
- Understanding the risks
- Calling updates
https://docs.openzeppelin.com/upgrades-plugins/1.x/hardhat-upgrades