# Overview

The core architecture behind Storage Proofs consists of several key components that work together.

## High-Level Component Overview

### Smart Contracts

These form the on-chain backbone of the Storage Proofs system.

| Contract Name              | Short Description                                       |
| -------------------------- | ------------------------------------------------------- |
| <h4>CommitmentsInbox</h4>  | Receives and processes data from other chains.          |
| <h4>FactsRegistry</h4>     | Stores and manages verified blockchain data.            |
| <h4>HeadersStore</h4>      | Efficiently stores and manages block headers.           |
| <h4>TimestampRemapper</h4> | Maintains mapping between timestamps and block numbers. |

Read more about these smart contracts [here](/architecture/smart-contracts.md).

## Off-Chain Proof Generation

This component generates the cryptographic proofs required for data verification.

## Storage Proof API

Provides an interface for developers to request Storage Proofs.

## Turbo

A smart contract interface that simplifies the integration of Storage Proofs into applications.

## Historical Block Hash Accumulator

Enables efficient access to historical block hashes.

## Native Messaging Systems

Facilitate secure communication between different blockchain networks.

## Component Interactions

When a smart contract on Chain B needs to access data from Chain A, it initiates a request through Turbo.&#x20;

Turbo interfaces with the Storage Proof API to request the necessary proofs.&#x20;

The Off-Chain Proof Generation system creates the required cryptographic proofs.&#x20;

These proofs are sent back through the API and Turbo to the requesting smart contract. The smart contract on Chain B uses the CommitmentsInbox to receive and verify the data from Chain A.&#x20;

The HeadersStore and FactsRegistry contracts store and manage the verified data. Other smart contracts can now access this verified data through the FactsRegistry.&#x20;

Throughout this process, the Historical Block Hash Accumulator enables efficient verification of historical data.&#x20;

Native Messaging Systems facilitate the secure transmission of critical data (like block hashes) between chains.


---

# 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.storageproofs.com/architecture/page.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.
