Skip to content

Commit

Permalink
refactor common interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
Noah Zinsmeister committed Nov 27, 2018
1 parent c460bcd commit 323eb91
Show file tree
Hide file tree
Showing 10 changed files with 99 additions and 73 deletions.
4 changes: 1 addition & 3 deletions contracts/examples/Providers/MetaTransactions/Forwarder.sol
@@ -1,8 +1,6 @@
pragma solidity ^0.5.0;

contract ForwarderInterface {
function forwardCall(address destination, bytes memory data) public returns (bytes memory returnData);
}
import "./ForwarderInterface.sol";

contract Forwarder is ForwarderInterface {
function forwardCall(address destination, bytes memory data) public returns (bytes memory returnData) {
Expand Down
@@ -0,0 +1,5 @@
pragma solidity ^0.5.0;

contract ForwarderInterface {
function forwardCall(address destination, bytes memory data) public returns (bytes memory returnData);
}
@@ -1,17 +1,7 @@
pragma solidity ^0.5.0;

import "./ExternalProxy.sol";

interface IdentityRegistryInterface {
function isSigned(address _address, bytes32 messageHash, uint8 v, bytes32 r, bytes32 s)
external view returns (bool);
function createIdentityDelegated(
address recoveryAddress, address associatedAddress, address[] calldata providers, address[] calldata resolvers,
uint8 v, bytes32 r, bytes32 s, uint timestamp
) external returns (uint ein);
function getEIN(address _address) external view returns (uint ein);
function isProviderFor(uint ein, address provider) external view returns (bool);
}
import "../../../interfaces/IdentityRegistryInterface.sol";

contract MetaTransactionsProvider is Forwarder {
IdentityRegistryInterface identityRegistry;
Expand Down
19 changes: 2 additions & 17 deletions contracts/examples/Resolvers/ERC1056/ERC1056.sol
@@ -1,22 +1,7 @@
pragma solidity ^0.5.0;

interface IdentityRegistryInterface {
function isSigned(
address _address, bytes32 messageHash, uint8 v, bytes32 r, bytes32 s
) external view returns (bool);
function getEIN(address _address) external view returns (uint ein);
}

interface EthereumDIDRegistryInterface {
function identityOwner (address identity) external view returns(address);
function validDelegate (address identity, bytes32 delegateType, address delegate) external view returns(bool);
function changeOwner (address identity, address newOwner) external;
function changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, address newOwner) external;
function addDelegate (address identity, bytes32 delegateType, address delegate, uint validity) external;
function revokeDelegate (address identity, bytes32 delegateType, address delegate) external;
function setAttribute (address identity, bytes32 name, bytes calldata value, uint validity) external;
function revokeAttribute (address identity, bytes32 name, bytes calldata value) external;
}
import "../../../interfaces/IdentityRegistryInterface.sol";
import "./EthereumDIDRegistryInterface.sol";

contract ERC1056 {
IdentityRegistryInterface identityRegistry;
Expand Down
@@ -0,0 +1,12 @@
pragma solidity ^0.5.0;

interface EthereumDIDRegistryInterface {
function identityOwner(address identity) external view returns(address);
function validDelegate(address identity, bytes32 delegateType, address delegate) external view returns(bool);
function changeOwner(address identity, address newOwner) external;
function changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, address newOwner) external;
function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity) external;
function revokeDelegate(address identity, bytes32 delegateType, address delegate) external;
function setAttribute(address identity, bytes32 name, bytes calldata value, uint validity) external;
function revokeAttribute(address identity, bytes32 name, bytes calldata value) external;
}
11 changes: 1 addition & 10 deletions contracts/examples/Resolvers/ERC725/ERC725RegistryResolver.sol
@@ -1,18 +1,9 @@
pragma solidity ^0.5.0;

import "./ClaimHolder.sol";

contract IdentityRegistryInterface {
function getEIN(address _address) public view returns (uint ein);
function getIdentity(uint ein) public view
returns (
address recoveryAddress,
address[] memory associatedAddresses, address[] memory providers, address[] memory resolvers
);
}
import "../../../interfaces/IdentityRegistryInterface.sol";

contract ERC725RegistryResolver {

IdentityRegistryInterface registry;

constructor (address _identityRegistryAddress) public {
Expand Down
67 changes: 67 additions & 0 deletions contracts/interfaces/IdentityRegistryInterface.sol
@@ -0,0 +1,67 @@
pragma solidity ^0.5.0;

interface IdentityRegistryInterface {
function isSigned(address _address, bytes32 messageHash, uint8 v, bytes32 r, bytes32 s)
external pure returns (bool);

// Identity View Functions /////////////////////////////////////////////////////////////////////////////////////////
function identityExists(uint ein) external view returns (bool);
function hasIdentity(address _address) external view returns (bool);
function getEIN(address _address) external view returns (uint ein);
function isAssociatedAddressFor(uint ein, address _address) external view returns (bool);
function isProviderFor(uint ein, address provider) external view returns (bool);
function isResolverFor(uint ein, address resolver) external view returns (bool);
function getIdentity(uint ein) external view returns (
address recoveryAddress,
address[] memory associatedAddresses, address[] memory providers, address[] memory resolvers
);

// Identity Management Functions ///////////////////////////////////////////////////////////////////////////////////
function createIdentity(address recoveryAddress, address[] calldata providers, address[] calldata resolvers)
external returns (uint ein);
function createIdentityDelegated(
address recoveryAddress, address associatedAddress, address[] calldata providers, address[] calldata resolvers,
uint8 v, bytes32 r, bytes32 s, uint timestamp
) external returns (uint ein);
function addAssociatedAddressDelegated(
address approvingAddress, address addressToAdd,
uint8[2] calldata v, bytes32[2] calldata r, bytes32[2] calldata s, uint[2] calldata timestamp
) external;
function removeAssociatedAddressDelegated(address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint timestamp)
external;
function addProviders(address[] calldata providers) external;
function addProvidersFor(uint ein, address[] calldata providers) external;
function removeProviders(address[] calldata providers) external;
function removeProvidersFor(uint ein, address[] calldata providers) external;
function addResolversFor(uint ein, address[] calldata resolvers) external;
function removeResolversFor(uint ein, address[] calldata resolvers) external;

// Recovery Management Functions ///////////////////////////////////////////////////////////////////////////////////
function triggerRecoveryAddressChangeFor(uint ein, address newRecoveryAddress) external;
function triggerRecovery(uint ein, address newAssociatedAddress, uint8 v, bytes32 r, bytes32 s, uint timestamp)
external;
function triggerPoisonPill(
uint ein, address[] calldata firstChunk, address[] calldata lastChunk, bool resetResolvers
) external;

// Events //////////////////////////////////////////////////////////////////////////////////////////////////////////
event IdentityCreated(
address indexed initiator, uint indexed ein,
address recoveryAddress, address associatedAddress, address[] providers, address[] resolvers, bool delegated
);
event AssociatedAddressAdded(
address indexed initiator, uint indexed ein, address approvingAddress, address addedAddress
);
event AssociatedAddressRemoved(address indexed initiator, uint indexed ein, address removedAddress);
event ProviderAdded(address indexed initiator, uint indexed ein, address provider, bool delegated);
event ProviderRemoved(address indexed initiator, uint indexed ein, address provider, bool delegated);
event ResolverAdded(address indexed initiator, uint indexed ein, address resolvers);
event ResolverRemoved(address indexed initiator, uint indexed ein, address resolvers);
event RecoveryAddressChangeTriggered(
address indexed initiator, uint indexed ein, address oldRecoveryAddress, address newRecoveryAddress
);
event RecoveryTriggered(
address indexed initiator, uint indexed ein, address[] oldAssociatedAddresses, address newAssociatedAddress
);
event IdentityPoisoned(address indexed initiator, uint indexed ein, address recoveryAddress, bool resolversReset);
}
20 changes: 1 addition & 19 deletions contracts/samples/Provider.sol
@@ -1,24 +1,6 @@
pragma solidity ^0.5.0;

interface IdentityRegistryInterface {
function getEIN(address _address) external view returns (uint ein);
function createIdentityDelegated(
address recoveryAddress, address associatedAddress, address[] calldata providers, address[] calldata resolvers,
uint8 v, bytes32 r, bytes32 s, uint timestamp
) external returns (uint ein);
function addAssociatedAddressDelegated(
address approvingAddress, address addressToAdd,
uint8[2] calldata v, bytes32[2] calldata r, bytes32[2] calldata s, uint[2] calldata timestamp
) external;
function removeAssociatedAddressDelegated(
address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint timestamp
) external;
function addProvidersFor(uint ein, address[] calldata providers) external;
function removeProvidersFor(uint ein, address[] calldata providers) external;
function addResolversFor(uint ein, address[] calldata resolvers) external;
function removeResolversFor(uint ein, address[] calldata resolvers) external;
function triggerRecoveryAddressChangeFor(uint ein, address newRecoveryAddress) external;
}
import "../interfaces/IdentityRegistryInterface.sol";

contract Provider {
IdentityRegistryInterface identityRegistry;
Expand Down
6 changes: 1 addition & 5 deletions contracts/samples/Resolver.sol
@@ -1,10 +1,6 @@
pragma solidity ^0.5.0;

interface IdentityRegistryInterface {
function getEIN(address _address) external view returns (uint ein);
function isResolverFor(uint ein, address resolver) external view returns (bool);
function identityExists(uint ein) external view returns (bool);
}
import "../interfaces/IdentityRegistryInterface.sol";

contract Resolver {
mapping(uint => string) internal emails;
Expand Down
16 changes: 8 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 323eb91

Please sign in to comment.