ERC: Identity
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
Fabian Vogelsteller
Ethereum Wallet
Mist Browser
web3.js
Flat File CMS
ERC-20: Token StandardT
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
What is identity?
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
What is identity?
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
What is identity?
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
What is identity?
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
What is identity?
Claim 1
Physical
Claim 2
New Claim 3
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
What is identity?
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
What is identity?
Its all claims!
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
What is identity?
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
Mastercoin
Counterparty
DigiX
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity
Keys Execution Claims
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity Keys
Can be actors (logins, proofs, access)
Can make transactions
Can sign documents
Can sign claims
…
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity Execution
Act as your identity (execute contracts, voting, ...)
Add claims to other identities and contracts
…
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity
Can be added by anyone
Need approval
Can't be changed without your permission, but removed
Contain issuer signature
Contain claim reference (hash, bit-mask)
…
Claims
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity Claims
{
uint256 claimType;
address issuer;
uint256 signatureType;
bytes signature; // holder.address + claimType + claim
bytes claim;
string uri;
}
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity Off-Chain Usage
1. Random String
2. Random String +
Identity Address

-> signed
3. getClaim()
4. Check claim
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity On-Chain Usage
2. getClaim()
1. superCoolFunc()
3. Check claim
(check claim
signature get key)
4. Check if claim issuer
still holds key
from signature
Issuer
5. continue execution of
superCoolFunc()
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity Claim Checking
{
uint256 claimType;
address issuer;
uint256 signatureType;
bytes signature; // holder.address + claimType + claim
bytes claim;
string uri;
}
1. Check which signature type is used
2. Build the signed hash

keccak256(address holder_address + uint256 _claimType + bytes _claim)
3. Recover address k from signature
4. Check if issuer identity contract still holds address k
5.
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity
ERC 725 Identity
ERC 735 Claim Holder
Fabian Vogelsteller, web3.js and Mist Developer, Ethereum

@feindura
http://frozeman.de/blog
ERC: Identity
https://github.com/ethereum/EIPs/issues/735
https://github.com/ethereum/EIPs/issues/725
Discuss and Contribute!

ERC Identity

  • 1.
  • 2.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog Fabian Vogelsteller Ethereum Wallet Mist Browser web3.js Flat File CMS ERC-20: Token StandardT
  • 3.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog What is identity?
  • 4.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog What is identity?
  • 5.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog What is identity?
  • 6.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog What is identity?
  • 7.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog What is identity? Claim 1 Physical Claim 2 New Claim 3
  • 8.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog What is identity?
  • 9.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog What is identity? Its all claims!
  • 10.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog What is identity?
  • 11.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog
  • 12.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog Mastercoin Counterparty DigiX
  • 13.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity
  • 14.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog
  • 15.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity Keys Execution Claims
  • 16.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity Keys Can be actors (logins, proofs, access) Can make transactions Can sign documents Can sign claims …
  • 17.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity Execution Act as your identity (execute contracts, voting, ...) Add claims to other identities and contracts …
  • 18.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity Can be added by anyone Need approval Can't be changed without your permission, but removed Contain issuer signature Contain claim reference (hash, bit-mask) … Claims
  • 19.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity Claims { uint256 claimType; address issuer; uint256 signatureType; bytes signature; // holder.address + claimType + claim bytes claim; string uri; }
  • 20.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity Off-Chain Usage 1. Random String 2. Random String + Identity Address
 -> signed 3. getClaim() 4. Check claim
  • 21.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity On-Chain Usage 2. getClaim() 1. superCoolFunc() 3. Check claim (check claim signature get key) 4. Check if claim issuer still holds key from signature Issuer 5. continue execution of superCoolFunc()
  • 22.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity Claim Checking { uint256 claimType; address issuer; uint256 signatureType; bytes signature; // holder.address + claimType + claim bytes claim; string uri; } 1. Check which signature type is used 2. Build the signed hash
 keccak256(address holder_address + uint256 _claimType + bytes _claim) 3. Recover address k from signature 4. Check if issuer identity contract still holds address k 5.
  • 23.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity ERC 725 Identity ERC 735 Claim Holder
  • 24.
    Fabian Vogelsteller, web3.jsand Mist Developer, Ethereum
 @feindura http://frozeman.de/blog ERC: Identity https://github.com/ethereum/EIPs/issues/735 https://github.com/ethereum/EIPs/issues/725 Discuss and Contribute!