From ce3a137432b2ff332f5505ac837d1f1d02ef462c Mon Sep 17 00:00:00 2001 From: dark64 Date: Mon, 5 Jul 2021 15:58:53 +0200 Subject: [PATCH] rename verify embed, update changelog --- changelogs/unreleased/918-dark64 | 2 +- zokrates_core/src/imports.rs | 28 ++++++++++++++----- .../snark_verify_bls12_377_1.json} | 2 +- .../snark_verify_bls12_377_1.zok} | 4 +-- .../snark_verify_bls12_377_2.json} | 2 +- .../snark_verify_bls12_377_2.zok} | 4 +-- .../snark_verify_bls12_377_5.json} | 2 +- .../snark_verify_bls12_377_5.zok} | 4 +-- 8 files changed, 31 insertions(+), 17 deletions(-) rename zokrates_core_test/tests/tests/{verify/verify_1.json => snark/snark_verify_bls12_377_1.json} (98%) rename zokrates_core_test/tests/tests/{verify/verify_1.zok => snark/snark_verify_bls12_377_1.zok} (50%) rename zokrates_core_test/tests/tests/{verify/verify_2.json => snark/snark_verify_bls12_377_2.json} (98%) rename zokrates_core_test/tests/tests/{verify/verify_2.zok => snark/snark_verify_bls12_377_2.zok} (50%) rename zokrates_core_test/tests/tests/{verify/verify_5.json => snark/snark_verify_bls12_377_5.json} (98%) rename zokrates_core_test/tests/tests/{verify/verify_5.zok => snark/snark_verify_bls12_377_5.zok} (50%) diff --git a/changelogs/unreleased/918-dark64 b/changelogs/unreleased/918-dark64 index 4877a0bf..5c8b59e9 100644 --- a/changelogs/unreleased/918-dark64 +++ b/changelogs/unreleased/918-dark64 @@ -1 +1 @@ -Add SNARK verification to stdlib \ No newline at end of file +Introduce the `snark_verify_bls12_377` embed for one-layer composition of SNARK proofs (over `BLS12-377`/`BW6-761` pair of curves where `BW6-761` is used as an outer curve to `BLS12-377`) \ No newline at end of file diff --git a/zokrates_core/src/imports.rs b/zokrates_core/src/imports.rs index b94d5f87..7da5a59d 100644 --- a/zokrates_core/src/imports.rs +++ b/zokrates_core/src/imports.rs @@ -16,7 +16,7 @@ use std::path::{Path, PathBuf}; use typed_arena::Arena; use zokrates_common::Resolver; -use zokrates_field::{Bn128Field, Field}; +use zokrates_field::{Bn128Field, Bw6_761Field, Field}; #[derive(PartialEq, Debug)] pub struct Error { @@ -106,8 +106,8 @@ impl Importer { if T::id() != Bn128Field::id() { return Err(CompileErrorInner::ImportError( Error::new(format!( - "Embed sha256round cannot be used with curve {}", - T::name() + "Embed `sha256round` must be used with curve `{}`", + Bn128Field::name() )) .with_pos(Some(pos)), ) @@ -121,10 +121,24 @@ impl Importer { } } #[cfg(feature = "ark")] - "verify" => SymbolDeclaration { - id: symbol.get_alias(), - symbol: Symbol::Flat(FlatEmbed::Verify), - }, + "snark_verify_bls12_377" => { + if T::id() != Bw6_761Field::id() { + return Err(CompileErrorInner::ImportError( + Error::new(format!( + "Embed `snark_verify_bls12_377` must be used with curve `{}`", + Bw6_761Field::name() + )) + .with_pos(Some(pos)), + ) + .in_file(location) + .into()); + } else { + SymbolDeclaration { + id: symbol.get_alias(), + symbol: Symbol::Flat(FlatEmbed::Verify), + } + } + } "unpack" => SymbolDeclaration { id: symbol.get_alias(), symbol: Symbol::Flat(FlatEmbed::Unpack), diff --git a/zokrates_core_test/tests/tests/verify/verify_1.json b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_1.json similarity index 98% rename from zokrates_core_test/tests/tests/verify/verify_1.json rename to zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_1.json index d718549d..c844890a 100644 --- a/zokrates_core_test/tests/tests/verify/verify_1.json +++ b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_1.json @@ -1,5 +1,5 @@ { - "entry_point": "./tests/tests/verify/verify_1.zok", + "entry_point": "./tests/tests/snark/snark_verify_bls12_377_1.zok", "curves": ["Bw6_761"], "tests": [ { diff --git a/zokrates_core_test/tests/tests/verify/verify_1.zok b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_1.zok similarity index 50% rename from zokrates_core_test/tests/tests/verify/verify_1.zok rename to zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_1.zok index 4c73ebee..d0dcb74c 100644 --- a/zokrates_core_test/tests/tests/verify/verify_1.zok +++ b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_1.zok @@ -1,5 +1,5 @@ -from "EMBED" import verify +from "EMBED" import snark_verify_bls12_377 def main(private field[1] inputs, private field[8] proof, private field[20] vk) -> bool: - bool result = verify(inputs, proof, vk) + bool result = snark_verify_bls12_377(inputs, proof, vk) return result \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/verify/verify_2.json b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_2.json similarity index 98% rename from zokrates_core_test/tests/tests/verify/verify_2.json rename to zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_2.json index 6e364e85..00a7b238 100644 --- a/zokrates_core_test/tests/tests/verify/verify_2.json +++ b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_2.json @@ -1,5 +1,5 @@ { - "entry_point": "./tests/tests/verify/verify_2.zok", + "entry_point": "./tests/tests/snark/snark_verify_bls12_377_2.zok", "curves": ["Bw6_761"], "tests": [ { diff --git a/zokrates_core_test/tests/tests/verify/verify_2.zok b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_2.zok similarity index 50% rename from zokrates_core_test/tests/tests/verify/verify_2.zok rename to zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_2.zok index cebea31b..b9de1f7a 100644 --- a/zokrates_core_test/tests/tests/verify/verify_2.zok +++ b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_2.zok @@ -1,5 +1,5 @@ -from "EMBED" import verify +from "EMBED" import snark_verify_bls12_377 def main(private field[2] inputs, private field[8] proof, private field[22] vk) -> bool: - bool result = verify(inputs, proof, vk) + bool result = snark_verify_bls12_377(inputs, proof, vk) return result \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/verify/verify_5.json b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_5.json similarity index 98% rename from zokrates_core_test/tests/tests/verify/verify_5.json rename to zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_5.json index 22b770e3..8c05a0ba 100644 --- a/zokrates_core_test/tests/tests/verify/verify_5.json +++ b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_5.json @@ -1,5 +1,5 @@ { - "entry_point": "./tests/tests/verify/verify_5.zok", + "entry_point": "./tests/tests/snark/snark_verify_bls12_377_5.zok", "curves": ["Bw6_761"], "tests": [ { diff --git a/zokrates_core_test/tests/tests/verify/verify_5.zok b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_5.zok similarity index 50% rename from zokrates_core_test/tests/tests/verify/verify_5.zok rename to zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_5.zok index da998b15..6ec49a40 100644 --- a/zokrates_core_test/tests/tests/verify/verify_5.zok +++ b/zokrates_core_test/tests/tests/snark/snark_verify_bls12_377_5.zok @@ -1,5 +1,5 @@ -from "EMBED" import verify +from "EMBED" import snark_verify_bls12_377 def main(private field[5] inputs, private field[8] proof, private field[28] vk) -> bool: - bool result = verify(inputs, proof, vk) + bool result = snark_verify_bls12_377(inputs, proof, vk) return result \ No newline at end of file