在不使用市场解决方案的情况下,如何在智能合约级别向Nft集合添加版税?
我使用https://github.com/scaffold-eth这是我任务的官方回购
在不违反ER721标准的情况下,在智能合约级别添加版税的唯一方法是实现自定义transferFrom
功能,该功能要求在每次转账时支付版税。
这通常不会实现,因为这意味着用户在不支付版税的情况下无法在钱包之间转账。
有一个关于NFT特许权使用费的EIP建议了一个定义链上特许权使用费用的标准,然而,市场仍将负责执行该标准。
如果你不依赖第三方市场,那么你可以在你的NFT中添加一个"交易"功能,它实现了货币和NFT之间交换的逻辑。然而,像OpenSea这样的市场不会使用它,只有当你计划实现自己的市场时,它才是一个可行的解决方案。
存在EIP-2981。
thirdweb的Royalty智能合约是可用于任何基础智能合约的扩展。它执行EIP-2981 NFT特许权使用费标准,用于NFT市场上的特许权使用费用支持。
但还有来自manifold的另一个提议:特许权使用费注册
它为最初不支持的合同提供了功能添加此功能的任何链上版税规范他们的智能合约。参考EIP-2981覆盖实现可以在这里找到:https://github.com/manifoldxyz/royalty-registry-solidity/blob/main/contracts/overrides/RoyaltyOverride.sol.
尽管如此,市场场所实际上可能不会使用这些信息。您的智能合约仍然允许在没有使用费的情况下进行转账。例如Sudoswap和现在的X2Y2让买卖双方决定是否支付特许权使用费。
为了避免这种情况,对ERC721中的审批方法进行简单调整,将特定市场列入白名单:https://gist.github.com/cygaar/6d908d1eb12727d94583ad20b84a06eb