Exporting a Client Side Prover

Going from AxiomREPL to your app

Circuit Export

When you select the Export > Export TypeScript circuit option in AxiomREPL, a circuit.ts file will be downloaded with all the artifacts specific to your circuit that are required to run the circuit inside your own application. Namely, circuit.ts includes: the circuit size and configuration, default circuit inputs and their types, the circuit verification key, and your circuit code. This is all exported as a singular circuit object.

To add this into a React app, first install @axiom-crypto/react using a package manager such as npm/yarn/pnpm.

npm install @axiom-crypto/react


In order to use this in your Next.js 13 app, you'll need to wrap AxiomCircuitProvider in its own file to ensure that it's only mounted once:

"use client";

import { useEffect, useState } from "react";
import { AxiomCircuitProvider } from '@axiom-crypto/react';
import { circuit } from "@/lib/circuit";  // REPLACE w/ path to exported circuit.ts

export default function AxiomProvider({ children }: { children: React.ReactNode }) {
  const [mounted, setMounted] = useState(false);
  useEffect(() => setMounted(true), []);

  return (
      providerUri={process.env.NEXT_PUBLIC_PROVIDER_URI_GOERLI as string}
      {mounted && children}

and in your layout file:

return (


Then you can use the useAxiomCircuit hook to get built queries inside your application:

const circuit = useAxiomCircuit();

// you may need to wrap the `setParams` call in a useEffect hook to prevent an
// infinite reload loop 
useEffect(() => {
    circuit.setParams(inputs, callback);
}, [circuit, inputs, callback]);
const builtQuery = circuit.builtQuery;

// can now use builtQuery to send an on-chain Query to Axiom

Hook functionality

The following functions and variables are available from the useAxiomCircuit hook:


The Axiom instance variable. Exposes useful things like the AxiomV2Query contract address and ABI.


Function to set the inputs and callback.


Boolean that returns true if inputs and callback are set, or false otherwise.


Async function to build the inputs and callback along with the provided circuit into a Query to be sent to AxiomV2Query.


The full builtQuery variable that contains all inputs required for calling sendQuery on AxiomV2Query.


Variable that gives the calculated payment amount for the Query.


Function to reset the inputs and callback variables.

Last updated