# zkKYC (GIP-1)

A **KYC Guardian** is an entity or service responsible for verifying the identity of users through government-issued documents (ids, passports, driving licenses, etc) and they work with a strictly defined set of personal data. The role of the KYC Guardian is to ensure the authenticity of the identity of the user.

### Personal Details

The following table list the personal details contained in a Galactica zkKYC. These need to be collected and validated by the KYC Guardian.

<table><thead><tr><th width="232.33333333333331">Key</th><th>Description</th><th>Technical details</th></tr></thead><tbody><tr><td>Surname</td><td>Surname as in passport/id</td><td>Latin letters only (UTF-8)</td></tr><tr><td>Forename</td><td>Forename as in passport/id</td><td>Latin letters only (UTF-8)</td></tr><tr><td>Middle Names</td><td>List of middle names as in passport/id</td><td>Can be empty, Latin letters only (UTF-8)</td></tr><tr><td>Year of birth</td><td>Year in date of birth as on passport/id</td><td><p>Each formatted as uint16. We chose this format instead of a Unix timestamp because</p><ol><li>There would be multiple timestamps for a single day (problem for uniqueness of <a data-mention href="/pages/8luXAXcbqopDM95m8CaY">/pages/8luXAXcbqopDM95m8CaY</a>)</li><li>Easier to calculate age (no need to consider leap years and DST)</li></ol></td></tr><tr><td>Month of birth</td><td>Month in date of birth as on passport/id</td><td>uint8 from 1 for January to 12 for December</td></tr><tr><td>Day of month of birth</td><td>Day in date of birth as on passport/id</td><td>uint8 in the range 1 to 31.</td></tr><tr><td>Country of citizenship</td><td>Issuer country of passport/id</td><td>Formatted as Alpha-3 code from <a href="https://www.iban.com/country-codes">https://www.iban.com/country-codes</a></td></tr><tr><td>Verification Level</td><td>Confidence the provider puts into the KYC. Similar to KYC levels on exchanges.</td><td><p>0 - no kyc</p><p>1 - kyc</p><p>2 - qualified investor</p></td></tr><tr><td>Expiration date</td><td>Expiration date of the passport/id used.<br>Checked in ZK validation.</td><td>Formatted as Unix Timestamp uint</td></tr><tr><td>Street + Number</td><td>Residential address</td><td>UTF-8 string</td></tr><tr><td>Postcode</td><td>Residential address</td><td>UTF-8 string</td></tr><tr><td>Town</td><td>Residential address</td><td>UTF-8 string</td></tr><tr><td>Region</td><td>Residential address</td><td>Formatted as ISO 3166-2 code from <a href="https://www.iso.org/obp/ui/#search/code/">https://www.iso.org/obp/ui/#search/code/</a></td></tr><tr><td>Country</td><td>Residential address</td><td>Formatted as Alpha-3 code from <a href="https://www.iban.com/country-codes">https://www.iban.com/country-codes</a></td></tr></tbody></table>

### Salt for Human ID

Galactica features the concept of the [DApp specific HumanID](/galactica-developer-documentation/galactica-concepts/zero-knowledge-kyc/dapp-specific-humanid.md). It assigns each human a unique ID in the context of a DApp. For example, it can be used for human centric DAO voting and reputation. The HumanID is derived in a zero-knowledge proof from personal fields in the zkKYC (name, birthday, passport ID) to get as close as possible to a unique ID. To prevent guessing the HumanID, it contains a salt. The hash of this salt is the [Holder Commitment](/galactica-developer-documentation/galactica-concepts/zero-knowledge-kyc/holder-commitment.md). It is registered on-chain in the [Root Contracts](/galactica-developer-documentation/galactica-components/root-contracts.md#humanidsaltregistry) to limit a user to one salt.

See [DApp specific HumanID](/galactica-developer-documentation/galactica-concepts/zero-knowledge-kyc/dapp-specific-humanid.md#registration-of-the-salt-for-the-humanid) for more details.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.galactica.com/galactica-developer-documentation/guardian-guide/create-and-issue-zkkyc/zkkyc-gip-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
