Solidity

如何訪問您的 NFT 合約中出售的 nft 資產價格?

  • January 1, 2022

我有一個獨特的案例,我想實施一個 NFT 合約,以防止使用者以低於特定的乙太幣價格出售/轉讓 NFT 代幣。Opensea使用wyvern 協議進行 NFT 訂單匹配(atomicMatch)。據我了解,目前opensea上的NFT代幣交易流程*(簡體)*如下

賣家

賣家第一次在 opensea SetApprovalForAll 觸發器上點擊出售,

允許運營商(代理賬戶)對他的所有代幣進行操作。

賣方通過發送簽名消息列出待售的 nft,該消息批准運營商在與購買訂單正確匹配時代表所有者轉讓該特定 nft。

買家

買家在列出的 NFT -> AtomicMatch 觸發器上點擊購買。 驗證已簽署的訂單並匹配買賣訂單。轉移資金和費用。正在出售/購買的資產。nft合約的call或delegatecall轉移資產

AtomicMatch()

executeFundsTransfer(buy, sell);``returns price``safeTransferFrom()

現在我只能控制最後一步safeTransferFrom(),我如何在該函式中知道資產的乙太幣價值/價格是多少,顯然我可以防止它以特定價格出售

整個過程是一個單一的事務,所以我相信應該有一些方法來訪問executeFundsTransfer()這個問題的數據或任何解決方法。

訂單匹配資訊——買單、賣單——不會在鏈上保存或訪問,您的合約可以在轉賬期間讀取。

有一些方法可以做到你所說的,但這不一定是你想要的。

您可以禁用合約中的所有 ERC-721 傳輸,除非它們是由您的合約本身發起的。因此,您可以創建自己的匹配順序函式來評估原子順序,並且僅在您喜歡時才輸入順序。

這意味著人們不能直接在 OpenSea 上買賣,但他們可以接受這些訂單並在您的網站上執行。

引用自:https://ethereum.stackexchange.com/questions/117721