> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veriox.io/llms.txt
> Use this file to discover all available pages before exploring further.

# On-Chain Anchoring

> How Veriox records a tamper-evident, independently verifiable audit trail on the Concordium blockchain.

Every verification Veriox performs is anchored on the **Concordium blockchain**. This gives you an audit trail that is tamper-evident and can be checked without trusting Veriox — useful if you ever need to demonstrate to a regulator that a visitor was verified, and when.

## What an anchor is

An anchor is a small transaction written to the Concordium blockchain that records a **cryptographic hash** of a verification record — not the record itself.

A hash is a one-way fingerprint: the same input always produces the same hash, but the hash cannot be reversed to recover the input. So the anchor proves *that a specific record existed at a specific time* without putting any of its contents — and certainly nothing about the visitor — on-chain.

<Info>
  No personal data is ever written to the blockchain. The anchor is a hash; the date of birth, name, and identity that the zero-knowledge proof is built on are never transmitted to Veriox in the first place (see [Zero-Knowledge Proofs](/how-it-works/zero-knowledge-proof)).
</Info>

## The two anchors

Each verification produces up to two anchors:

| Anchor             | Code   | When                                       | Records                                                                                                     |
| ------------------ | ------ | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------- |
| **Request anchor** | CCDVRA | When the verification challenge is created | The exact request shown to the visitor — the age threshold, accepted identity issuers, and a one-time nonce |
| **Audit anchor**   | CCDVAA | When a proof passes                        | The full audit record — the request, the submitted proof, and the result, bound together                    |

The request anchor exists for every verification attempt. The audit anchor is created **only when a proof passes** — a failed verification produces no audit anchor, because there is nothing successful to attest to.

## Why this matters

### Immutability

Once a transaction is finalised on the Concordium blockchain, it cannot be altered, backdated, or deleted — not by Veriox, not by anyone. The blockchain is maintained by an independent, decentralised network of validators, so there is no single party who can quietly rewrite history.

A row in a database says "trust us, this is what happened." An anchored record is different: because the on-chain hash is fixed the moment it is written, any later change to the stored record would no longer match the anchor. The audit trail becomes **tamper-evident** — alterations are detectable rather than invisible.

### Independence

The anchor lives on a public blockchain, not inside Veriox's systems. That means the evidence does not depend on Veriox continuing to exist, on our database being intact, or on our word. Anyone with the stored record can confirm it against the chain themselves.

### Compliance

If a regulator or auditor asks you to prove that a particular visitor completed age verification, you have cryptographic evidence that the verification happened, what was checked, and when — independently of Veriox. This is the difference between an audit trail you have to vouch for and one that vouches for itself.

## Verifying a record yourself

Every passed verification in your dashboard can be checked against the chain. On the **Audit record** tab of a verification, the **Verify against chain** button:

<Steps>
  <Step title="Recomputes the hash in your browser">
    Your browser takes the stored audit record and recomputes its hash locally, using the Concordium SDK.
  </Step>

  <Step title="Fetches the anchor from the blockchain">
    It reads the anchored value directly from a public Concordium node — not from Veriox.
  </Step>

  <Step title="Compares the two">
    If they match, the stored record is byte-for-byte what was anchored at verification time. The record has not been altered.
  </Step>
</Steps>

No Veriox servers are involved in this check, so the result is independent of us. A link to the [CCDScan](https://ccdscan.io) blockchain explorer is also provided if you want to inspect the raw transaction on a third-party site.

See [Reading Your Usage](/dashboard-billing/usage) for where to find this in your dashboard.
