理解 ERC-621:鑄造和銷毀代幣的標準

LeeMaimaiLeeMaimai
/2025年10月16日
理解 ERC-621:鑄造和銷毀代幣的標準

重點總結

• ERC-621 提供了標準化的鑄造和銷毀函數,提升了代幣的互通性。

• 隨著 Layer 2 網絡的發展,鑄造和銷毀操作變得更加經濟實惠。

• 理解事件語義對於透明的供應量變動至關重要。

• 開發者應考慮使用經過審核的 ERC-20 擴充功能來實現鑄造和銷毀。

• 鑄造和銷毀的治理需要嚴格的角色管理和安全措施。

代幣供應彈性——即能夠鑄造新代幣或銷毀現有代幣——是穩定幣、真實世界資產(RWA)計畫、忠誠度積分以及許多遊戲資產運作的核心。ERC-621 是一種早期形式化 ERC-20 代幣如何增加或減少供應的嘗試,它標準化了鑄造和銷毀的語義,以改善工具和錢包的互通性。雖然 ERC-621 的採用不如核心 ERC-20 廣泛,但對於設計代幣生命週期的團隊以及評估代幣所提供保障的用戶來說,理解 ERC-621 仍然具有價值。

本文將解釋 ERC-621 的作用,它與當今生態系統中常見的 ERC-20 擴充功能相比如何,以及構建者和財務主管應注意的事項——特別是隨著以太坊 Dencun 升級後,鑄造/銷毀操作日益轉向低成本的 Layer 2 網路。

  • ERC-20 參考:請參閱此處的以太坊官方代幣標準,以了解餘額、總供應量和事件的背景。參考:ERC-20 on Ethereum.org
  • Dencun 背景:主網啟用降低了 Rollup 的數據可用性成本,使得 Layer 2 上的高頻代幣操作更加便宜。參考:以太坊基金會的 Dencun 公告

連結:

什麼是 ERC-621?

ERC-621 提議擴充 ERC-20,允許代幣合約透過標準化的函數和事件語義來增加或減少其總供應量。本質上,它提供了一種約定俗成的方式,以便工具能夠識別鑄造(增加供應)和銷毀(減少供應)。

核心概念:

  • 鑄造會增加 totalSupply 並將代幣計入某個地址,觸發一個從零地址(address(0))到接收者的 Transfer 事件。
  • 銷毀會減少 totalSupply 並從某個地址扣除代幣,觸發一個從持有者到零地址的 Transfer 事件。
  • 這些語義與 ERC-20 相容的代幣在事件層面預期處理鑄造/銷毀的方式一致,從而提高了與瀏覽器和索引器的相容性。

參考:EIP-621 on eips.ethereum.org

連結:

狀態說明: ERC-621 在生態系統早期被提出,如今的參考頻率不如實用的 ERC-20「可鑄造/可銷毀」模式。儘管如此,其事件層級的慣例被那些實現完善且支援鑄造/銷毀的 ERC-20 代幣廣泛遵循。

為何在 2024-2025 年供應彈性很重要

  • 穩定幣和真實世界資產(RWAs):發行方在新增抵押品時常規性地進行鑄造,在贖回時進行銷毀。清晰、可審核的事件語義對於透明度至關重要。
  • Dencun 後的 Layer 2 操作:Rollup 上更便宜的批次操作意味著應用程式特定代幣的鑄造/銷毀週期可以更頻繁,而不會因高額的 Gas 費用而受到懲罰。參考:以太坊的 Dencun 路線圖頁面
  • 合規性和生命週期控制:財務團隊通常需要基於角色的鑄造權限、贖回時銷毀,或在發生事故時可暫停的定期排放。

連結:

ERC-621 與當今常見的 ERC-20 模式比較

儘管 ERC-621 定義了一個正式的鑄造/銷毀擴充功能,但許多實際專案使用廣泛審核的 ERC-20 函式庫和存取控制來實現鑄造和銷毀:

  • OpenZeppelin 的 ERC-20 擴充功能:
    • ERC20Burnable 擴充功能允許代幣持有者(或授權的支出者)銷毀代幣。參考:OpenZeppelin ERC20Burnable
    • 基於角色的存取控制(AccessControl)通常用於將鑄造權限限制給 MINTER_ROLE 或所有者。參考:OpenZeppelin AccessControl

連結:

相較於嚴格的 ERC-621,常見 OpenZeppelin 模式的優點:

  • 成熟的程式碼,擁有廣泛的審核和社群使用。
  • 靈活的角色分離(例如,MINTER_ROLEPAUSER_ROLE)。
  • 易於與可暫停(Pausable)或授權簽名(Permit,EIP-2612)功能整合。

與嚴格 ERC-621 的權衡:

  • ERC-621 旨在為供應量變動提供標準化的函數名稱和語義。許多代幣並不暴露這些確切的函數簽名,但仍然遵循索引器依賴的事件語義(零地址鑄造/銷毀)。
  • 即使沒有明確的 ERC-621 介面,對 ERC-20 鑄造/銷毀事件的工具支援目前已經很強大。

授權簽名流程參考:EIP-2612

連結:

重要的事件語義

即使某個代幣沒有實現 ERC-621 的確切介面,兩種 ERC-20 相容的模式對於透明的供應量變動至關重要:

  • 鑄造:觸發 Transfer(address(0), to, amount)
  • 銷毀:觸發 Transfer(from, address(0), amount)

