1
0
Fork 0
mirror of synced 2025-09-23 12:18:44 +00:00

minor refactor

This commit is contained in:
dark64 2022-10-17 13:39:16 +02:00
parent 485be58a78
commit 8879c42837
13 changed files with 22 additions and 25 deletions

View file

@ -455,8 +455,7 @@ fn fold_assembly_statement<'ast, T: Field>(
let mut statements_buffer: Vec<zir::ZirStatement<'ast, T>> = statements_buffer let mut statements_buffer: Vec<zir::ZirStatement<'ast, T>> = statements_buffer
.into_iter() .into_iter()
.rev() .rev()
.map(|s| finder.fold_statement(s)) .flat_map(|s| finder.fold_statement(s))
.flatten()
.collect(); .collect();
statements_buffer.reverse(); statements_buffer.reverse();

View file

@ -23,7 +23,7 @@ pub enum Solver<'ast, T> {
impl<'ast, T: fmt::Debug + fmt::Display> fmt::Display for Solver<'ast, T> { impl<'ast, T: fmt::Debug + fmt::Display> fmt::Display for Solver<'ast, T> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self { match self {
Solver::Zir(func) => write!(f, "Zir({})", "ignored"), Solver::Zir(_) => write!(f, "Zir(ignored)"),
_ => write!(f, "{:?}", self), _ => write!(f, "{:?}", self),
} }
} }

View file

