OpenZeppelin offers templates for smart contracts. Using their templates is not only a good way to avoid common pitfall (such as overflows) when implementing common mechanisms (such as burning and minting tokens), but also it greatly simplifies audits.
For the CO, the most useful templates seem to be:
Standard Tokens implement standard ERC 20 tokens with the most useful functions (
- Burnable Token or directly Standard Burnable Token
- Ownable Token sets the user permissions and can be great to decide who is able to set the parameters of the tokens.
- Mintable tokens
The upgradability is more difficult to implement. Several patterns have been drawn. OpenZepplin offers an Eternal Storage strategies.
What do you think about it?