Specify functions that cannot throw

This commit is contained in:
William Entriken 2018-02-16 14:18:18 -05:00 committed by GitHub
parent 992bbff14e
commit 1d613bab25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -77,6 +77,7 @@ interface ERC721 /* is ERC165 */ {
/// @notice Count all deeds assigned to an owner /// @notice Count all deeds assigned to an owner
/// @dev Throws if `_owner` is the zero address, representing invalid deeds. /// @dev Throws if `_owner` is the zero address, representing invalid deeds.
/// Otherwise this function must not throw.
/// @param _owner An address where we are interested in deeds owned by them /// @param _owner An address where we are interested in deeds owned by them
/// @return The number of deeds owned by `_owner`, possibly zero /// @return The number of deeds owned by `_owner`, possibly zero
function countOfDeedsByOwner(address _owner) external view returns (uint256 _count); function countOfDeedsByOwner(address _owner) external view returns (uint256 _count);
@ -84,6 +85,7 @@ interface ERC721 /* is ERC165 */ {
/// @notice Enumerate deeds assigned to an owner /// @notice Enumerate deeds assigned to an owner
/// @dev Throws if `_index` >= `countOfDeedsByOwner(_owner)` or if /// @dev Throws if `_index` >= `countOfDeedsByOwner(_owner)` or if
/// `_owner` is the zero address, representing invalid deeds. /// `_owner` is the zero address, representing invalid deeds.
/// Otherwise this must not throw.
/// @param _owner An address where we are interested in deeds owned by them /// @param _owner An address where we are interested in deeds owned by them
/// @param _index A counter less than `countOfDeedsByOwner(_owner)` /// @param _index A counter less than `countOfDeedsByOwner(_owner)`
/// @return The identifier for the `_index`th deed assigned to `_owner`, /// @return The identifier for the `_index`th deed assigned to `_owner`,
@ -194,18 +196,21 @@ interface ERC721Enumerable {
// this.ownerByIndex.selector; // this.ownerByIndex.selector;
/// @notice Enumerate active deeds /// @notice Enumerate active deeds
/// @dev Throws if `_index` >= `countOfDeeds()` /// @dev Throws if `_index` >= `countOfDeeds()`.
/// Otherwise must not throw.
/// @param _index A counter less than `countOfDeeds()` /// @param _index A counter less than `countOfDeeds()`
/// @return The identifier for the `_index`th deed, (sort order not /// @return The identifier for the `_index`th deed, (sort order not
/// specified) /// specified)
function deedByIndex(uint256 _index) external view returns (uint256 _deedId); function deedByIndex(uint256 _index) external view returns (uint256 _deedId);
/// @notice Count of owners which own at least one deed /// @notice Count of owners which own at least one deed
/// Must not throw.
/// @return A count of the number of owners which own deeds /// @return A count of the number of owners which own deeds
function countOfOwners() external view returns (uint256 _count); function countOfOwners() external view returns (uint256 _count);
/// @notice Enumerate owners /// @notice Enumerate owners
/// @dev Throws if `_index` >= `countOfOwners()` /// @dev Throws if `_index` >= `countOfOwners()`
/// Otherwise must not throw.
/// @param _index A counter less than `countOfOwners()` /// @param _index A counter less than `countOfOwners()`
/// @return The address of the `_index`th owner (sort order not specified) /// @return The address of the `_index`th owner (sort order not specified)
function ownerByIndex(uint256 _index) external view returns (address _owner); function ownerByIndex(uint256 _index) external view returns (address _owner);
@ -215,7 +220,7 @@ 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. 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 ```solidity
/// WARNING: THIS INTERFACE IS TO PROMOTO DISCUSSION, WE DO NOT RECOMMEND YOU /// WARNING: THIS INTERFACE IS TO PROMOTE DISCUSSION, WE DO NOT RECOMMEND YOU
/// IMPLEMENT IT YET AS THERE ARE SECURITY CONSIDERATIONS /// IMPLEMENT IT YET AS THERE ARE SECURITY CONSIDERATIONS
/// @title Delegated operator extension to ERC-721 interface /// @title Delegated operator extension to ERC-721 interface
/// @author William Entriken (https://phor.net) /// @author William Entriken (https://phor.net)