# What is Axiom?

Axiom allows smart contracts to **trustlessly compute over the entire history of Ethereum**, including transactions and receipts. Developers can send on-chain queries into Axiom, which are trustlessly fulfilled with ZK-verified results sent in a callback to the developer's smart contract. This allows developers to build on-chain applications which access more data at a lower cost without adding additional trust assumptions.

These docs are for Axiom V2, which is **live on mainnet as of January 2024**.

*In conjunction with our V2 release, we are migrating the Axiom V2 testnet from Goerli to Sepolia and deprecating Axiom V1 as of January 22, 2024.*

#### Overview

Axiom uses ZK proofs to trustlessly read from block headers, states, transactions, and receipts in any historical Ethereum block. All Ethereum on-chain data is encoded in one of these forms, meaning that Axiom can access anything an archive node can. Queries into Axiom go through three stages:

**Submission:**Developers build an Axiom circuit using the Axiom Typescript SDK to define computations over on-chain data they want to request from Axiom. Using this circuit, they can query Axiom on-chain by sending a transaction to the`AxiomV2Query`

contract.**Fulfillment:**After a few minutes, Axiom will send results on-chain with a ZK validity proof that (1) the input data was correctly fetched from the chain and (2) the compute was correctly applied. This ZK proof is verified on-chain in the Axiom smart contract**Callback:**After verification, the final results are sent to the chosen smart contract via an on-chain callback. They can then be used in applications in the same way as standard on-chain data.

Because they are verified by a ZK proof, results from Axiom have **security cryptographically equivalent to that of Ethereum** and make no assumptions about crypto-economics, incentives, or game theory. We believe this offers the highest possible guarantee for smart contract applications.

#### Building an Axiom-powered on-chain application

Building a smart contract application with Axiom requires three steps:

- Write an Axiom circuit specifying your query into Axiom using the Axiom Typescript SDK.
- Receive results using an Axiom callback in your smart contract built with the Axiom smart contract SDK and test it with our Foundry cheatcodes.
- Deploy your contracts using Axiom V2 on
**Sepolia testnet**or**Ethereum mainnet**. See Contract Addresses for the production deployed addresses.

To learn more about building with Axiom, see Axiom Developer Flow or our walkthrough of an example app at Tutorial. To discuss ideas with us, fill out the early partner form.

#### How Axiom Works

Check out Protocol Design to understand how Axiom works and ZK Circuits for Axiom Queries to learn more about our ZK circuits. You can learn more about our deployment settings at Transparency and Security and about zero-knowledge proofs in general at Zero Knowledge Proofs.

#### Get In Touch

If you have questions, ideas, or would just like to chat, join the discussion in our Discord or the technical discussion on Telegram. Our circuit and smart contract code is open-source and available at our GitHub.