# Proving

{% hint style="danger" %}
**Outdated Documentation:** This page covers the architecture used for USC V1, which was deprecated on 2026-03-30. For the latest documentation, please visit: [usc documentation](https://docs.creditcoin.org/usc)
{% endhint %}

The Creditcoin oracle provisions source chain data to the Creditcoin chain via a decentralized network of provers. Each prover operator registers their own prover smart contract on Creditcoin and has their own off-chain prover worker. To initiate proving, a query is submitted to one of the available provers via a prover smart contract call. Then the query is stored in the prover contract and awaits processing. The prover off-chain worker polls the prover contract for new queries and begins processing queries in the order in which they are received.

To process a query, the prover needs two additional sources of information:\
1\. Attestations - The prover requests attestations stored on-chain in the Creditcoin attestation pallet. These are necessary to generate a continuity proof, which verifies that the queried block is in fact part of the finalized source chain.\
2\. Source chain blocks - The prover requests source chain blocks from an RPC node connected to the source chain. The prover doesn’t need to trust these blocks, because the prover can verify that they are genuine using attestations and a process called continuity proving. The source chain block containing our query transaction is used to construct a Merkle proof verifying that the claimed transaction actually took place.

The prover generates a cryptographic proof that summarizes both the continuity proof and Merkle proof. This proof is submitted to the prover contract, which verifies it on-chain via a verifier precompile on Creditcoin. Once verified, the results are stored in the prover contract, where user and builder smart contracts can access them as verified source chain data.

This process is illustrated in the following diagram:

<figure><img src="/files/oby0CxuzuEfqpUAqdjR1" alt=""><figcaption></figcaption></figure>


---

# 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.creditcoin.org/usc/usc-v1/creditcoin-oracle-subsystems/proving.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.
