Snarkify
Search
⌃K
Comment on page

Integrating Snarkify SDK

Introduction

The Snarkify SDK, a Rust-based library, offers a comprehensive interface for engaging with Snarkify Cloud. It allows for the swift conversion of your existing circuit code into a deployable prover. With Snarkify SDK's streamlined process, you can easily tap into the capabilities of Snarkify Cloud using just a handful of straightforward steps.

Installation

cargo add snarkify-sdk

Implement your prover

  1. 1.
    Create a new file snarkify.rs in your src/bin directory
  2. 2.
    Implement the ProofHandler trait and prove method for proof creation
  3. 3.
    Invoke snarkify_sdk::run::<{YourProofHandler}>() in the main function
Here's a snippet of code illustrating how to use the SDK:
use std::io;
​
use serde::{Deserialize, Serialize};
use snarkify_sdk::prover::ProofHandler;
​
struct MyProofHandler;
​
#[derive(Deserialize)]
struct MyInput {
public_input: String,
}
​
#[derive(Serialize)]
struct MyOutput {
proof: String,
}
​
impl ProofHandler for MyProofHandler {
type Input = MyInput;
type Output = MyOutput;
type Error = ();
​
fn prove(data: Self::Input) -> Result<Self::Output, Self::Error> {
Ok(MyOutput {
proof: data.public_input.chars().rev().collect(),
})
}
}
​
fn main() -> Result<(), io::Error> {
snarkify_sdk::run::<MyProofHandler>()
}
Please also checkout this library for a ready-to-deploy example of Poseidon hash prover.

Testing locally

To run your prover locally, simply run,
cargo run --bin snarkify
and you can test the prover locally with a sample request like
curl --location --request POST 'http://localhost:8080' \
--header 'Content-Type: application/json' \
--header 'ce-specversion: 1.0' \
--header 'ce-id: abcdef123456' \
--header 'ce-source: test' \
--header 'ce-type: com.test.example' \
--data-raw '{
"public_input": "aloha"
}'
​