Skip to main content

rings_node/extension/types/
snark.rs

1//! Backend message types for SNARK
2//! ==============================
3use rings_snark::prelude::nova::provider::Bn256EngineKZG;
4use rings_snark::prelude::nova::provider::GrumpkinEngine;
5use rings_snark::prelude::nova::provider::PallasEngine;
6use rings_snark::prelude::nova::provider::VestaEngine;
7use serde::Deserialize;
8use serde::Serialize;
9
10use crate::extension::snark::SNARKGenerator;
11
12/// Message for snark task
13#[derive(Debug, Clone, Deserialize, Serialize)]
14pub struct SNARKTaskMessage {
15    /// uuid of task
16    pub task_id: uuid::Uuid,
17    /// task details
18    #[serde(
19        serialize_with = "crate::util::serialize_gzip",
20        deserialize_with = "crate::util::deserialize_gzip"
21    )]
22    pub task: SNARKTask,
23}
24
25// `SNARKTaskMessage` now travels as a `snark` namespace [`Envelope`] payload (see
26// [`crate::extension::snark::SnarkProtocol`]); it no longer wraps into `BackendMessage`.
27
28#[cfg(feature = "snark")]
29/// Message types for snark task, including proof and verify
30#[derive(Debug, Clone, Deserialize, Serialize)]
31pub enum SNARKTask {
32    /// Proof task
33    SNARKProof(Box<SNARKProofTask>),
34    /// Verify task
35    SNARKVerify(SNARKVerifyTask),
36}
37
38/// Message type of snark proof
39#[derive(Debug, Clone, Deserialize, Serialize)]
40pub enum SNARKProofTask {
41    /// SNARK with curve pallas and vesta
42    PallasVasta(SNARKGenerator<PallasEngine, VestaEngine>),
43    /// SNARK with curve vesta and pallas
44    VastaPallas(SNARKGenerator<VestaEngine, PallasEngine>),
45    /// SNARK with curve bn256 with KZG multi linear commitment and grumpkin
46    Bn256KZGGrumpkin(SNARKGenerator<Bn256EngineKZG, GrumpkinEngine>),
47}
48
49/// Message type of snark proof
50#[derive(Debug, Clone, Deserialize, Serialize)]
51pub enum SNARKVerifyTask {
52    /// SNARK with curve pallas and vesta
53    PallasVasta(String),
54    /// SNARK with curve vesta and pallas
55    VastaPallas(String),
56    /// SNARK with curve bn256 with KZG multi linear commitment and grumpkin
57    Bn256KZGGrumpkin(String),
58}