---
title: "什么是 OpenZeppelin？开发者指南"
description: "Web3 项目的安全保障"
---

## 什么是 OpenZeppelin？

<ImageBlock
  src="https://media.alchemy.com/1704159586-openzeppelin-logo.png"
  alt="OpenZeppelin 标志"
  width={500}
  height={250}
  priority
/>

[OpenZeppelin](https://www.alchemy.com/dapps/openzeppelin) 是一家加密网络安全技术与服务公司。他们提供用于构建安全智能合约的开源框架，同时为一些最大的 DeFi 和 NFT 项目提供全面的安全审计。他们的客户包括 Ethereum 基金会、Coinbase、Brave 等知名项目。

除审计外，OpenZeppelin 还通过为智能合约开发者提供安全工具库，致力于提升 DeFi 生态系统的整体安全性。这些产品让智能合约开发者能够把更多精力放在部署上，而不是安全上，从而实现更快的上线速度和更高的可靠性。

如今，OpenZeppelin 的产品支撑着超过 3,000 个公开项目。

## 什么是智能合约？

智能合约是存储并运行在区块链上的程序。与现实世界中的合约一样，它们描述协议内容并设定规则。不同的是，它们还能自动执行这些规则。

这种“智能”行为之所以可能，是因为这些协议的条款以代码形式写入区块链并被执行。在最流行的智能合约平台 Ethereum 上，智能合约和普通账户一样，拥有自己的余额，也可以发起交易。

其他用户同样可以向这些智能合约发送资金，或从中接收资金。与普通合约不同的是，这些智能合约一旦部署，通常不可逆转，也无法删除。

智能合约使开发者能够创建去中心化应用和代币。去中心化金融所需的大量基础设施都基于智能合约构建，从而使保险、借贷等复杂金融流程得以实现。

## 为什么我们需要 OpenZeppelin？

安全对任何去中心化应用而言都至关重要，这一点毋庸置疑。

过去，项目团队往往需要自己编写安全基础设施，导致开发者常常“重复造轮子”。

从零开始编写智能合约固然是不错的学习练习，但在生产环境中这样做可能相当危险。智能合约要做到安全，就必须足够健壮，而这不可能凭空实现。要确保可靠性需要时间和实际使用的积累，这对于规模较小的项目来说，从一开始就很难做到。

<ImageBlock
  src="https://media.alchemy.com/1704159809-cyber-security.jpg"
  alt="代表智能合约安全风险的网络安全概念图"
  width={1600}
  height={955}
/>

由于缺乏明确的 DeFi 安全标准，判断一个项目是否安全变得困难。每个协议都有自己的合约实现方式，这使得验证或识别协议是否安全变得更加困难。

此外，鉴于 DeFi 项目可能带来的丰厚收益，开发者为了尽快上线而放弃安全考量的情况也并不罕见。

一个典型的例子是 YAM Finance，这个如今臭名昭著的流动性挖矿项目，当时选择跳过昂贵的安全审计。YAM Finance 协议仅用 10 天就开发完成，上线后短短 48 小时内就已积累了 6 亿美元的资产。

然而，由于其智能合约协议中发现了安全漏洞，该项目不得不关停。由于用户资金处于风险之中，缺乏安全保障最终可能酿成灾难。

虽然安全审计是降低潜在安全风险的关键手段，但仅靠审计还不够——YAM Finance 的案例便是如此。像 YAM 这样仓促上线的项目，很少会因为成本问题而进行安全审计，这就使得开发者从一开始就拥有正确的安全工具变得尤为重要。

## OpenZeppelin 提供哪些功能？

OpenZeppelin 通过为开发者提供开箱即用的安全工具和基础设施，来降低此类事件的发生概率。这些产品让智能合约开发者能够继续专注于部署工作，而不必自己重新搭建安全基础设施。

OpenZeppelin 团队常说，如今搭建稳固的安全基础“只需几分钟，而不是几个月”。

OpenZeppelin 有两款主要产品：Contracts 和 Defender。

OpenZeppelin 的 _Contracts_ 是一个面向 Ethereum 及其他区块链的[安全智能合约库](https://docs.openzeppelin.com/contracts/4.x/)，开发者可以自由使用。

这些开源模板经过社区审查，并采用最新的安全实践。OpenZeppelin 实现这一点的方式之一，是通过漏洞赏金猎人计划，社区成员可以因发现 OpenZeppelin 合约中的安全漏洞而获得奖励。

通过复用经过审计的 OpenZeppelin 合约，项目可以大幅缩小其攻击面。攻击面指的是理论上未经授权方可能发起攻击的各个不同切入点数量。此外，由于这些合约具有模块化和标准化的特点，协作与审计也变得更加容易。

<ImageBlock
  src="https://media.alchemy.com/1704159957-openzeppelin-contracts-wizard.png"
  alt="用于生成智能合约代码的 OpenZeppelin Contracts Wizard 界面"
  width={1460}
  height={1054}
/>

OpenZeppelin 还通过 Contracts Wizard 提供了一个交互式合约生成器。开发者可以使用 Wizard，借助 OpenZeppelin 提供的组件来创建合约。此外，Wizard 还允许你指定合约类型（例如 [ERC20](https://www.alchemy.com/overviews/erc20-solidity)）、参数和功能。

完成后，Wizard 会生成对应的代码，可直接用于部署。

以下是 OpenZeppelin 众多内置功能中的几个例子：

- **访问控制（Access Control）**：OpenZeppelin 的访问控制功能让开发者能够轻松配置系统中谁有权做什么。这套基础设施对任何项目的安全性都至关重要，一旦失效，可能导致[整个系统实际上被窃取](https://blog.openzeppelin.com/on-the-parity-wallet-multisig-hack-405a8c12e8f7/)。

OpenZeppelin Contracts 既提供简单的单一管理员所有权模式，也提供灵活的[基于角色的访问控制（Role-Based Access Control）](https://en.wikipedia.org/wiki/Role-based_access_control)功能。借助这些功能，开发者可以安全地指定谁能铸造代币、对提案进行投票、冻结转账，以及执行其他受保护的操作。

- **治理（Governance）**：OpenZeppelin 的 Governor 合约提供了开箱即用的治理协议。链上治理对于真正去中心化的协议来说是必要的，并已成为许多协议的核心组成部分。社区治理可以决定重要事项，比如参数调整、智能合约升级、与其他协议的集成、资金库管理、资助拨款等。由于 OpenZeppelin 的 Contracts 高度模块化，通常可以通过 [Solidity](https://www.alchemy.com/overviews/solidity) 继承来创建新模块以引入变更，从而无需硬分叉。

<ImageBlock
  src="https://media.alchemy.com/1704160046-erc-20.jpg"
  alt="代表 Ethereum 上 ERC-20 代币标准的插图"
  width={1171}
  height={706}
/>

- **代币（Tokens）**：OpenZeppelin 为许多最常见的 Ethereum 标准（如 ERC20 和 ERC721）提供了代币合约。借助这套基础设施，开发者可以部署自己的代币，并获得价格监控、指定代币转账方式、购买身份验证等诸多其他功能。

‍

Defender 是 OpenZeppelin 基于 Web 的安全运营（SecOps）平台。[Defender](https://openzeppelin.com/defender/) 通过帮助开发者自动化运行 Ethereum 去中心化应用所涉及的大量操作，简化了智能合约的部署和管理工作。

该平台配备了许多功能，例如基于 Web 的后端集成、自动化任务，以及手动合约交互。开发者可以直接在 Defender 平台上进行构建，从一开始就获得稳固的安全基础。

<ImageBlock
  src="https://media.alchemy.com/1704160385-openzeppelin-defender.png"
  alt="OpenZeppelin Defender 安全运营平台仪表盘"
  width={1580}
  height={1232}
/>

> “今年我们在 DeFi 领域见到的多起漏洞事件，比如 YAM、[Uniswap](https://www.alchemy.com/dapps/uniswap)、[dForce](https://www.alchemy.com/dapps/dforce) 和 Hegic 遭遇的攻击，本可以通过遵循严谨的安全流程来避免或减轻，但团队缺乏一套全面的体系，让他们充分了解安全最佳实践以及如何评估风险。” ——OpenZeppelin 首席技术官 Jonathan Alexander

据 OpenZeppelin 表示，像 bZx 和 Opyn 这类重大漏洞事件中用户资金的损失，本可以通过 Defender 这类快速响应工具加以减少。

## OpenZeppelin 为 DeFi 带来了什么？

<ImageBlock
  src="https://media.alchemy.com/1704160156-defi-crybersecurity.jpeg"
  alt="代表 DeFi 应用网络安全防护的插图"
  width={1024}
  height={538}
/>

OpenZeppelin 正在为更安全的去中心化应用打下基础，因为它免除了开发者自行处理安全问题的必要。有了内置的安全功能，开发者可以在不牺牲安全性的前提下继续快速构建。随着攻击手段和 DeFi 系统日益复杂，这一点变得极为重要。

随着 OpenZeppelin 逐渐成为智能合约的安全标准，它有助于最大限度地降低整个 DeFi 领域所需的信任程度。人们常常谈到“零信任”，即各方之间无需任何信任。但在 DeFi 协议的场景下，这并不现实。

无论如何，你总是在信任某一方——无论是一个团队、一个 DAO，还是一位审计人员。这听起来或许有问题，但与传统银行业相比，这已经是一个透明得多的过程，因为在 DeFi 中你始终可以查看代码本身。

OpenZeppelin 首席执行官 Damian Bermer 认为，我们应当追求的是信任最小化，而不是零信任。

> 信任最小化会缩小我们所信任、却又无法看到的那部分范围。我们可以看到链上执行的代码。但即使是信任最小化程度最高的 DeFi 平台，我们仍然需要信任哪些东西？扩展 DeFi 规模的最佳方式，就是达到大规模的信任最小化。——Damian Bermer

通过提供开源安全资源，OpenZeppelin 得以为整个生态系统降低信任需求，因为每个协议所需编写的新代码减少了。随着安全基础设施获得更多信任，DeFi 项目安全性方面的不确定性将大幅减少，从而带来更广泛的采用和更大的规模。

## 使用 Alchemy 部署你自己的智能合约

OpenZeppelin 的智能合约安全可靠，经过社区审查和实战检验。注册 Alchemy，立即[开始部署你的第一个智能合约](https://www.alchemy.com/?a=fd92c87506)！
