此网页仅供信息参考之用。如果您居住在香港,请通过您的账户查看 OKX香港的产品和服务。

欧易 Web3 钱包强制版税合约说明

发布于 2024年6月18日更新于 2024年6月18日阅读时长 2 分钟

一、强制版税合约说明

欧易 Web3 钱包强制版税工具为您的合集提供一套完整流程的服务,可保证用户在二级市场的每次交易,都能为您的合集实现100%的版税收取。为此您需要允许合集只在欧易 Web3 钱包市场进行独家交易。

二、申请流程

  1. 项目方部署或升级NFT合约,合约实现可参考文档下方的示例

  2. 项目方将市场合约配置为白名单

  3. 项目方配置版税信息

    1. 版税逻辑修改指引

      • 使用合约管理员钱包,打开并连接合集页,点击红框处配置版税收款地址和收取比例

    2. 合集信息修改指引

      • 打开项目方资产合约管理员地址

      • 选中需编辑的合集,点击编辑,进行项目信息编辑

      • 备注:如项目方钱包无法连接到市场,请联系欧易 Web3 钱包市场技术人员进行配置

  4. 确认以下信息,并填写申请表单,向欧易 Web3 钱包市场提供 NFT 合约

    1. 仅欧易提供的白名单地址合约可交易(见对接文档)

    2. 其它市场合约不可交易

    3. 如白名单被开放给其它不执行强制版税的交易市场,欧易有权停止独家合集交易


三、各链白名单地址

聚合器地址、强制版税市场、统一授权合约地址为交易相关地址,是必须要配置的。批量转移工具地址为欧易工具地址,工具兼容 ERC721 与 ERC1155,是选择性配置的。

聚合器(必须配置)

强制版税市场合约(必须配置)

统一授权(必须配置)

批量转移工具(可选配置)

eth

0xa7FD99748cE527eAdC0bDAc60cba8a4eF4090f7c

0x82C0fDFA607d9aFbe82Db5cBD103D1a4D5a43B77

0x2B45c083c9cAb7edA8d2d63B926d9A828EE01c74

0x5B93A825829f4B7B5177c259Edc22b63d6E4e380

polygon

0xa7FD99748cE527eAdC0bDAc60cba8a4eF4090f7c

0xdc8B1f859bD9aFd93159DEcF75eaDD5f871aE6ee

0x2B45c083c9cAb7edA8d2d63B926d9A828EE01c74

0x8325A52a1B74Cd50B4CcF94dD821F56A7a9018E2

arb

0xa7FD99748cE527eAdC0bDAc60cba8a4eF4090f7c

0xdc8B1f859bD9aFd93159DEcF75eaDD5f871aE6ee

0x2B45c083c9cAb7edA8d2d63B926d9A828EE01c74

0xdc426b528377F3Bd301D09FA0Ea16ff169cC8C73

bnb

0xa7FD99748cE527eAdC0bDAc60cba8a4eF4090f7c

0xdc8B1f859bD9aFd93159DEcF75eaDD5f871aE6ee

0x2B45c083c9cAb7edA8d2d63B926d9A828EE01c74

0x6A5Cf9D9d0B8c32610b2a2e60cBb766D3404C3c6

mode

0xa7FD99748cE527eAdC0bDAc60cba8a4eF4090f7c

0x2Cc7a0Ab3CD788d4C59A31d7C4001351Fb1CE564

0x2B45c083c9cAb7edA8d2d63B926d9A828EE01c74

0x5F47bfAD0d500A999b6A937e8D1715Db0B573631

xlayer

0xa7FD99748cE527eAdC0bDAc60cba8a4eF4090f7c

0xEfcB1C65C1fff1BDE5938505137AddA08c02713B

0x2B45c083c9cAb7edA8d2d63B926d9A828EE01c74

0x08E4a58C6434f3d59d3D608596cFc3Cb95ef3329


四、参考方案(WIP)

1、合集侧的参考代码,以 Openzeppelin 4.9 的 ERC721 标准实现为例。点击参考链接,代码:

JavaScript
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
    
        if (_isContract(msg.sender)) {
            require(senderAllowlist[msg.sender], "Sender not in Allowlist");
        }
        
        // ... ...
        // ... ...
    }


2、参考此开源合约