Solidity

onERC721 接收實現

  • March 17, 2019

根據 ERC721 的要求,我必須實現一個 ERC721Recieved。我是這樣做的:

function onERC721Received(
   address _operator, 
   address _from, 
   uint256 _tokenId, 
   bytes calldata _data
)external returns(bytes4) {
   return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"));
} 

這似乎符合函式的要求。然而,這提出了兩個問題:

  1. 如果這實際上不使用任何參數,為什麼還要將參數傳遞給函式呢?現在每次我測試合約時都會拋出錯誤。
  2. 這個功能背後的原因是什麼?

您可以使用此實現刪除錯誤:

function onERC721Received(
   address, 
   address, 
   uint256, 
   bytes calldata
)external returns(bytes4) {
   return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"));
} 

這些參數用於想要使用它們的實現。也許是為了對傳入資產進行會計處理。或者可能是因為拒絕接收某些資產。

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