diff --git a/EIPS/eip-721.md b/EIPS/eip-721.md index cbe03f4c..e1d82450 100644 --- a/EIPS/eip-721.md +++ b/EIPS/eip-721.md @@ -156,6 +156,8 @@ A wallet/broker/auction application MUST implement the **wallet interface** if i ```solidity /// @dev Note: the ERC-165 identifier for this interface is 0xf0b9e5ba +/// @dev Note: the application will get the prior owner of the token +/// via _from parameter -- but it will NOT see who called safeTransferFrom. interface ERC721TokenReceiver { /// @notice Handle the receipt of an NFT /// @dev The ERC721 smart contract calls this function on the recipient @@ -295,6 +297,8 @@ Failed transactions will throw, a best practice identified in ERC-223, ERC-677, Creating of NFTs ("minting") and destruction NFTs ("burning") is not included in the specification. Your contract may implement these by other means. Please see the `event` documentation for your responsibilities when creating or destroying NFTs. +We considered adding an operator parameter to `onERC721Received`. This would allow you be to approved for a token and then send it to a wallet/broken/auction application, then that application could recognize you as the one that sent it. Instead, we opted to not add an operator parameter. If you want to take a token from somebody else and send it to these applications on your behalf then you should use two transactions. People writing wallet/broken/auction should recognize that the from address they receive is the previous token owner from the perspective of the ERC-721 contract. Those applications may have a different concept of ownership (beneficial ownership) that they need to consider. + *Alternatives considered: only allow two-step ERC-20 style transaction, require that transfer functions never throw, require all functions to return a boolean indicating the success of the operation.* **ERC-165 Interface**