From 992bbff14ef26027aab8cffaecf9152cf1152814 Mon Sep 17 00:00:00 2001 From: William Entriken Date: Fri, 16 Feb 2018 05:56:40 -0500 Subject: [PATCH] Add operators extension, a starting point --- EIPS/eip-721.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/EIPS/eip-721.md b/EIPS/eip-721.md index 4fd006ca..015e31cc 100644 --- a/EIPS/eip-721.md +++ b/EIPS/eip-721.md @@ -212,6 +212,28 @@ interface ERC721Enumerable { } ``` +Here is a also an optional **ERC-721 Operators Extension** for delegating access to your deeds. This is copied from the ERC-777 efforts. At this time DO NOT recommend this extension because of [a security considuration](https://github.com/ethereum/EIPs/issues/777#issuecomment-366182824) but we are putting it forth as a starting point for discussion. + +```solidity +/// WARNING: THIS INTERFACE IS TO PROMOTO DISCUSSION, WE DO NOT RECOMMEND YOU +/// IMPLEMENT IT YET AS THERE ARE SECURITY CONSIDERATIONS +/// @title Delegated operator extension to ERC-721 interface +/// @author William Entriken (https://phor.net) +/// @dev Specification at https://github.com/ethereum/eips/issues/XXXX +interface ERC721Operators { + + /// @dev ERC-165 (draft) interface signature for ERC721 ... + + function authorizeOperator(address operator) external; + function revokeOperator(address operator) external; + function isOperatorFor(address operator, address tokenHolder) external view returns (bool); + function operatorSend(address from, address to, uint256 _deedId) external; + event AuthorizedOperator(address indexed operator, address indexed tokenHolder); + event RevokedOperator(address indexed operator, address indexed tokenHolder); +} +``` + + ### Caveats The 0.4.19 Solidity interface grammar is not expressive enough to document the ERC-721 specification. A contract which complies with ERC-721 must also abide by the following: