> For the complete documentation index, see [llms.txt](https://docs.holonym.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.holonym.id/architecture/flow-of-data.md).

# Flow of Data

## Architecture

The Human ID protocol consists of the following components:

* Client (website or mobile app)
* Issuers (either using the Human ID credential format or custom formats such as ICAO9303 for NFC passports issued by the government)
* Hub smart contracts (1 per chain)
* Relayer

The flow of data is outlined in the action sequence described in the [Overview](/architecture/overview.md#actions) section. The following describes the flow of data in more detail. The diagram illustrates the *issuance+storage* (designated by 1.\*) and *proving* (designated by 2.\*) steps. An organization can grant access to users based on the results stored in the proof contract.

<figure><img src="/files/3OS5jdsan1QmR35OFpPy" alt=""><figcaption><p>Previous V2 architecture. In V3 storage is done in the Human Wallet, there is no Roots smart contract, and the Proof smart contract is called the Hub.</p></figcaption></figure>

1.1. User verifies themself to an issuer

1.2. The issuer signs credentials

1.3. The user generates a proof that credentials were sigend with particular attributes

1.5. User encrypts their credentials client-side. The encryption key is generated from the user's signature.

1.6. User stores their encrypted credentials in the Human Wallet

2.1. User generates a proof and (e.g., a proof that they are a US resident) and submits it to the verifier

2.2. The verifier attests to it and returns it to either the user or the relayer, depending on how the attestation is to be consumed

2.3. The attestation is given to the recipient: either the Hub smart contract or an offchain consumer


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.holonym.id/architecture/flow-of-data.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
