diff --git a/EIPS/eip-721.md b/EIPS/eip-721.md index d98ac059..459bcb91 100644 --- a/EIPS/eip-721.md +++ b/EIPS/eip-721.md @@ -99,21 +99,27 @@ interface ERC721 { /// @dev This event emits when ownership of any deed changes by any /// mechanism. This event emits when deeds are created (`from` == 0) and /// destroyed (`to` == 0). Exception: during contract creation, any - /// transfers may occur without emitting `Transfer`. + /// transfers may occur without emitting `Transfer`. At the time of any transfer, + /// the "approved taker" is implicitly reset to the zero address. event Transfer(address indexed from, address indexed to, uint256 indexed deedId); - /// @dev This event emits on any successful call to - /// `approve(address _spender, uint256 _deedId)`. Exception: does not emit - /// if an owner revokes approval (`_to` == 0x0) on a deed with no existing - /// approval. + /// @dev The Approve event emits to log the "approved taker" for a deed -- whether + /// set for the first time, reaffirmed by setting the same value, or by setting to + /// to a new value. The "approved taker" is the zero address if nobody can take the + /// deed now or it is an address if that address can call `takeOwnership` to attempt + /// taking the deed. Any change to the "approved taker" for a deed SHALL cause cause + /// Approve to emit. However, an exception, the Approve event will not emit when + /// Transfer emits, this is because Transfer implicitly denotes the "approved taker" + /// is reset to the zero address. event Approval(address indexed owner, address indexed approved, uint256 indexed deedId); - /// @notice Approve a new owner to take your deed, or revoke approval by + /// @notice Set the "approved taker" for your deed, or revoke approval by /// setting the zero address. You may `approve` any number of times while - /// the deed is assigned to you, only the most recent approval matters. + /// the deed is assigned to you, only the most recent approval matters. Emits + /// an Approval event. /// @dev Throws if `msg.sender` does not own deed `_deedId` or if `_to` == /// `msg.sender`. - /// @param _deedId The deed you are granting ownership of + /// @param _deedId The deed for which you are granting approval function approve(address _to, uint256 _deedId) external payable; /// @notice Become owner of a deed for which you are currently approved