ERC-2981:NFT 版稅的定義與實施方式

重點總結
• ERC-2981提供了一個可互操作的介面,用於查詢NFT銷售的版稅資訊。
• 市場的執行方式各不相同,但ERC-2981已成為顯示版稅資料的預設方式。
• 創作者應使用硬體錢包管理版稅設定,以確保安全性和可攜性。
• 設定合理的版稅上限可促進二級市場的流動性。
• 透過註冊表和可程式化標準,創作者可以更有效地維持其收入流。
NFT 版稅最初是創作者與市場之間的一種社會契約。隨著交易的成熟和費用模式的演變,業界需要一種一致的、鏈上的方式來描述版稅資訊,以便任何市場都能讀取。這正是 ERC-2981 所提供的:一個最小化、可互操作的介面,用於查詢任何給定 NFT 銷售應支付多少版稅以及支付給誰。本文將解釋 ERC-2981 是什麼,它的內部運作原理,實施時的注意事項,以及目前市場執行的現狀和創作者的貨幣化方式。
ERC-2981 實際標準化了什麼
ERC-2981 是一個以太坊標準,為非同質化代幣定義了一個單一函數:
royaltyInfo(tokenId, salePrice)→(receiver, royaltyAmount)
遵守版稅的市場會在銷售時調用 royaltyInfo 來計算支付。該標準不強制執行支付——它只描述了介面。執行與否是市場的政策問題。
關鍵設計選擇:
- 基於百分比:版稅根據銷售價格計算,通常使用類似於基點的分數(例如,500 = 5%)。
- 接收者靈活性:版稅接收者可以是創作者的地址、多簽錢包、拆分合約或可升級的支付地址。
- 適用於 ERC-721 和 ERC-1155:ERC-2981 與常見的 NFT 標準兼容,並依賴 ERC-165 進行介面檢測。
對於生產就緒的實施,許多團隊構建在 OpenZeppelin 的 ERC2981 之上。
為何現在它很重要
自 2023 年以來,幾家領先的市場已轉向選擇性執行版稅。最顯著的變化是 OpenSea 決定取消其 Operator Filter,該功能以前允許創作者將交易限制在強制執行版稅的場所;請參閱 OpenSea 的公告。因此,即使執行方式各不相同,ERC-2981 等鏈上標準已成為跨平台顯示版稅資料的預設方式。
此後,生態系統做出了以下回應:
- 註冊表基礎設施,以便市場能夠以統一的方式解析版稅邏輯,例如 Royalty Registry 和相關的 規範。
- 用於鏈上執行或限制的可程式化標準,特別是 ERC-721C (Creator Token Standards)。
- 替代的賺取模式,例如協議級獎勵和創作者激勵,例如 Zora 的 Creator Rewards。
在 2024-2025 年,ERC-2981 在 L1 和 L2 網路上的採用仍然普遍,選擇遵守版稅的市場通常會在結算交易時查詢此介面。
介面如何運作(沒有意外)
在銷售時,符合規範的市場將執行以下操作:
- 透過 ERC-165(介面 ID
0x2a55205a)檢查代幣是否支持IERC2981。 - 調用
royaltyInfo(tokenId, salePrice)以獲取:receiver:接收支付的地址。royaltyAmount:根據salePrice計算的支付金額。
創作者或收藏品擁有者通常會設定一個「預設版稅」,並可選擇設定「每代幣版稅」。許多實施使用 10,000 作為基點的分母。市場的會計系統隨後將銷售收入分配給賣家、協議費用和版稅接收者。
實施技巧:
- 避免在
royaltyInfo中出現 Revert——如果您的調用失敗,市場可能會跳過支付。 - 保持版稅接收者可升級(例如,透過 Ownable 或管理員控制),以便輪換金鑰或遷移到拆分合約。
- 設定合理的最高版稅上限(許多專案保持 ≤10%),以鼓勵二級市場流動性。
簡化的 Solidity 範例
以下是使用 OpenZeppelin 的簡化模式。它展示瞭如何設定預設版稅以及對 ERC-165 的覆蓋支持。在生產環境中,您應該添加存取控制、初始化保護和穩健的鑄造邏輯。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC721/ERC721.[sol](https://onekey.so/blog/zh-HK/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";
import "@openzeppelin/contracts/token/common/ERC2981.[sol](https://onekey.so/blog/zh-HK/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";
import "@openzeppelin/contracts/access/Ownable.[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/) MyNFT is ERC721, ERC2981, Ownable {
uint256 private _nextTokenId;
constructor([address](https://onekey.so/blog/zh-HK/ecosystem/what-is-a-crypto-wallet-address/) defaultReceiver, uint96 defaultBps)
ERC721("MyNFT", "MYN")
{
// 設定預設版稅(例如,500 = 5%)
_setDefaultRoyalty(defaultReceiver, defaultBps);
}
function mint([address](https://onekey.so/blog/zh-HK/ecosystem/what-is-a-crypto-wallet-address/) to) external onlyOwner {
_safeMint(to, _nextTokenId);
_nextTokenId++;
}
// 可選:為特殊物品設定每代幣版稅
function setTokenRoyalty(uint256 tokenId, [address](https://onekey.so/blog/zh-HK/ecosystem/what-is-a-crypto-wallet-address/) receiver, uint96 bps)
external
onlyOwner
{
_setTokenRoyalty(tokenId, receiver, bps);
}
// 必要:ERC-165 supportsInterface
function supportsInterface(bytes4 interfaceId)
public
view
override(ERC721, ERC2981)
returns (bool)
{
return super.supportsInterface(interfaceId);
}
}
有關更深入的文件,請參閱 OpenZeppelin 的 ERC2981 指南。
處理拆分、升級和邊緣情況
現實世界的版稅流程很少是單一接收者。考慮:
- 拆分合約:使用經過充分測試的基礎設施(如 0xSplits)以固定比例將收入路由給多方。
- 註冊表查詢:一些市場會查詢註冊表以獲取最新的版稅資料(Royalty Registry)。
- 可升級的接收者:在金鑰輪換或組織變更的情況下,保留更新接收地址的能力。
- 每代幣覆蓋:特殊版本可以相對於預設版稅具有獨特的版稅率。
技術說明:
- 統一的分母:為了在鏈下整合中保持清晰,請堅持使用基點(10,000)。
- 代幣類型感知:ERC-1155 實施應根據每代幣的銷售價格計算版稅,而不是捆綁價格。
- 順暢的回退:如果未設定版稅接收者,請返回零以避免市場調用失敗。
市場現實:信號 vs. 執行
ERC-2981 傳達創作者的意圖;它並不強制執行支付。不同的場所:
- 可能完全遵守 ERC-2981。
- 可能在某些條件下限制或減少版稅。
- 可能完全忽略版稅。
鑒於這種差異性,許多創作者嘗試混合模式:
- 透過 ERC-721C 進行鏈上限制,以將轉移限制在遵守版稅的運營商。
- 協議級獎勵,如 Zora 的 Creator Rewards。
- 圍繞尊重創作者收入的社群規範和社會壓力。
OpenSea 在 2023 年結束營運商篩選的決定反映了從協議級執行轉向市場選擇的總體趨勢,詳見其公告。在 2024-2025 年,這種平衡仍在繼續:ERC-2981 仍然是版稅元資料的規範介面,而執行則分散化。
測試、驗證和監控
為確保可靠的版稅行為:
- 驗證介面支持:根據 ERC-165,確認您的合約報告
supportsInterface(0x2a55205a) == true。 - 模擬調用:測試不同邊緣銷售價格和代幣的
royaltyInfo。 - 索引兼容性:如果您合作的市場依賴於相關註冊表(如 Royalty Registry),請在其中註冊您的合約。
- 清晰的記錄:發佈您的版稅政策、上限和接收者邏輯,以盡量減少對買家和市場的意外。
- 學習標準:如果您對 ERC-2981 不熟悉,Alchemy 的此概述是一個有用的入門指南:什麼是 ERC-2981?。
創作者的安全和金鑰管理
版稅配置由管理員控制。如果攻擊者獲得對您的部署者或管理員金鑰的存取權限,他們可以重新導向版稅或禁用它們。最佳實踐:
- 對於高權限操作(如設定預設版稅、更新接收者或部署拆分合約),請使用硬體錢包。
- 對於團隊管理的收藏品,優先選擇多簽設定。
- 保持簽名流程透明且可審計。
對於希望獲得安全、可攜式簽名且不影響使用者體驗的創作者和工作室,OneKey 硬體錢包提供:
- 離線私鑰儲存,具有開源韌體和透明的安全實踐。
- 與常見的以太坊工具順暢整合,用於合約部署和管理操作。
- 跨鏈支持,如果您在 L2 或多個 EVM 網路上鑄造 NFT,則非常有用。
使用硬體錢包管理版稅設定,可以確保您的鏈上收入信號不會被受損的設備或熱錢包篡改。
結論
ERC-2981 是 NFT 版稅的基礎層:一個簡單、通用的介面,市場可以讀取該介面以確定創作者的支付。它不能保證執行——執行由市場政策決定——但它標準化了信號。在一個執行是可選且不斷發展的世界裡,將 ERC-2981 與註冊表、拆分合約和 ERC-721C 等可程式化限制相結合,為創作者提供了維持其工作的實用工具。
如果您管理 NFT 收藏品或創作者基礎設施,請乾淨地實施 ERC-2981,徹底測試它,並使用硬體錢包保護您的管理員金鑰。這種組合最大限度地提高了跨市場的可互操作性,同時保護了您的專案所依賴的收入流。






