# Snarkify SDK The Snarkify SDK is a Rust library designed to simplify the creation and deployment of ZKP provers as serverless services to Snarkify Trustless Cloud. ## Installation To include the Snarkify SDK in your project, add the following line to your `Cargo.toml` under `[dependencies]`: ```toml snarkify-sdk = "0.1.0" ``` or simply run ```shell cargo add snarkify-sdk ``` ## Quick Start ### Code changes 1. Create a new file `snarkify.rs` in your `src/bin` directory 2. Implement the `ProofHandler` trait and `prove` method for proof creation 3. Invoke `snarkify_sdk::run::<{YourProofHandler}>()` in the main function Here's a basic example illustrating how to use the SDK: ```rust,no_run use std::io; use async_trait::async_trait; use serde::{Deserialize, Serialize}; use snarkify_sdk::prover::ProofHandler; struct MyProofHandler; #[derive(Deserialize)] struct MyInput { public_input: String, } #[derive(Serialize)] struct MyOutput { proof: String, } #[async_trait] impl ProofHandler for MyProofHandler { type Input = MyInput; type Output = MyOutput; type Error = (); async fn prove(data: Self::Input) -> Result { Ok(MyOutput { proof: data.public_input.chars().rev().collect(), }) } } fn main() -> Result<(), io::Error> { snarkify_sdk::run::() } ``` ### Running & Testing As an example, to run the prover `basic_prover` in examples directory, simply run ```shell cargo run --example basic_prover ``` and you can test the prover locally with a sample request like ```shell 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" }' ```