Solidity

OpenSea - 在 NFT 合約的 safeTransferFrom 函式中獲取銷售價格

  • April 21, 2022

想像一下 NFT 在 OpenSea 上出售。單筆交易中的 Opensea 合約呼叫從買方到賣方的資金轉移,並呼叫 NFT-collection 合約中的 safeTransferFrom 函式(用於在 OpenSea 之外進行自己的鑄幣和進一步的自定義邏輯)。

=> 我想要的是在 safeTransferFrom 函式呼叫****中獲取 NFT 銷售量(交易中發送給賣家的金額)。

我認為可以採用事務雜湊 - 但現在沒有這樣的全域變數。

例如,您可以查看此交易(通常通過 OpenSea 進行 nft 銷售)。我需要獲取金額(標有紅色)。

平時nft銷售交易截圖

它在目前版本的 Opensea/WyvernV2/Ethereum 中是不可能的。Wyvern 合約發送給您的合約/NFT 的每個呼叫都是外部呼叫。在這些呼叫中,您將只能訪問 Wyvern 對您的合約所做的特定呼叫的呼叫相關數據(例如 token-id、發送者、safeTransferFrom 中的接收者)和一般塊相關數據(例如塊雜湊、塊時間)。由於 Wyvern 不會在任何呼叫中發送有關初始交易的 msg.value 的資訊,因此您的智能合約將無法訪問該值。除了發送代幣之外,我找不到與代幣合約的任何其他互動,這將允許辨識賬戶餘額的任何變化。

通常 Wyvern 協議通過靜態呼叫發送價格資訊(請參閱原子匹配函式的 staticTarget 和 staticExtradata),但是,我很確定 Opensea API 不允許您在集合上指定 staticTarget。

但是,如果您控制賣方、買方或支付令牌,有一些解決方案。例如,您可以實施僅允許特定的賣方/買方並基於該集中解決方案創建。

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