> For the complete documentation index, see [llms.txt](https://docs.creditcoin.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.creditcoin.org/usc/creditcoin-oracle-subsystems/readability/step-2-transaction-proving.md).

# Step 2: Transaction Proving

## **Overview**

The query-prove-verify process enables Universal Smart Contracts to trustlessly verify and use data from source chains. The process consists of four main phases:

1. **Query Phase**: Identifying the target transaction for verification
2. **Proof Generation Phase**: Creating Merkle and continuity proofs
3. **Verification Phase**: Cryptographic verification of the proofs
4. **Data Extraction Phase**: Extracting transaction data from verified bytes

## **Proof Types**

To prove that a transaction occurred on a source chain, the system uses two complementary cryptographic proofs:

* **Merkle Proofs**: Prove that a specific transaction `x` is part of block `y`&#x20;
* **Continuity Proofs**: Prove that block `y` is part of the finalized source chain

Together, these proofs provide cryptographic certainty that a transaction actually occurred on the source chain, enabling trustless cross-chain applications.

Where are proofs generated, and where are they used?

* **Proof Generation API Server** (off-chain): Generates Merkle and continuity proofs on-demand
* [**Native Verifier Precompile**](/usc/overview/usc-architecture-overview.md#native-query-verifier-precompile) (on-chain): Verifies proofs synchronously and extracts data

## Full Process Summary

1. A dApp team or end user identifies a target transaction they want to verify. This is usually done via a **Oracle Query Worker** that listens for source chain events and submits proving requests.
2. The **Oracle Query Worker** requests proofs from the **Proof Generation API Server** via an endpoint like `proof-by-tx/{chain_key}/{tx_hash}` .&#x20;
3. The **Proof Generation API Server** retrieves attestation data from Creditcoin and fetches source chain blocks.
4. The **Proof Generation API Server** then uses attestation and block data to construct a continuity proof and a merkle proof for the target tx. These proofs are returned to the **Oracle Query Worker.**
5. The **Oracle Query Worker** submits the target tx and its proofs to Creditcoin via a **Universal Smart Contract** call. There, the tx and proofs are passed to the **Native Verifier Precompile**
6. The **Native Verifier Precompile** verifies both proofs synchronously, flagging whether the target tx is valid or invalid.&#x20;
7. Once verified, the transaction data can be decoded and used for dApp business logic


---

# 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:

```
GET https://docs.creditcoin.org/usc/creditcoin-oracle-subsystems/readability/step-2-transaction-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.
