---
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 Foundation、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 同時提供簡單的單一管理員擁有權，以及靈活的[基於角色的存取控制](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 的網頁版安全維運（SecOps）平台。[Defender](https://openzeppelin.com/defender/) 簡化了智能合約的部署與管理，協助開發者將執行 Ethereum 去中心化應用程式所涉及的許多維運工作自動化。

該平台具備許多功能，例如網頁版後端整合、自動化任務，以及手動合約互動。開發者可以直接在 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)！
