OpenZeppelin provides tooling for deploying and securing upgradeable smart contracts.

  • Upgrades Plugins to deploy upgradeable contracts with automated security checks.

  • Upgradeable Contracts to build your contract using our Solidity components.

  • Defender to manage upgrades in production and automate operations.

Find all of our resources related to upgradeability below.

If you don’t know where to start we suggest to start with Learn: Upgrading Smart Contracts.


  • Writing Upgradeable Contracts: When working with upgradeable contracts using OpenZeppelin Upgrades, there are a few minor caveats to keep in mind when writing your Solidity code.

  • Proxy Contracts: A complete list of all available proxy contracts and related utilities, with documentation relevant for low-level use without Upgrades Plugins.

  • The State of Smart Contract Upgrades: A survey of upgrade patterns, and good practices and recommendations for upgrades management and governance.

  • Transparent vs UUPS Proxies: Explaining the differences between the Transparent Proxy Pattern and the newly available UUPS Proxies.

  • Deploy an upgrading via Multisig with Defender: A tutorial on deploying and upgrading a smart contract in production secured by a multisig wallet, using Defender and the Hardhat Upgrades plugin.

  • UUPS Proxies: A tutorial on using the UUPS proxy pattern: what the Solidity code should look like, and how to use the Upgrades Plugins with this new proxy pattern.