ERC-2981:NFT 版税的定义与实施

LeeMaimaiLeeMaimai
/2025年10月16日
ERC-2981:NFT 版税的定义与实施

要点总结

• ERC-2981提供了一个简洁的接口,用于查询NFT交易的版税信息。

• 该标准允许灵活的版税接收方设置,支持创作者多种需求。

• 交易平台的执行力度不一,创作者需关注平台政策以保障收益。

• 结合注册中心和可编程标准,创作者可以更好地维护其收入流。

NFT 版税最初只是创作者和交易平台之间的一种默契。随着交易的成熟和费用模式的演变,行业需要一种标准化的、链上可读的方式来描述版税信息,以便任何交易平台都能识别。ERC-2981 标准正是为此而生:它提供了一个简洁、可互操作的接口,用于查询任意给定 NFT 交易应支付的版税金额及接收方。本文将深入探讨 ERC-2981 是什么、其工作原理、实施注意事项,以及当前交易平台在执行和创作者盈利方面的现状。

ERC-2981 到底标准化了什么

ERC-2981 是一个以太坊标准,它为非同质化代币(NFT)定义了一个单一的函数:

  • 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 等链上标准也成为了跨平台获取版税数据的默认方式。

此后,生态系统也做出了相应的响应,包括:

在 2024-2025 年,ERC-2981 在 L1 和 L2 网络上仍被广泛采用,并且选择遵守版税规则的交易平台通常会在结算交易时查询此接口。

接口工作原理(无惊喜)

在销售时,符合标准的交易平台会执行以下步骤:

  1. 通过 ERC-165(接口 ID 0x2a55205a)检查代币是否支持 IERC2981
  2. 调用 royaltyInfo(tokenId, salePrice) 函数,获取:
    • receiver:接收版税的地址。
    • royaltyAmount:根据 salePrice 计算出的版税金额。

通常情况下,创作者或藏品所有者会设置一个「默认版税」,并可选择性地设置「单代币版税」。许多实现使用 10,000 作为基点的分母。交易平台的会计系统随后会将销售收入分配给卖家、协议费用和版税接收方。

实施建议:

  • 避免 royaltyInfo 函数出现回滚:如果调用失败,交易平台可能会跳过支付。
  • 保持版税接收方可升级:例如通过 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-CN/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";
import "@openzeppelin/contracts/token/common/ERC2981.[sol](https://onekey.so/blog/zh-CN/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";
import "@openzeppelin/contracts/access/Ownable.[sol](https://onekey.so/blog/zh-CN/ecosystem/best-sol-wallets-in-2025-ultimate-guide-to-software-hardware-options/)";

[contract](https://onekey.so/blog/zh-CN/ecosystem/what-is-a-smart-contract/) MyNFT is ERC721, ERC2981, Ownable {
    uint256 private _nextTokenId;

    constructor([address](https://onekey.so/blog/zh-CN/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-CN/ecosystem/what-is-a-crypto-wallet-address/) to) external onlyOwner {
        _safeMint(to, _nextTokenId);
        _nextTokenId++;
    }

    // 可选:为特殊物品设置单代币版税
    function setTokenRoyalty(uint256 tokenId, [address](https://onekey.so/blog/zh-CN/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 实现应根据每个代币的销售价格计算版税,而不是捆绑销售价格。
  • 优雅的后备方案:如果版税接收方未设置,请返回零,以避免交易平台调用失败。

交易平台的现实:信号与执行

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 硬件钱包提供了:

  • 离线私钥存储,配有开源固件和透明的安全实践。
  • 与常见的以太坊工具(用于合约部署和管理操作)的顺畅集成。
  • 跨链支持,这在您的 NFT 部署在 L2 或多个 EVM 网络上时非常有用。

使用硬件钱包管理版税设置,可以确保您的链上收入信号不会被受损设备或热钱包篡改。

结论

ERC-2981 是 NFT 版税的基础层:一个简单、通用的接口,交易平台可以读取它来确定创作者的收益。它不保证执行——执行由交易平台的政策决定——但它统一了信号。在一个执行可选且不断发展的世界里,将 ERC-2981 与注册中心、拆分合约以及 ERC-721C 等可编程限制相结合,为创作者提供了维持其创作活动的实用工具。

如果您负责管理 NFT 藏品或创作者基础设施,请务必干净地实施 ERC-2981,进行彻底的测试,并使用硬件钱包保护您的管理员密钥。这种组合可以最大限度地提高跨交易平台的互操作性,同时保护您的项目所依赖的收入流。

使用 OneKey 保护您的加密之旅

View details for 选购 OneKey选购 OneKey

选购 OneKey

全球最先进的硬件钱包。

View details for 下载应用程序下载应用程序

下载应用程序

诈骗预警。支持所有币种。

View details for OneKey SifuOneKey Sifu

OneKey Sifu

即刻咨询,扫除疑虑。

继续阅读