Onchain Identities

Manage onchain identities through the ONCHAINID open source protocol

Managing ONCHAINID

On the blockchain, stakeholders are represented by an identity smart contract called the ONCHAINID. This open source protocol is the chosen implementation for the decentralised identity framework. It is mandatory for any person (physical or moral) receiving ERC-3643 tokens to have this ONCHAINID deployed as it is the technology used to perform:

  • KYC and AML checks
  • Eligibility checks
  • Transfer compliance checks

Deploying an ONCHAINID

Pre-requisites

A deployed ERC-3643 is required for the moment to deploy an ONCHAINID via our Tokeny's API.

Investors

Having previously collected all the required information to create your investor Identity (see below), you can then call the whitelisting endpoint to:

  1. Create the identity on Tokeny's Identity Provider
  2. Deploy the ONCHAINID
  3. Authorize your investor on the token

Currently, you can only deploy an ONCHAINID in the context of an existing deployed ERC3643.

Agents

An ONCHAINID for an agent will be deployed automatically when you create an agent access.

Managing identity data and onchain credentials

Common identity data

Tokeny's Identity Provider defines the Standard Schema for an Identity to be valid. Below you can see a breakdown of this Standard Schema:

Common fields (both for Individuals and Corporates)

Field nameDescriptionValidation rulesMandatory?
individual_or_institutionIndicates if the owner of the ONCHAINID is an individual or an institutionMUST BE either :

- individual
- institution
Yes
ethereum_walletsThe list of wallets used by the owner of the ONCHAINIDMUST BE
[{ "address": "string, valid eth address", "alias": "string, less than 40 characters" }]
Yes
politically_exposedDefines if the owner of the ONCHAINID is a politically exposed person.MUST BE
[{ "exposed": "true or false", "details": "string" }]

details is mandatory if exposed is set to true.
No

Individuals

Field nameDescriptionValidation ruleMandatory?
first_nameThe first name of the owner of the ONCHAINIDNoneYes
last_nameThe last name of the owner of the ONCHAINIDNoneYes
genderThe gender of the owner of the ONCHAINIDMUST BE

- Male
- Female
No
birthdayThe date of birth of the owner of the ONCHAINIDMUST BE an ISO date string, with timezoneYes
birthplaceThe place of birth of the owner of the ONCHAINIDNoneNo
nationalityThe nationality of the owner of the ONCHAINIDMUST BE in ISO 3166 Alpha-3 format (see here)Yes
id_numberThe number of the ID card of the owner of the ONCHAINIDNoneYes, if passport_number is not set
passport_numberThe number of the passport of the owner of the ONCHAINIDNoneYes, if id_number is not set
ssn_numberThe social security number of the owner of the ONCHAINIDNoneNo
phoneThe phone number of the owner of the ONCHAINIDNoneNo
occupationThe occupation of the owner of the ONCHAINIDSee Occupations and activitiesNo
building_numberThe building number from the address of the owner of the ONCHAINIDNoneNo
streetThe street from the address of the owner of the ONCHAINIDNoneYes
zip_codeThe ZIP code of the address of the owner of the ONCHAINIDNoneYes
stateThe state from the address of the owner of the ONCHAINIDNoneNo
cityThe city of the address of the owner of the ONCHAINIDNoneYes
countryThe country of the address of the owner of the ONCHAINIDMUST BE in ISO 3166 Alpha-3 format (see here)Yes

Institutional

Field nameDescriptionValidation ruleMandatory?
institution_trade_nameThe trade name of the company owning the ONCHAINIDNoneYes
institution_legal_nameThe legal name of the company owning the ONCHAINIDNoneYes
institution_registry_numberThe national registration number of the companyNoneYes
institution_legal_formThe legal form of the companySee closed listNo
institution_incorporation_dateThe incorporation date of the companyMUST BE an ISO date string, with timezoneNo
institution_activityThe sector of activity of the companySee Occupations and activitiesNo
institution_registry_countryThe country of incorporation of the companyMUST BE in ISO 3166 Alpha-3 format (see here)Yes
institution_building_numberThe building number part of the address of the headquarters of the companyNoneNo
institution_streetThe street part of the address of the HQ of the companyNoneYes
institution_cityThe city part of the address of the HQ of the companyNoneYes
institution_stateThe state part of the address of the HQ of the companyNoneNo
institution_countryThe country part of the address of the HQ of the companyMUST BE in ISO 3166 Alpha-3 format (see here)Yes
institution_zip_codeThe ZIP code part of the address of the HQ of the companyNoneNo
institution_adminsThe list of individuals being set as the administrators of the companyMUST BE
[{ "first_name": "string", "last_name": "string", "gender": "Male or Female", "birthday": "ISO Date", "nationality": "ISO Country", "institution_admin_title": "String", "institution_admin_relation": "String", "email": "String", "phone": "String", "passport_number": "String", "id_number": "String" }]

- phone and email refer to the phone number and email address of the individual in the company
- institution_admin_title: the title of the individual in the company
- institution_admin_relation: the position of the individual in the company
The field itself is mandatory.
For the content of the field:

- first_name: mandatory
- last_name: mandatory
- gender: optional
- birthday: optional
- nationality: optional
- passport_number: mandatory if id_number is not set
- id_number:
mandatory if passport_number is not set
- institution_admin_title: mandatory
- institution_admin_relation: mandatory
- phone: mandatory
- email: mandatory

Occupation and sector of activities

The following values are available for the ONCHAINID Standard Schema for occupations and activites:

  • Electricity companies
  • Finance
  • Insurance
  • Bank
  • Traders
  • Confectionery
  • DIY
  • Post, mail and deliveries
  • Medical equipment and health products
  • Drink
  • Dairy products
  • Cosmetics
  • Consumer Consumption
  • Agriculture
  • Seeds
  • Brewery
  • Pharmacy
  • Tobacco
  • Rail transport
  • Wind turbine manufacturers
  • Energy
  • Health
  • Consumer Electronics
  • Cement
  • Aeronautics, Aerospace and Defense
  • Agribusiness
  • Cruises
  • Appliances
  • Electrical equipment
  • Industrial machinery
  • Entertainment & Media
  • IT technologies and services
  • Entertainment
  • Music Production (Majors)
  • Programming & Software
  • Information and Communication Technologies
  • Telecommunications operators
  • Advertising
  • Sporting equipment manufacturers
  • Luxury
  • Catering
  • Distribution
  • Large distribution
  • Heavy industry (excluding energy)
  • Computer equipment
  • Tires
  • Automobile Manufacturers
  • Building, construction and public works
  • Mobile phones
  • Telecommunication and Network Equipment Manufacturers
  • Chemistry
  • Mining activities
  • Oil companies
  • Airlines
  • Shipping of goods
  • Transportation

As an appointed agent of an ERC-3643 consuming this Identity, you can fetch the data of the investors you manage.

Offering-specific identity data

In addition to the Standard Schema, you can also create offering specific data. To set them up, please contact your Account Manager.

Onchain credentials

Identities follow the Decentralised Identity framework. On top of the ONCHAINID as the Decentralised Identifier (DID), Tokeny also enables the easy management of Verifiable Credentials.

Those credentials represent the proof of data onchain, signed by a Trusted Issuer (KYC agent, bank, crypto exchange, etc.). They are a hashed version of the data, containing the schema of validated data for you to be able to compare what you have with the issued proof.

You have several ways to consume those data:

  1. Proof only
  2. Compare your own data against the proof
  3. Request data

Consuming the credentials

If you only need the proof of data, not the data itself (KYC/AML check, nationality, majority...), you can directly rely on the credential(s) you find on the ONCHAINID.

Compare your data against the proof

If you want to compare the data your received against the emitted proof, perform the following actions.

Step 1: Get the type of credential

First, you need to fetch the identifier of the credential you're looking. You can find below a list of standard credential types.

Step 2: Get the credential

Once you have the identifier, you can directly get the value from the ONCHAINID.

Step 3: Fetch the proof schema and signing algorithm

On top of the actual data proof, a credential is represented by the proof schema: the list of data validated by the Trusted Issuer.

Step 4: Sign your data

The proof schema gives you the list of fields you need to sign to match with the signature. Use whatever cryptographic library you're comfortable with to sign the data with the signing algorithm.

You can then check if the result of this operation matches the credential fetched on step 1. If it is not the case, it means that part or entirety of the data you have is not the one that was verified by the credential.