Solidity
onERC721 接收實現
根據 ERC721 的要求,我必須實現一個 ERC721Recieved。我是這樣做的:
function onERC721Received( address _operator, address _from, uint256 _tokenId, bytes calldata _data )external returns(bytes4) { return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")); }
這似乎符合函式的要求。然而,這提出了兩個問題:
- 如果這實際上不使用任何參數,為什麼還要將參數傳遞給函式呢?現在每次我測試合約時都會拋出錯誤。
- 這個功能背後的原因是什麼?
您可以使用此實現刪除錯誤:
function onERC721Received( address, address, uint256, bytes calldata )external returns(bytes4) { return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")); }
這些參數用於想要使用它們的實現。也許是為了對傳入資產進行會計處理。或者可能是因為拒絕接收某些資產。