Solidity

EIP2981 實現錯誤

  • March 8, 2022

我知道 EIP2981 需要在我的智能合約中覆蓋功能版稅資訊。我是這樣寫的:

function royaltyInfo(uint256 _tokenId, uint256 _salePrice)
       external
       view
       override
       returns (address receiver, uint256 royaltyAmount)
   {
       return (_recipient, (_salePrice * 1000) / 10000);
   }

但是當我編譯時,它說我沒有使用_tokenId。從那時起,我認為我應該刪除所需的 _tokenId 參數,但是每當我這樣做時,都會出現另一個錯誤,說我沒有實現該 IEIP2981 並指定了該函式:

function royaltyInfo(uint256 tokenId, uint256 salePrice)

有任何想法嗎?

老實說,你需要堅持這個編譯器警告。值得指出的是,這是一個警告,而不是錯誤。

更詳細地說,_tokenId這是 2981 要求的,以便合約可以對合約上的不同 NFT 具有可變利率。如果您為合約上的所有 NFT 制定一個固定費率,則這不是必需的,但仍然有必要添加,因為任何市場都會使用 a 呼叫該函式,_tokenId因為它們遵循 2981 標準。

IERC721Receiver 也經常出現類似的錯誤。onERC721Receiver接受參數,還允許圍繞通常未實現的特定 NFT 進行更多自定義邏輯。您將收到未使用參數的警告,但您無法擺脫它們並仍然遵循標準。

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