9 releases
0.1.0-alpha.9 | Nov 5, 2024 |
---|---|
0.1.0-alpha.8 | Jul 18, 2024 |
0.1.0-alpha.7 | Jun 12, 2024 |
0.1.0-alpha.6 | Feb 7, 2024 |
0.1.0-alpha.1 | Sep 27, 2023 |
#1255 in Web programming
243 downloads per month
26KB
482 lines
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]
:
snarkify-sdk = "0.1.0"
or simply run
cargo add snarkify-sdk
Quick Start
Code changes
- Create a new file
snarkify.rs
in yoursrc/bin
directory - Implement the
ProofHandler
trait andprove
method for proof creation - Invoke
snarkify_sdk::run::<{YourProofHandler}>()
in the main function
Here's a basic example illustrating how to use the SDK:
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<Self::Output, Self::Error> {
Ok(MyOutput {
proof: data.public_input.chars().rev().collect(),
})
}
}
fn main() -> Result<(), io::Error> {
snarkify_sdk::run::<MyProofHandler>()
}
Running & Testing
As an example, to run the prover basic_prover
in examples directory, simply run
cargo run --example basic_prover
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"
}'
Dependencies
~23–36MB
~615K SLoC