# 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](https://docs.storageproofs.com/architecture/smart-contracts).

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