ERC-6786: NFT 版权支付注册表
用于支付任何 NFT 版权费用的注册表,包含有关创建者的信息
Authors | Otniel Nicola (@OT-kthd), Bogdan Popa (@BogdanKTHD) |
---|---|
Created | 2023-03-27 |
Discussion Link | https://ethereum-magicians.org/t/eip-6786-royalty-debt-registry/13569 |
Requires | EIP-165, EIP-2981 |
摘要
该标准允许任何人支付特定 NFT 的版权费用,并跟踪已支付的版权金额。 它将累积每次通过它执行付款时的价值,并公开该信息。
动机
许多市场在每次出售或再次出售 NFT 时,不强制向 NFT 创建者支付任何版权费用,并且/或者不提供执行该操作的方式。 有些市场使用特定的版权系统,但是该系统适用于在其平台上创建的 NFT。
在这种情况下,需要有一种支付版权费的方式,因为这对于创作者继续为 NFT 生态系统做出贡献是一个强大的激励。
此外,该标准将提供一种计算为特定 NFT 支付给创建者的版权费用的方法。 在根据版权对 NFT 进行分类的上下文中,这可能很有用。 使用术语“债务”是因为该标准旨在提供一种了解在不支持版权的市场中发生的 NFT 交易是否存在任何未支付的版权费用的方法,并在这种情况下,公开一种支付它们的方式。
由于许多用于交易 NFT 的场所都在降低版权支付或采用集中式方法,因此我们希望提供一种让任何人都可以向创作者支付版权费的方式。
不仅 NFT 的所有者,而且任何人都可能为某个 NFT 支付版权费用。 这可能是一种支持创作者作品的方式。
规范
本文档中的关键词“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY”和“OPTIONAL”应按照 RFC 2119 中的描述进行解释。
每个符合 ERC-6786 的合约都 MUST 实现如下定义的接口:
合约接口
// @title 版权债务注册表
/// 注意:此接口的 ERC-165 标识符为 0x253b27b0
interface IERC6786 {
// 当支付了 NFT 的版权费时记录
/// @notice 当为地址为 tokenAddress 和 id 为 tokenId 的 NFT 支付了版权费时发出
event RoyaltiesPaid(address indexed tokenAddress, uint256 indexed tokenId, uint256 amount);
/// @notice 将 msg.value 发送给 NFT 的创建者
/// @dev 如果链上没有关于创建者的信息,则恢复
/// @param tokenAddress NFT 合约的地址
/// @param tokenId NFT 的 id
function payRoyalties(address tokenAddress, uint256 tokenId) external payable;
/// @notice 获取为 NFT 支付的版权费用金额
/// @dev
/// @param tokenAddress NFT 合约的地址
/// @param tokenId NFT 的 id
/// @return 为 NFT 支付的版权费用金额
function getPaidRoyalties(address tokenAddress, uint256 tokenId) external view returns (uint256);
}
所有定义为 view 的函数 MAY 实现为 pure 或 view
函数 payRoyalties
MAY 实现为 public 或 external
当调用 payRoyalties 函数时,MUST 发出事件 RoyaltiesPaid
当使用 0x253b27b0
调用时,supportsInterface
函数 MUST 返回 true
原理
付款可以使用原生币进行,因此很容易汇总已支付的版权费用金额。 我们希望此信息公开,以便任何人都可以在私下交易或在不支持版权费的市场中判断创建者是否收到了版权费。
用于付款的函数可以由任何人(不仅是 NFT 的所有者)调用,以随时支持创作者。 有一种查看以任何代币支付的版权费用金额的方法,也适用于任何人。
对于获取创建者的链上数据,我们将使用 ERC-2981,但是接受任何其他获取创建者地址的链上方法。
向后兼容性
此 ERC 没有引入任何向后不兼容性。
测试用例
测试包含在 ERC6786.test.js
中。
要在终端中运行它们,可以使用以下命令:
cd ../assets/eip-6786
npm install
npx hardhat test
参考实现
参见 ERC6786.sol
。
安全注意事项
没有直接与此标准的实现相关的安全注意事项。
版权
通过 CC0 放弃版权和相关权利。
Citation
Please cite this document as:
Otniel Nicola (@OT-kthd), Bogdan Popa (@BogdanKTHD), "ERC-6786: NFT 版权支付注册表 [DRAFT]," Ethereum Improvement Proposals, no. 6786, March 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-6786.