易交割?
回答要点:
版税功能的合约实现: 版税是NFT生态的核心机制之一,它保证了创作者能够从NFT的每次二次交易中获得持续收益。我们的版税实现分 为三个部分:版税信息存储、版税计算和版税分配。 版税信息存储: 我们设计了一个独立的RoyaltyEngine合约来管理所有NFT的版税信息。这个合约维护了一个映射关系,将每个NFT (通过合约地址和TokenID标识)关联到它的版税配置。版税配置包括版税比例(用基点表示,10000基点 =100%,所以500基点=5%)和接收地址列表。 当NFT首次在我们平台上架时,创作者需要设置版税信息。我们会验证调用者确实是NFT的创建者或当前所有者, 然后将版税信息记录在RoyaltyEngine合约中。这个设置是一次性的,之后的所有交易都会遵循这个版税规则。 我们也支持EIP-2981标准,这是以太坊社区提出的NFT版税标准接口。如果NFT合约本身实现了EIP-2981接口,我 们会优先读取合约内置的版税信息。如果没有,就使用创作者在我们平台设置的版税信息。 版税计算逻辑: 在Exchange合约的matchOrder函数中,当买卖双方达成交易时,合约会调用RoyaltyEngine的getRoyaltyInfo函 数,传入NFT地址、TokenID和交易金额,获取应支付的版税金额和接收地址。 计算公式很简单:版税金额 = 交易金额 × 版税比例 / 10000。比如交易金额是10 ETH,版税比例是500基点 (5%),那么版税金额就是0.5 ETH。 我们支持多个版税接收地址,比如一个NFT可以设置总版税10%,其中5%给原创作者,3%给合作艺术家,2%给项 目方。合约会按比例计算每个接收地址应得的金额。 版税分配执行:
计算出版税金额后,Exchange合约会在资金分配环节自动扣除版税并转给接收地址。整个资金流是:买家支付总 金额 → 扣除平台手续费 → 扣除版税 → 剩余金额给卖家。 所有的转账操作都在一个交易中完成,保证原子性。如果任何一步失败(比如版税接收地址拒绝接收),整个交易 会回滚,保证不会出现资金分配不一致的情况。 为何选择资金池合约模式: 我们选择让所有资金都通过Exchange合约进行处理,而不是让买家直接转账给卖家,主要有以下几个原因: 第一,保证交易的原子性。 如果采用买家直接转账给卖家的模式,就需要分多步操作:买家先转账给卖家,卖家确认收款后转移NFT。这种模 式存在信任问题,任何一方都可能违约。而且如果中间出现问题,很难回滚。 通过资金池合约模式,所有操作在一个交易中完成。合约先锁定买家的资金,验证所有条件都满足后,同时执行资 金分配和NFT转移。如果任何环节出现问题,整个交易自动回滚,买家的资金不会损失,卖家的NFT也不会被转 走。这种原子性保证是去中心化交易的核心优势。 第二,实现复杂的资金分配逻辑。 NFT交易的资金分配不是简单的一对一转账,而是需要分配给多个接收方:卖家、创作者(版税)、平台(手续 费),可能还有多个版税接收地址。如果让买家手动计算并分别转账给每个接收方,不仅操作复杂,而且容易出 错。 通过资金池合约,所有分配逻辑都在合约中自动执行。买家只需要支付总金额,合约会自动计算并分配给所有接收 方。这大大简化了用户操作,也避免了人为错误。 第三,统一收取平台手续费。 作为交易平台,我们需要收取一定的手续费来维持运营。如果买家直接转账给卖家,我们就无法强制收取手续费, 用户可能会绕过平台直接交易。 通过资金池合约,所有交易都必须经过合约,合约会自动扣除2.5%的平台手续费。这保证了平台的商业模式可持 续,也是去中心化交易所的标准做法。 第四,提供更好的安全保障。 资金池合约经过了专业的安全审计,实现了完善的安全机制:ReentrancyGuard防止重入攻击,Checks-Effects- Interactions模式防止状态不一致,严格的权限控制防止未授权操作。这些安全措施保护了用户的资金安全。 如果采用点对点直接转账,每个用户都需要自己实现安全机制,很容易出现漏洞。通过统一的资金池合约,我们可 以集中精力做好安全防护,让所有用户受益。 第五,便于实现高级功能。 资金池模式为未来的功能扩展提供了基础。比如我们可以实现拍卖功能,多个买家出价,合约自动选择最高价;可 以实现分期付款,买家分多次支付,每次支付后获得部分权益;可以实现托管服务,资金先锁定在合约中,买家确 认收到NFT后再释放给卖家。 这些高级功能如果采用点对点模式都很难实现,而资金池模式提供了天然的支持。
虽然资金池模式增加了一些Gas成本(因为需要执行更多的合约逻辑),但我们通过优化合约代码,将Gas消耗控 制在合理范围内。而且这种模式带来的安全性和便利性,远超过了额外的Gas成本。
用户只需要授权一次NFT给合约,之后可以创建任意多个订单,无需重复授权。买家购买时也只需要一次交易,就 能完成支付、版税分配、手续费扣除和NFT转移,用户体验很好。
OpenSea的Seaport协议也采用类似的资金池模式,但他们的实现更加复杂,支持更多的订单类型和条件。我们的 实现相对简单,专注于基本的买卖功能,这使得我们的合约更容易审计,Gas成本也更低。对于我们的目标用户群 体(Polygon链上的NFT交易者),这种简单高效的方案更合适。