首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何支付NFT市场交易的使用费?

如何支付NFT市场交易的使用费?
EN

Ethereum用户
提问于 2022-01-15 20:55:02
回答 2查看 121关注 0票数 1

我已经阅读了EIP-2891,但我不知道什么是正确的方式来接近付款时,交易发生。

一开始我想做这样的事情:

代码语言:javascript
复制
(...)

    // Transfer royalties fee
    (bool success1, ) = royaltiesRecipient.call{value: royaltiesAmount}("");
    require(success1, "Royalties fee transfer failure."); // <=== this can be a problem

    // Transfer sale value to seller
    (bool success2, ) = seller.call{value: saleValue}("");
    require(success2, "Seller transfer failure.");

    // Transfer NFT buyer
    IERC721(nftContractAddress).transferFrom(address(this), buyer, tokenId);

然而,在阅读了关于退出模式的文章后,存在这样一个风险,即版税的接收方是一份使交易失败的合同,因此该项目将无法在市场上销售。

我不认为退出模式是一个很好的选择在这里,因为特许权使用费接受者将需要不断跟踪什么时候和地点的NFT已经出售。一个更好的方法可以是尝试做交易,只有当它失败时,应用提取模式,但仍然不理想。

另一种方法可能只是删除require语句,但如果交易因任何其他原因而失败,则对版税接收方来说是不公平的。

你会怎么接近它?

EN

回答 2

Ethereum用户

发布于 2022-01-15 21:05:39

查看ReentrancyGuard在OpenZeppelin上的合同。使用修饰符nonReentrant()将确保如果接收方是一个契约,它将无法再次调用相同的函数,直到它完成。您不需要在这里应用退出模式(尽管过于谨慎并不是坏事)。

票数 0
EN

Ethereum用户

发布于 2022-01-19 21:03:26

好的,所以我计划做的是使用开放齐柏林飞艇支付分离器作为使用费的接受者时,通过一个市场的地方出售。

你是说这不会奏效,因为接收者是一份合同?

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/119024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档