Getting Started

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.

Install

OpenZeppelin should be installed directly into your existing node.js project with npm install @openzeppelin/contracts. We will use Truffle, an Ethereum development environment, to get started.

Please install Truffle and initialize your project:

$ mkdir myproject
$ cd myproject
$ npm init -y
$ npm install truffle
$ npx truffle init

To install the OpenZeppelin library, run the following in your Solidity project root directory:

$ npm install @openzeppelin/contracts
OpenZeppelin features a stable API, which means your contracts won’t break unexpectedly when upgrading to a newer minor version. You can read ṫhe details in our API Stability document.

Usage

Once installed, you can start using the contracts in the library by importing them:

pragma solidity ^0.5.0;

import "@openzeppelin/contracts/ownership/Ownable.sol";

contract MyContract is Ownable {
  ...
}

Truffle and other Ethereum development toolkits will automatically detect the installed library, and compile the imported contracts.

You should always use the installed code as-is, and neither copy-paste it from online sources, nor modify it yourself.

Next Steps

Check out the the guides in the sidebar to learn about different concepts, and how to use the contracts that OpenZeppelin provides.

OpenZeppelin’s full API is also thoroughly documented, and serves as a great reference when developing your smart contract application.

Additionally, you can also ask for help or follow OpenZeppelin’s development in the community forum.

Finally, you may want to take a look at the guides on our blog, which cover several common use cases and good practices: https://blog.openzeppelin.com/guides. The following articles provide great background reading, though please note, some of the referenced tools have changed as the tooling in the ecosystem continues to rapidly evolve.