跳转至

OpenZeppelin

OppenZepplin 是一个维护 Solidity 标准化代码库的组织

OpenZeppelin 是构建在 EVM 之上的开源智能合约开发工具,开发者可以安全的开发和管理智能合约和Dapp,使用 Solidity 进行构建,支持所有 EVM 和eWASM,在以太坊开发者社群中极为出名,是最流行的 Solidity 开源合约标准库,其中有上百个合约,Github上获得21,000+ star。因其经过审核的智能合约和库代表着产业标准。

举例而言,几乎所有关于开发者如何部署ERC-20代币的教程都是使用OpenZeppelin合约作为范例。

OpenZeppelin 的另一项主要业务是代码审计,参与过行业内包括 Cosmos 和诸多 Defi 在內的大量明星项目的代码审计。

npm install @openzeppelin/contracts
# 安装到当前路径下的node_modules/中

在Solidity中使用

  • Ownable
import "@openzeppelin/contracts/access/Ownable.sol";

contract Demo is Ownable {
    function foo() onlyOwner {
        pass;
    }
}

在Brownie中使用

Brownie 允许您将其他项目作为包安装

Docs: https://eth-brownie.readthedocs.io/en/stable/package-manager.html

# 从Github安装
brownie pm install OpenZeppelin/openzeppelin-contracts@3.0.0

# 从ethPM(以太坊包管理器)安装
$ brownie pm install ethpm://zeppelin.snakecharmers.eth:1/math@1.0.0

# 查看已安装包
brownie pm list

<<"COMMENT"
Brownie v1.19.2 - Python development framework for Ethereum

The following packages are currently installed:

smartcontractkit
 └─smartcontractkit/chainlink-brownie-contracts@0.5.1

OpenZeppelin
 └─OpenZeppelin/openzeppelin-contracts@4.8.0
COMMENT

可升级合约

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";

contract MyToken is Initializable, ERC20Upgradeable {
    /// @custom:oz-upgrades-unsafe-allow constructor
    constructor() {
        _disableInitializers();
    }

    function initialize() initializer public {
        __ERC20_init("MyToken", "MTK");
    }
}