# On-Chain KYC

### Introduction

The on-chain KYC feature enables you to verify users' identities in a privacy-preserving manner, granting access to your dApps without compromising sensitive information. For example, if you need to verify a user’s identity before allowing access to your smart contract, this can be done in three key steps:

#### On-chain KYC Configuration

1. dApps [deploy the on-chain KYC contracts](/hypersign-kyc/on-chain-kyc/contracts-deployment.md) via the Entity Studio dashboard on their preferred (supported) blockchains.
2. dApps [activate the on-chain KYC settings and configure zero-knowledge (zk) proof ](/hypersign-kyc/integrations/widget-configuration.md)options within the widget configuration.

#### Token Minting

1. Users generate the required [zk proofs](/hypersign-kyc/concepts/zero-knowledge-proof-zkp.md) from their identity credentials.
2. Users mint Soulbound Tokens (SBTs) tied to their zk proofs.

#### Token Verification

1. The dApp’s smart contract queries and verifies the user's SBT directly on-chain, confirming identity before granting access.

This process provides decentralised, privacy-respecting identity verification for secure dApp access.

{% content-ref url="/pages/Ran74Cx714lUWZJqqH6O" %}
[Supported Blockchains](/hypersign-kyc/on-chain-kyc/supported-blockchains.md)
{% endcontent-ref %}

### Architecture

The architecture of on-chain KYC contracts is straightforward, consisting primarily of three smart contracts and a set of libraries. Initially, the Hypersign Admin deploys the **Hypersign KYC Factory** contract on the blockchain. This KYC Factory contract manages a registry of issuers and maintains the contract addresses of their respective KYC Issuer contracts.

For any dApp that wishes to implement an on-chain KYC system, they simply call the **Hypersign KYC Factory** contract to initiate the deployment of their dedicated **Hypersign KYC Issuer** contract. The contract serves two primary purposes: (a) Deploying the **Hypersign KYC Token** contract, and (b) Verifying zero-knowledge (zk) proofs to mint the **Hypersign KYC Token** for users. Once a dApp deploys its own **Hypersign KYC Issuer** contract, it needs to call the **Hypersign KYC Token** contract to instantiate its respective KYC token contract. Users then mint their on-chain ID—a  Soulbound Token (SBT)—through the **Hypersign KYC Issuer** contract, establishing their verified identity on-chain.

<div data-full-width="false"><figure><img src="/files/iGtyck43PzfzmO5Cr11U" alt=""><figcaption></figcaption></figure></div>

Finally, The **Hypersign KYC Token** contract is responsible for managing all on-chain identities for users. dApps that need to confirm a user’s completion of the KYC process can call this contract to verify their status.

{% hint style="info" %}
As a dApp, you do not need to worry about Hypersign KYC Factory Contract. You only need to deploy the KYC Issuer and KYC Token contract through Entity Studio Dashboard in just few button clicks.&#x20;
{% endhint %}

Let's go ahead and deploy these two contract through Entity studio dashboard:&#x20;

{% content-ref url="/pages/aMwfTbxRiWGbdejezekK" %}
[Contracts Deployment](/hypersign-kyc/on-chain-kyc/contracts-deployment.md)
{% endcontent-ref %}


---

# 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.hypersign.id/hypersign-kyc/on-chain-kyc.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.
