commit
b191f18698
6 changed files with 52 additions and 14 deletions
10
Cargo.lock
generated
10
Cargo.lock
generated
|
@ -623,7 +623,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "zokrates_cli"
|
||||
version = "0.3.1"
|
||||
version = "0.3.2"
|
||||
dependencies = [
|
||||
"assert_cli 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -631,13 +631,13 @@ dependencies = [
|
|||
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"zokrates_core 0.3.1",
|
||||
"zokrates_fs_resolver 0.3.1",
|
||||
"zokrates_core 0.3.2",
|
||||
"zokrates_fs_resolver 0.3.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zokrates_core"
|
||||
version = "0.3.1"
|
||||
version = "0.3.2"
|
||||
dependencies = [
|
||||
"assert_cli 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bimap 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -658,7 +658,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "zokrates_fs_resolver"
|
||||
version = "0.3.1"
|
||||
version = "0.3.2"
|
||||
|
||||
[metadata]
|
||||
"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "zokrates_cli"
|
||||
version = "0.3.1"
|
||||
version = "0.3.2"
|
||||
authors = ["Jacob Eberhardt <jacob.eberhardt@tu-berlin.de>", "Dennis Kuhnert <mail@kyroy.com>", "Thibaut Schaeffer <thibaut@schaeff.fr>"]
|
||||
repository = "https://github.com/JacobEberhardt/ZoKrates.git"
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ fn main() {
|
|||
// cli specification using clap library
|
||||
let matches = App::new("ZoKrates")
|
||||
.setting(AppSettings::SubcommandRequiredElseHelp)
|
||||
.version("0.3.1")
|
||||
.version("0.3.2")
|
||||
.author("Jacob Eberhardt, Thibaut Schaeffer, Dennis Kuhnert")
|
||||
.about("Supports generation of zkSNARKs from high level language code including Smart Contracts for proof verification on the Ethereum Blockchain.\n'I know that I show nothing!'")
|
||||
.subcommand(SubCommand::with_name("compile")
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "zokrates_core"
|
||||
version = "0.3.1"
|
||||
version = "0.3.2"
|
||||
authors = ["Jacob Eberhardt <jacob.eberhardt@tu-berlin.de>", "Dennis Kuhnert <mail@kyroy.com>"]
|
||||
repository = "https://github.com/JacobEberhardt/ZoKrates"
|
||||
readme = "README.md"
|
||||
|
|
|
@ -703,8 +703,22 @@ impl Flattener {
|
|||
id.into()
|
||||
};
|
||||
|
||||
let invb = self.use_sym();
|
||||
let inverse = self.use_sym();
|
||||
|
||||
// # invb = 1/b
|
||||
statements_flattened.push(FlatStatement::Directive(DirectiveStatement::new(
|
||||
vec![invb],
|
||||
Helper::Rust(RustHelper::Div),
|
||||
vec![FlatExpression::Number(T::one()), new_right.clone()],
|
||||
)));
|
||||
|
||||
// assert(invb * b == 1)
|
||||
statements_flattened.push(FlatStatement::Condition(
|
||||
FlatExpression::Number(T::one()),
|
||||
FlatExpression::Mult(box invb.into(), box new_right.clone().into()),
|
||||
));
|
||||
|
||||
// # c = a/b
|
||||
statements_flattened.push(FlatStatement::Directive(DirectiveStatement::new(
|
||||
vec![inverse],
|
||||
|
@ -1995,16 +2009,20 @@ mod tests {
|
|||
// define new wires for members of Div
|
||||
let five = FlatVariable::new(1);
|
||||
let b0 = FlatVariable::new(2);
|
||||
// Define inverse of denominator to prevent div by 0
|
||||
let invb0 = FlatVariable::new(3);
|
||||
// Define inverse
|
||||
let sym_0 = FlatVariable::new(3);
|
||||
let sym_0 = FlatVariable::new(4);
|
||||
// Define result, which is first member to next Div
|
||||
let sym_1 = FlatVariable::new(4);
|
||||
let sym_1 = FlatVariable::new(5);
|
||||
// Define second member
|
||||
let b1 = FlatVariable::new(5);
|
||||
let b1 = FlatVariable::new(6);
|
||||
// Define inverse of denominator to prevent div by 0
|
||||
let invb1 = FlatVariable::new(7);
|
||||
// Define inverse
|
||||
let sym_2 = FlatVariable::new(6);
|
||||
let sym_2 = FlatVariable::new(8);
|
||||
// Define left hand side
|
||||
let a = FlatVariable::new(7);
|
||||
let a = FlatVariable::new(9);
|
||||
|
||||
assert_eq!(
|
||||
statements_flattened,
|
||||
|
@ -2013,6 +2031,16 @@ mod tests {
|
|||
// inputs to first div (5/b)
|
||||
FlatStatement::Definition(five, FlatExpression::Number(FieldPrime::from(5))),
|
||||
FlatStatement::Definition(b0, b.into()),
|
||||
// check div by 0
|
||||
FlatStatement::Directive(DirectiveStatement::new(
|
||||
vec![invb0],
|
||||
Helper::Rust(RustHelper::Div),
|
||||
vec![FlatExpression::Number(FieldPrime::from(1)), b0.into()]
|
||||
)),
|
||||
FlatStatement::Condition(
|
||||
FlatExpression::Number(FieldPrime::from(1)),
|
||||
FlatExpression::Mult(box invb0.into(), box b0.into()),
|
||||
),
|
||||
// execute div
|
||||
FlatStatement::Directive(DirectiveStatement::new(
|
||||
vec![sym_0],
|
||||
|
@ -2026,6 +2054,16 @@ mod tests {
|
|||
// inputs to second div (res/b)
|
||||
FlatStatement::Definition(sym_1, sym_0.into()),
|
||||
FlatStatement::Definition(b1, b.into()),
|
||||
// check div by 0
|
||||
FlatStatement::Directive(DirectiveStatement::new(
|
||||
vec![invb1],
|
||||
Helper::Rust(RustHelper::Div),
|
||||
vec![FlatExpression::Number(FieldPrime::from(1)), b1.into()]
|
||||
)),
|
||||
FlatStatement::Condition(
|
||||
FlatExpression::Number(FieldPrime::from(1)),
|
||||
FlatExpression::Mult(box invb1.into(), box b1.into()),
|
||||
),
|
||||
// execute div
|
||||
FlatStatement::Directive(DirectiveStatement::new(
|
||||
vec![sym_2],
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "zokrates_fs_resolver"
|
||||
version = "0.3.1"
|
||||
version = "0.3.2"
|
||||
authors = ["Thibaut Schaeffer <thibaut@schaeff.fr>"]
|
||||
repository = "https://github.com/JacobEberhardt/ZoKrates.git"
|
||||
|
||||
|
|
Loading…
Reference in a new issue