我有一个独特的例子,在这种情况下,我希望实现一个NFT契约,它阻止用户在特定的以太价格以下出售/传输NFT令牌。开放海使用威文协议进行NFT订单匹配(atomicMatch)。根据我的理解,开放市场上当前的NFT令牌交易流程(简化)如下
卖方
卖方在开盘时第一次点击销售
SetApprovalForAll触发器允许操作员(代理帐户)对其所有令牌进行操作。
卖方通过发送经签名的消息列出nft以供销售,该消息批准运营商在与购买订单适当匹配时代表所有者转让该nft。
买家
买方点击购买上市的NFT -> AtomicMatch触发器。
AtomicMatch()
确认已签署的订单,并匹配买卖订单。
executeFundsTransfer(buy, sell);转帐资金和费用。为其出售/购买资产的returns price。调用或委托nft合同的所有safeTransferFrom()转移资产
现在,我只控制最后一步,safeTransferFrom(),如何在这个函数中知道资产的乙醚值/价格是多少,然后我就可以阻止它以特定的价格出售。
整个过程是一个单一的事务,所以我认为应该有一些方法来访问executeFundsTransfer()的数据,或者解决这个问题的任何方法。
发布于 2022-01-01 15:22:18
订单匹配信息--购买订单,销售订单--不会在链上被保存或访问,这样你的合同就可以在传输过程中被读取。
有一些方法来做你说的,但这不一定是你想要的。
您可以禁用合同中的所有ERC-721传输,除非它们是由合同本身发起的。因此,您创建了自己的match order函数来计算原子顺序,并且只有在您喜欢的情况下才进行排序。
这意味着人们不能直接在OpenSea上买卖,但是他们可以接受这些订单并在你的网站上执行。
https://ethereum.stackexchange.com/questions/117721
复制相似问题