@ -1334,11 +1334,10 @@ impl<'ast, T> FieldElementExpression<'ast, T> {
FieldElementExpression::Sub(box left, box right) => { FieldElementExpression::Sub(box left, box right) => {
left.is_linear() && right.is_linear() left.is_linear() && right.is_linear()
} }
FieldElementExpression::Mult(box left, box right) => match (left, right) { FieldElementExpression::Mult(box left, box right) => matches!(
(FieldElementExpression::Number(_), _) => true, (left, right),
(_, FieldElementExpression::Number(_)) => true, (FieldElementExpression::Number(_), _) | (_, FieldElementExpression::Number(_))
_ => false, ),
},
FieldElementExpression::Div(_, _) => false, FieldElementExpression::Div(_, _) => false,
FieldElementExpression::Pow(_, _) => false, FieldElementExpression::Pow(_, _) => false,
FieldElementExpression::Conditional(_) => false, FieldElementExpression::Conditional(_) => false,

View file

@ -209,7 +209,7 @@ impl<'ast, T: fmt::Display> ZirStatement<'ast, T> {
match self { match self {
ZirStatement::Return(ref exprs) => { ZirStatement::Return(ref exprs) => {
write!(f, "return")?; write!(f, "return")?;
if exprs.len() > 0 { if !exprs.is_empty() {
write!( write!(
f, f,
" {}", " {}",

View file

@ -1579,8 +1579,6 @@ impl<'ast, T: Field> Flattener<'ast, T> {
let left_metadata = left.metadata.clone().unwrap(); let left_metadata = left.metadata.clone().unwrap();
let right_metadata = right.metadata.clone().unwrap(); let right_metadata = right.metadata.clone().unwrap();
println!("left {}, right {}", left, right);
match (left.into_inner(), right.into_inner()) { match (left.into_inner(), right.into_inner()) {
(UExpressionInner::And(box a, box b), UExpressionInner::And(box aa, box c)) => { (UExpressionInner::And(box a, box b), UExpressionInner::And(box aa, box c)) => {
if aa.clone().into_inner() == UExpressionInner::Not(box a.clone()) { if aa.clone().into_inner() == UExpressionInner::Not(box a.clone()) {

View file

@ -14,9 +14,11 @@ use zokrates_ast::ir::folder::*;
use zokrates_ast::ir::*; use zokrates_ast::ir::*;
use zokrates_field::Field; use zokrates_field::Field;
type SolverCall<'ast, T> = (Solver<'ast, T>, Vec<QuadComb<T>>);
#[derive(Debug, Default)] #[derive(Debug, Default)]
pub struct DirectiveOptimizer<'ast, T> { pub struct DirectiveOptimizer<'ast, T> {
calls: HashMap<(Solver<'ast, T>, Vec<QuadComb<T>>), Vec<Variable>>, calls: HashMap<SolverCall<'ast, T>, Vec<Variable>>,
/// Map of renamings for reassigned variables while processing the program. /// Map of renamings for reassigned variables while processing the program.
substitution: HashMap<Variable, Variable>, substitution: HashMap<Variable, Variable>,
} }

View file

@ -1791,7 +1791,7 @@ impl<'ast, T: Field> Checker<'ast, T> {
let e = match checked_e { let e = match checked_e {
TypedExpression::FieldElement(e) => Ok(e), TypedExpression::FieldElement(e) => Ok(e),
TypedExpression::Int(e) => Ok(FieldElementExpression::try_from_int(e).unwrap()), // todo: handle properly TypedExpression::Int(e) => Ok(FieldElementExpression::try_from_int(e).unwrap()),
_ => Err(ErrorInner { _ => Err(ErrorInner {
pos: Some(pos), pos: Some(pos),
message: "Only field element expressions are allowed in the assembly" message: "Only field element expressions are allowed in the assembly"
@ -3718,7 +3718,7 @@ impl<'ast, T: Field> Checker<'ast, T> {
ty, ty,
is_mutable, is_mutable,
}; };
self.scope.insert(id.into(), info) self.scope.insert(id, info)
} }
fn find_functions( fn find_functions(

View file

@ -82,7 +82,7 @@ impl Interpreter {
} }
_ => Self::execute_solver(&d.solver, &inputs), _ => Self::execute_solver(&d.solver, &inputs),
} }
.map_err(|e| Error::Solver(e))?; .map_err(Error::Solver)?;
for (i, o) in d.outputs.iter().enumerate() { for (i, o) in d.outputs.iter().enumerate() {
witness.insert(*o, res[i].clone()); witness.insert(*o, res[i].clone());
@ -193,8 +193,8 @@ impl Interpreter {
.fold_function(func.clone()) .fold_function(func.clone())
.map_err(|e| e.to_string())?; .map_err(|e| e.to_string())?;
assert!(folded_function.statements.len() == 1); assert_eq!(folded_function.statements.len(), 1);
let res = if let zokrates_ast::zir::ZirStatement::Return(v) = if let zokrates_ast::zir::ZirStatement::Return(v) =
folded_function.statements[0].clone() folded_function.statements[0].clone()
{ {
v.into_iter() v.into_iter()
@ -207,9 +207,7 @@ impl Interpreter {
.collect() .collect()
} else { } else {
unreachable!() unreachable!()
}; }
res
} }
Solver::ConditionEq => match inputs[0].is_zero() { Solver::ConditionEq => match inputs[0].is_zero() {
true => vec![T::zero(), T::one()], true => vec![T::zero(), T::one()],

View file

@ -60,7 +60,7 @@ declare module "zokrates-js" {
snarkjs?: { snarkjs?: {
program: Uint8Array; program: Uint8Array;
}; };
constraint_count: number; constraintCount?: number;
} }
export interface SetupKeypair { export interface SetupKeypair {

View file

@ -16,7 +16,7 @@ module.exports = (pkg) => {
{ {
program: ptr.program(), program: ptr.program(),
abi: ptr.abi(), abi: ptr.abi(),
constraint_count: ptr.constraint_count(), constraintCount: ptr.constraint_count(),
}, },
snarkjs ? { snarkjs: { program: ptr.snarkjs_program() } } : {}, snarkjs ? { snarkjs: { program: ptr.snarkjs_program() } } : {},
); );

View file

@ -32,9 +32,9 @@
"prebuild": "npm install", "prebuild": "npm install",
"build": "npm run build:bundler && npm run build:node", "build": "npm run build:bundler && npm run build:node",
"build:dev": "npm run build:bundler:dev && npm run build:node:dev", "build:dev": "npm run build:bundler:dev && npm run build:node:dev",
"build:bundler": "rimraf pkg && npm run wasm-pack -- --target bundler && npm run clean-pkg", "build:bundler": "rimraf pkg && npm run wasm-pack -- --target bundler --release && npm run clean-pkg",
"build:bundler:dev": "rimraf pkg && npm run wasm-pack -- --target bundler --dev && npm run clean-pkg", "build:bundler:dev": "rimraf pkg && npm run wasm-pack -- --target bundler --dev && npm run clean-pkg",
"build:node": "rimraf node/pkg && npm run wasm-pack -- --target nodejs -d node/pkg && npm run clean-node-pkg", "build:node": "rimraf node/pkg && npm run wasm-pack -- --target nodejs -d node/pkg --release && npm run clean-node-pkg",
"build:node:dev": "rimraf node/pkg && npm run wasm-pack -- --target nodejs -d node/pkg --dev && npm run clean-node-pkg", "build:node:dev": "rimraf node/pkg && npm run wasm-pack -- --target nodejs -d node/pkg --dev && npm run clean-node-pkg",
"clean-pkg": "rimraf pkg/README.md pkg/.gitignore pkg/package.json pkg/*.d.ts", "clean-pkg": "rimraf pkg/README.md pkg/.gitignore pkg/package.json pkg/*.d.ts",
"clean-node-pkg": "rimraf node/pkg/README.md node/pkg/.gitignore node/pkg/package.json node/pkg/*.d.ts", "clean-node-pkg": "rimraf node/pkg/README.md node/pkg/.gitignore node/pkg/package.json node/pkg/*.d.ts",

View file

@ -44,6 +44,7 @@ describe("tests", () => {
); );
assert.ok(artifacts); assert.ok(artifacts);
assert.ok(artifacts.snarkjs === undefined); assert.ok(artifacts.snarkjs === undefined);
assert.eq(artifacts.constraintCount === 1);
}); });
}); });

View file

@ -126,7 +126,7 @@ pub trait MpcBackend<T: Field, S: Scheme<T>> {
output: &mut W, output: &mut W,
) -> Result<(), String>; ) -> Result<(), String>;
fn contribute<'a, R: Read, W: Write, G: Rng>( fn contribute<R: Read, W: Write, G: Rng>(
params: &mut R, params: &mut R,
rng: &mut G, rng: &mut G,
output: &mut W, output: &mut W,