Automatically merged updates to draft EIP(s) 1484

Hi, I'm a bot! This change was automatically merged because:

 - It only modifies existing Draft or Last Call EIP(s)
 - The PR was approved or written by at least one author of each modified EIP
 - The build is passing
This commit is contained in:
Noah Zinsmeister 2018-10-26 18:51:55 -04:00 committed by EIP Automerge Bot
parent 3a484db94d
commit 729bb4a575
1 changed files with 11 additions and 9 deletions

View File

@ -25,7 +25,7 @@ The proliferation of on-chain identity solutions can be traced back to the fact
- `Identity`: A data structure containing all the information relevant to a particular identity. They are denominated by EINs (incrementing `uint`s), which are unique but uninformative.
- `Associated Address`: An Ethereum address publicly associated with an `Identity`. In order for an address to become an `Associated Address` for an `Identity`, the `Identity` must produce signed messages from the candidate address and an existing `Associated Address` indicating this intent. Identities can remove an `Associated Address` by producing a signed message indicating intent to disassociate itself from the `Identity`. Signatures are stored in the `Registry` to prevent replay attacks. An address may only be an `Associated Address` for one `Identity` at any given time.
- `Associated Address`: An Ethereum address publicly associated with an `Identity`. In order for an address to become an `Associated Address` for an `Identity`, the `Identity` must produce signed messages from the candidate address and an existing `Associated Address` indicating this intent. Identities can remove an `Associated Address` by producing a signed message indicating intent to disassociate itself from the `Identity`. Signatures must include a timestamp within a rolling lagged window of the current `block.timestamp` to prevent replay attacks. An address may only be an `Associated Address` for one `Identity` at any given time.
- `Provider`: An Ethereum address (typically but not by definition a smart contract) authorized to add and remove `Associated Addresses`, `Providers`, and `Resolvers` from `Identities` who have authorized the `Provider` to act on their behalf. `Providers` exist to facilitate user adoption, and make it easier to manage `Identities`.
@ -169,7 +169,8 @@ Preforms the same logic as `mintIdentity`, but is called by a `Provider`. This f
```solidity
function mintIdentityDelegated(
address recoveryAddress, address associatedAddress, address[] resolvers, uint8 v, bytes32 r, bytes32 s
address recoveryAddress, address associatedAddress, address[] resolvers,
uint8 v, bytes32 r, bytes32 s, uint timestamp
) public returns (uint ein);
```
@ -177,11 +178,11 @@ Triggers event: [IdentityMinted](#identityminted)
#### addAddress
Adds the `addressToAdd` to the passed `EIN`. Requires signatures from both the `addressToAdd` and the `approvingAddress`.
Adds the `addressToAdd` to the `EIN` of the `approvingAddress`. Requires signatures from both the `approvingAddress` and the `addressToAdd`.
```solidity
function addAddress(
uint ein, address addressToAdd, address approvingAddress, uint8[2] v, bytes32[2] r, bytes32[2] s, uint salt
address approvingAddress, address addressToAdd, uint8[2] v, bytes32[2] r, bytes32[2] s, uint timestamp
) public;
```
@ -189,10 +190,10 @@ Triggers event: [AddressAdded](#addressadded)
#### removeAddress
Removes an `addressToRemove` from the passed `EIN`. Requires a signature from the `addressToRemove`.
Removes the `addressToRemove` from its associated `EIN`. Requires a signature from the `addressToRemove`.
```solidity
function removeAddress(uint ein, address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint salt) public;
function removeAddress(address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint timestamp) public;
```
Triggers event: [AddressRemoved](#addressremoved)
@ -417,12 +418,13 @@ contract ERC1484 {
function mintIdentity(address recoveryAddress, address provider, address[] resolvers) public returns (uint ein);
function mintIdentityDelegated(
address recoveryAddress, address associatedAddress, address[] resolvers, uint8 v, bytes32 r, bytes32 s
address recoveryAddress, address associatedAddress, address[] resolvers,
uint8 v, bytes32 r, bytes32 s, uint timestamp
) public returns (uint ein);
function addAddress(
uint ein, address addressToAdd, address approvingAddress, uint8[2] v, bytes32[2] r, bytes32[2] s, uint salt
address approvingAddress, address addressToAdd, uint8[2] v, bytes32[2] r, bytes32[2] s, uint timestamp
) public;
function removeAddress(uint ein, address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint salt) public;
function removeAddress(address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint timestamp) public;
function addProviders(address[] providers) public;
function addProviders(uint ein, address[] providers) public;
function removeProviders(address[] providers) public;