OpenZeppelin is a library for secure smart contract development
Clone or download
frangio Changes to Counter (#1332)
* rename Index.currentId to current

* use += operator for clarity

* rename Counter.Index to Counter.Counter

* move Counter to drafts
Latest commit 3e55408 Sep 18, 2018
Failed to load latest commit information.
.github Fixed a broken payment test (+ another small fix) (#1318) Sep 11, 2018
audit removing trailing whitespace Sep 16, 2017
contracts Changes to Counter (#1332) Sep 18, 2018
migrations Clean up npm package (#904) Apr 26, 2018
scripts ci: trigger docs update on tag (#1186) Aug 28, 2018
test Changes to Counter (#1332) Sep 18, 2018
.editorconfig Add EditorConfig (#1119) Jul 27, 2018
.env.example feat: allow configuration of ropsten and ganache with env variables Dec 1, 2017
.eslintrc Enforce linebreak style (#1213) Aug 16, 2018
.gitattributes feat: add solidity syntax highlighting directive, fixes #671 Jan 15, 2018
.gitignore ignore truffle generated file (#1019) Jun 16, 2018
.node-version feat: remove yarn in favor of npm Nov 27, 2017
.solcover.js Re-enable solidity coverage Dec 20, 2017
.soliumignore removing trailing whitespace Sep 16, 2017
.soliumrc.json RBAC and Ownable migration towards Roles (#1291) Sep 7, 2018
.travis.yml ci: trigger docs update on tag (#1186) Aug 28, 2018 Create (#1061) Jul 5, 2018 Use prefix underscore for state variables and no underscore for para… Sep 7, 2018 included command to add upstream (#959) Jun 5, 2018
LICENSE removing trailing whitespace Sep 16, 2017 Fix README snippet typo Sep 7, 2018 Add some detail to releasing steps (#1190) Aug 24, 2018
ethpm.json Merge branch 'release-v1.12.0' Aug 13, 2018
logo.png Improve README (#1309) Sep 7, 2018
package-lock.json fix: refactor sign.js and related tests (#1243) Aug 29, 2018
package.json include build directory in package (#1311) Sep 7, 2018
truffle-config.js Remove Babel (#1074) Jul 18, 2018


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

If you're interested in trying out a preview of OpenZeppelin 2.0, install openzeppelin-solidity@next, check out the release notes, and let us know what you think!


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

pragma solidity ^0.4.24;

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 diferent 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.