mirror of
https://github.com/saymrwulf/pasta_curves-source.git
synced 2026-09-04 20:03:39 +00:00
38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
use super::circuit::{Any, Column};
|
||
|
||
pub(crate) mod prover;
|
||
pub(crate) mod verifier;
|
||
|
||
#[derive(Clone, Debug)]
|
||
pub(crate) struct Argument {
|
||
pub input_columns: Vec<Column<Any>>,
|
||
pub table_columns: Vec<Column<Any>>,
|
||
}
|
||
|
||
impl Argument {
|
||
pub fn new(input_columns: &[Column<Any>], table_columns: &[Column<Any>]) -> Self {
|
||
assert_eq!(input_columns.len(), table_columns.len());
|
||
Argument {
|
||
input_columns: input_columns.to_vec(),
|
||
table_columns: table_columns.to_vec(),
|
||
}
|
||
}
|
||
|
||
pub(crate) fn required_degree(&self) -> usize {
|
||
assert_eq!(self.input_columns.len(), self.table_columns.len());
|
||
|
||
// degree 2:
|
||
// l_0(X) * (1 - z'(X)) = 0
|
||
//
|
||
// degree 3:
|
||
// z'(X) (a'(X) + \beta) (s'(X) + \gamma)
|
||
// - z'(\omega^{-1} X) (\theta^{m-1} a_0(X) + ... + a_{m-1}(X) + \beta) (\theta^{m-1} s_0(X) + ... + s_{m-1}(X) + \gamma)
|
||
//
|
||
// degree 2:
|
||
// l_0(X) * (a'(X) - s'(X)) = 0
|
||
//
|
||
// degree 2:
|
||
// (a′(X)−s′(X))⋅(a′(X)−a′(\omega{-1} X)) = 0
|
||
3
|
||
}
|
||
}
|