Internal

Name Service (NS)

Name Service (NS) is an independant routine to provide a readable identifier for DID and an easy way to log to company and person Identity through Relay. One can use NS to setup Manager for companies. THe Managers have the right to use the Relay to sign transaction on behalf of the Identity.

It supports :

  • Identity_name : a readable name for a DID (an identity workspace contract).

  • Alias Name : for a person it is a readable name to log its own identity an an email to authentify.

  • Manager Name : a readable name/email to log to a company identity.

Manager have a username made up of 2 parts example ‘johndoe.generalmotors”. A manager MUST have is own identity. Identity and Alias are one part names : “johndoe”

At Identity creation, 2 statements are written :

  • in the Resolver Table (identity_name/identity_workspace_contract/date)

  • in the Alias Table (alias_name/identity_name/email/date).

At Manager creation, one stament is written :

  • in the Manager Table of the company (manager_name/alias_name/email/date).

To log to the company Identity through Relay the manager will use a 2 parts username as “manager_name.company_identity_name”.

NS is today supported by SQLite3 with one DB per company for Managers and one DB for DID, Publickey and Alias (Migration to a decentralied support in progress).

def init():
       conn = sqlite3.connect('nameservice.db')
       cur = conn.cursor()
       cur.execute('create table alias(alias_name text, identity_name text, email text, date real)')
       cur.execute('create table resolver(identity_name text, identity_workspace_contract text, date real)')
       cur.execute('create table publickey(address text, key text)')
       conn.commit()
       cur.close()
       return

def init_host(host_name) :
       conn = sqlite3.connect(host_name + '.db')
       cur = conn.cursor()
       cur.execute('create table manager(manager_name text, alias_name text, email text, date real)')
       conn.commit()
       cur.close()

IPFS

We use IPFS and Pinata pin services for data persistence.

To add data to IPFS we first add to PInata Node and pin to local node. To get data , we first get from local and after timeout of 5s we get from pinata. Our Pin Policy at Pinata is to have 2 replications in Europe.

Identity vs keys

Company Identities are always created by Talao which has a copy of the private key and RSA key

For User Identity, it depends on the way it has been created. Talao might have nothing or only a Management key to sign transactions or a Management Key + RSA key or the private key. If user Identity has been created by Relay, Talao has a copy of the private key, RSA key and secret key.

Talao ERC725 Keys

Keys

Usage

1

Relay if activated

2

Not Used

3

Personal/Company settings

4

Not used

5

Issuer White List

20002

Issuer Documents

20003

Not used

Talao Documents

JSON format is used to organized data within Talao Documents.

Read more technical information on Talao Documents.

Doctype

One document is defined through is ‘doctype’ (int). A document can be Public, Private or Secret. By default most documents are Public.

doctype

Public

Private

Secret

kbis

10000

N/A

N/A

kyc

15000

N/A

N/A

certificate

20000

N/A

N/A

education

40000

40001

40002

experience

50000

50001

50002

Kbis

{ "siret" : "662 042 449 00014",
"date" : "1966-09-23",
"name" : "BNP",
"legal_form" : "SA",
"naf" : "6419Z",
"capital" : "2 499 597 122 EUROS",
"address" : "16 BOULEVARD DES ITALIENS, 75009 PARIS",
"activity" : "Servics financiers",
"ceo" : null,
"managing_director" : null}

Kyc

{"country" : "FRA3",
"id" : "15CA98225",
"lastname" : "Houlle",
"firstname" : "Pierre david",
"sex" : "M",
"nationality" : "Francaise",
"date_of_birth" : "1980-1212",
"date_of_issue" : "2012-02-13",
"date_of-expiration" : "2022-02-12",
"authority" : "Prefecture de Police de Paris",
"card_id" : "xxxxxxxx"}

Certificate

{"type" : "experience",
"title" : "Chef de projet Blockchain",
"description" : "Conception et ralisation d un prototype Ethereum d un suivi de production",
"start_date" : "2018/02/22",
"end_date" : "2019/01/25",
"skills" : ["Ethereum", "Solidity"],
"score_recommendation" : 2,
"score_delivery" : 3,
"score_schedule" : 4,
"score_communication" : 4,
"logo" : "thales.png",
"signature" : "permet.png",
"manager" : "Jean Permet",
"reviewer" : "Paul Jacques"}

Experience

{"company" : {"contact_email" : "Pierre@bnp.com",
                        "name" : "Thales",
                        "contact_name" : "Jean Dujardin",
                        "contact_phone" : "0607254589"},
"title" : "Chef de projet Blockchain",
"description" : "Conception et ralisation d un prototype Ethereum d un suivi de production",
"start_date" : "2018/02/22",
"end_date" : "2019/01/25",
"skills" : ["Ethereum", "Solidity"],
"certificate_link" : ""}

Education

{"organization" : {"contact_email" : "Pierre@bnp.com",
                        "name" : "Ensam",
                        "contact_name" : "Jean Meleze",
                        "contact_phone" : "0607255656"},
"title" : "Master Engineer",
"description" : "General Study",
"start_date" : "1985/02/22",
"end_date" : "1988/01/25",
"skills" : [],
"certificate_link" : ""}