索引器、錢包和瀏覽器依賴這些事件來理解供應量變動,而無需客製化的解析邏輯。這正是 ERC-621 試圖標準化的目標。參考:ERC-20 代幣標準

連結:

一個最小、現代的實現模式

以下是一個簡化的範例,它遵循 ERC-621 語義,同時使用了流行的工具。它沒有實現字面意義上的 ERC-621 函數簽名,但它會觸發預期的零地址 Transfer 事件,並使用角色來確保安全。

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

import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.[sol](https://onekey.so/blog/zh-HK/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.[sol](https://onekey.so/blog/zh-HK/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.[sol](https://onekey.so/blog/zh-HK/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";

[contract](https://onekey.so/blog/zh-HK/ecosystem/what-is-a-smart-contract/) ElasticToken is ERC20, ERC20Burnable, AccessControl {
    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");

    constructor(string memory name_, string memory symbol_, [address](https://onekey.so/blog/zh-HK/ecosystem/what-is-a-crypto-wallet-address/) admin) ERC20(name_, symbol_) {
        _grantRole(DEFAULT_ADMIN_ROLE, admin);
        _grantRole(MINTER_ROLE, admin);
    }

    function mint([address](https://onekey.so/blog/zh-HK/ecosystem/what-is-a-crypto-wallet-address/) to, uint256 amount) external onlyRole(MINTER_ROLE) {
        _mint(to, amount); // 觸發 Transfer([address](https://onekey.so/blog/zh-HK/ecosystem/what-is-a-crypto-wallet-address/)(0), to, amount)
    }
    // 繼承自 ERC20Burnable 的銷毀函數(由持有者發起)
}
  • 鑄造受到角色限制,並觸發零地址 Transfer 事件。
  • 銷毀由持有者或授權支出者選擇性啟用,觸發到零地址的 Transfer 事件。

OpenZeppelin 參考:

安全和治理考量

  • 存取控制和職責分離
    • 為鑄造者(MINTER)、暫停者(PAUSER)和預設管理員(DEFAULT_ADMIN)使用不同的角色。應避免單一外部擁有帳戶(EOA)擁有所有權力。
    • 傾向於使用多重簽名(multisig)或基於模組的管理來降低單一金鑰的風險。一個廣為人知的方法是將管理角色置於專用的多重簽名之後。參考:Safe 關於 Safe 是什麼的文檔
  • 暫停和熔斷機制
    • 可暫停的合約有助於應對事件或預言機故障。
  • 審核和最佳實踐

連結:

Layer 2 和橋接的細微差別

  • 標準代幣與託管代幣(Canonical vs. bridged tokens)
    • 如果您的代幣是 Layer 2 上的標準代幣,鑄造通常直接在該 Layer 2 上進行;橋接器隨後會在其他網路中反映供應量。
    • 如果標準代幣在 Layer 1 上,請考慮誰被授權在 Layer 2 的代表上進行鑄造,以及橋接合約如何控制該權限。
  • 批次操作
    • 考慮進行批次鑄造/贖回,以最大限度地降低成本並提高 Rollup 上的帳務清晰度,Dencun 升級後 Rollup 的成本已大幅降低。參考:以太坊的 Dencun 總覽

連結:

如何評估可以鑄造或銷毀的代幣

對於用戶和整合者:

  • 閱讀程式碼或經過驗證的原始碼
    • 檢查鑄造是否受角色限制;識別控制器(EOA、多重簽名、DAO)。
  • 驗證事件語義
    • 查找標準的 Transfer 事件,用於與零地址進行供應量變動的交換。
  • 審查可升級性
    • 如果是可升級的,請了解誰可以在什麼流程下進行升級。

瀏覽器和文檔的參考在此很有幫助:

今天是否應該採用 ERC-621?

  • 如果您希望有明確的供應量管理函數簽名,以便錢包或中間件可以定位,那麼 ERC-621 為您提供了一個命名清晰的介面。
  • 如果您已經依賴 OpenZeppelin 的模式,您很可能已經滿足了 ERC-621 精神中的重要部分——標準化的零地址 Transfer 事件——同時受益於經過審核的函式庫和靈活的角色設計。
  • 無論您選擇哪種方式,請記錄您的鑄造/銷毀政策(誰可以鑄造、何時鑄造、上限、審核流程),並使其對整合者易於理解。

結語和實用建議

鑄造和銷毀是強大的槓桿,需要嚴格的治理。無論您採用 ERC-621 的明確介面,還是堅持使用廣泛使用的 ERC-20 擴充功能,最重要的方面是標準化的事件語義、清晰的角色設計和安全的金鑰管理——尤其是在 2025 年,發行和贖回活動在 Layer 2 上加速進行之際。

為了營運安全,請將鑄造和管理金鑰保存在專用的冷儲存中,並要求對敏感操作進行多重簽名批准。OneKey 硬體錢包可以作為 EVM 網路中財務和管理角色的安全簽署器,整合流行的多重簽名設置和 dApps。使用硬體錢包對鑄造/銷毀和角色管理交易進行共同簽署,有助於降低單點故障風險,同時為您的代幣操作保持高效的工作流程。

使用 OneKey 保護您的加密之旅

View details for 選購 OneKey選購 OneKey

選購 OneKey

全球最先進嘅硬件錢包。

View details for 下載應用程式下載應用程式

下載應用程式

詐騙預警。支援所有幣種。

View details for OneKey SifuOneKey Sifu

OneKey Sifu

即刻諮詢,掃除疑慮。

繼續閱讀