Solidity
EIP2981 實現錯誤
我知道 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 進行更多自定義邏輯。您將收到未使用參數的警告,但您無法擺脫它們並仍然遵循標準。