Upgradeable Plugins
Developing a Upgradeable Plugin
As outlined in the previous section about the different plugin types, upgradeable contracts offer advantages because you can cheaply change or fix the logic of your contract without losing the storage of your contract. The drawbacks are that
- there are plenty of ways to make a mistake
- the changeable logic poses a new attack surface
In any case, writing an upgradeable contract is an advanced topic. This also applies to writing upgradeable Aragon OSx plugins although we abstracted most of the complications of the upgrade process away for you.
Prerequisites
- You have read about the different plugin types and decided to develop an upgradeable plugin being deployed via the UUPS pattern (ERC-1822).
- You know how to write non-upgradeable plugin
- You know about the difficulties and pitfalls of "Writing Upgradeable Contracts" that come with
- modifiying the storage layout
- initialization
- inheritance
- leaving storage gaps