OpenZeppelin 2.3

In 2.3 we’re introducing ERC777, revert reasons, and a new documentation site. :fireworks:

Take a look and tell us what you think!


The long awaited sequel to ERC20. Its main additions are transfer hooks and operators. Hooks let your contracts react to token transfers. In other words, running code when a contract receives tokens is a built-in feature: no more messing around with approve and transferFrom!

The other special feature, operators, provides simpler and more flexible ways of delegating usage of your tokens to other people or contracts, like decentralized exchanges.

All of this with full compatibility with ERC20!

Start building on it and tell us what you think! We’re looking for ideas for extensions, custom operators, or utilities. Share your ideas here or in a new thread.

Revert reasons

Are you tired of running into cryptic errors like VM Exception while processing transaction: revert? All errors in OpenZeppelin now have proper error messages that will be displayed when you test your code! We’ve kept them succinct and to the point. Each error message is unique, so if you’re having trouble figuring out exactly which require statement you’ve hit, it is easy to look up the error string in the source code, and look at the actual condition that is not being met.

Documentation site

We’ve revamped the docs, take a look!

It’ll be super helpful to both people looking to get started in smart contract development, and veteran OpenZeppelin users who just need to quickly recall a function signature. Among other improvements, we’ve bundled together related concepts, added overviews for each section, and added crosslinks to other contracts and functions to make exploring the docsite a breeze!

Everything is automatically generated from the comments in the source code, so if you spot a typo or have a suggestion, simply open an issue or PR to get it sorted out in no time!

Some sections still require a bit of work to get them to where we want them to be, stay tuned!


Some more things are included in this release such as an implementation of ERC1820, and a fix for a bug in PostDeliveryCrowdsale. Take a look at the changelog!



I also wanna ask you @frangio to look at ERC1003 and provide me feedback if you think it is possible to include this behavior into OpenZeppelin? For me it seems the most compatible way with ERC20 to send tokens to smart contracts and to handle this transfers. This would be even compatible with some current DEX implementations.