From 729bb4a575fa4f8515c8235fbcf2647e748f96cf Mon Sep 17 00:00:00 2001 From: Noah Zinsmeister Date: Fri, 26 Oct 2018 18:51:55 -0400 Subject: [PATCH] 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 --- EIPS/eip-1484.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/EIPS/eip-1484.md b/EIPS/eip-1484.md index 0f7361cf..9c9ff8cb 100644 --- a/EIPS/eip-1484.md +++ b/EIPS/eip-1484.md @@ -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;