OpenZeppelin is a library for secure smart contract development
Branch: master
Clone or download
mswezey23 and frangio ERC20 Snapshot Impl #2 (#1617)
* ✏️ Refactor code & Refork OZ Repo

* Refactor ERC20Snapshot to use on-demand snapshots.

* Add ERC20Snapshot changelog entry.

* Move ERC20Snapshot to drafts.

* Improve changelog entry.

* Make snapshot tests clearer.

* Refactor ERC20Snapshots to use Counters.

* Refactor snapshot arrays into a struct.

* Remove .DS_Store files.

* Delete yarn.lock

* Fix linter error.

* simplify gitignore entry
Latest commit 40d1514 Feb 6, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Added changelog. (#1555) Dec 18, 2018
audit removing trailing whitespace Sep 16, 2017
contracts ERC20 Snapshot Impl #2 (#1617) Feb 6, 2019
migrations Clean up npm package (#904) Apr 26, 2018
scripts Migration to truffle 5 (and web3 1.0 (and BN)) (#1601) Jan 14, 2019
test ERC20 Snapshot Impl #2 (#1617) Feb 6, 2019
.editorconfig Add EditorConfig (#1119) Jul 27, 2018
.eslintrc Added mocha-no-only ESlint plugin. (#1529) Nov 29, 2018
.gitattributes feat: add solidity syntax highlighting directive, fixes #671 Jan 15, 2018
.gitignore ERC20 Snapshot Impl #2 (#1617) Feb 6, 2019
.node-version feat: remove yarn in favor of npm Nov 27, 2017
.solcover.js Re-enable solidity coverage Dec 20, 2017
.solhint.json Replaced Solium in favor of Solhint (#1575) Jan 4, 2019
.travis.yml Bring back coverage report. (#1620) Jan 23, 2019 ERC20 Snapshot Impl #2 (#1617) Feb 6, 2019 Create (#1061) Jul 5, 2018 Improve encapsulation on ERC165 and update code style guide (#1379) Oct 20, 2018 included command to add upstream (#959) Jun 5, 2018
LICENSE removing trailing whitespace Sep 16, 2017 Fix typo in README (#1624) Jan 29, 2019 Update Jan 4, 2019
ethpm.json Release v2.1.2 Jan 18, 2019
logo.png Improve README (#1309) Sep 7, 2018
package-lock.json Bring back coverage report. (#1620) Jan 23, 2019
package.json Bring back coverage report. (#1620) Jan 23, 2019
truffle-config.js Fix warnings (#1606) Jan 17, 2019


NPM Package Build Status Coverage Status

OpenZeppelin is a library for secure smart contract development. It provides implementations of standards like ERC20 and ERC721 which you can deploy as-is or extend to suit your needs, as well as Solidity components to build custom contracts and more complex decentralized systems.


npm install openzeppelin-solidity


To write your custom contracts, import ours and extend them through inheritance.

pragma solidity ^0.5.0;

import 'openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol';
import 'openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol';

contract MyNFT is ERC721Full, ERC721Mintable {
  constructor() ERC721Full("MyNFT", "MNFT") public {

You need an ethereum development framework for the above import statements to work! Check out these guides for Truffle or Embark.

On our site you will find a few guides to learn about the different parts of OpenZeppelin, as well as documentation for the API. Keep in mind that the API docs are work in progress, and don’t hesitate to ask questions in our Slack.


OpenZeppelin the project is maintained by Zeppelin the company, and developed following our high standards for code quality and security. OpenZeppelin is meant to provide tested and community-audited code, but please use common sense when doing anything that deals with real money! We take no responsibility for your implementation decisions and any security problems you might experience.

The core development principles and strategies that OpenZeppelin is based on include: security in depth, simple and modular code, clarity-driven naming conventions, comprehensive unit testing, pre-and-post-condition sanity checks, code consistency, and regular audits.

Please report any security issues you find to


OpenZeppelin exists thanks to its contributors. There are many ways you can participate and help build high quality software. Check out the contribution guide!


OpenZeppelin is released under the MIT License.