OpenZeppelin Contracts Ethereum Package v3.0 has been released and is tailored for use with upgradeable contracts.
This release includes Solidity 0.6, revamped access control, Preset contracts + extensibility via hooks. See the OpenZeppelin Contracts v3.0 announcement for details of whats in the release.
This package contains the same contracts as the vanilla OpenZeppelin Contracts, but modified to be safe for upgrades. The main difference is that all contracts in this package are potentially upgradeable: you will notice that no contracts have constructors defined, but use initializer functions instead. Also, this package is set up as an Ethereum package, and provides a small set of pre-deployed logic contracts that can be used directly via the OpenZeppelin SDK, without needing to deploy them again.
All contracts have an
UpgradeSafe suffix to avoid confusion with their counterparts in OpenZeppelin Contracts. For example,
All in all, you should use this package instead of OpenZeppelin Contracts if you are creating upgradeable contracts via the OpenZeppelin CLI .
Storage layout changes means that contracts can’t be upgraded from 2.5 to 3.0.