diff --git a/.travis.yml b/.travis.yml index f401aa8..93e1034 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,13 +2,16 @@ language: rust cache: cargo rust: -- stable +# - stable + - nightly install: -- rustup component add rustfmt --toolchain stable -- rustup component add clippy --toolchain stable -- curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh +- rustup component add rustfmt #--toolchain stable +- rustup component add clippy #--toolchain stable +- cargo install -f wasm-pack +before_script: + - chmod +x ./ci/cargo_check.sh script: - ./ci/cargo_check.sh - make \ No newline at end of file diff --git a/README.md b/README.md index 2f06ec4..c0e2c9e 100644 --- a/README.md +++ b/README.md @@ -6,3 +6,14 @@ A zkInterface in WebAssembly live demo: https://qed-it.github.io/zkinterface-wasm-demo (hosted @ https://github.com/QED-it/zkinterface-wasm-demo) the code for the demo can be found at [/demo](https://github.com/QED-it/zkinterface-wasm/tree/master/demo) + +## Progress Tracker: +| System | ZK-Interface support | wasm supports | Demo integration | +|--------------------|-----------------------|--------------------|--------------------| +| :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Bulletproof | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Zokrates | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| | | | | + +## How to contribue: + diff --git a/ci/Makefile b/ci/Makefile new file mode 100644 index 0000000..61f2467 --- /dev/null +++ b/ci/Makefile @@ -0,0 +1,14 @@ +all: install build-wasm build-web + +build-wasm: + wasm-pack build --out-dir ../../demo/pkg/zkif-wasm-zokrates/ ../zkif-wasm-bundles/zkif-wasm-zokrates + wasm-pack build --out-dir ../../demo/pkg/zkif-wasm-bulletproofs/ ../zkif-wasm-bundles/zkif-wasm-bulletproofs + +build-web: + cd demo && npm run build + +install: + cd demo && npm install + +web-dev: + cd demo && npm run start diff --git a/ci/cargo_check.sh b/ci/cargo_check.sh old mode 100755 new mode 100644 index e77890f..42ea14f --- a/ci/cargo_check.sh +++ b/ci/cargo_check.sh @@ -4,7 +4,7 @@ set +x echo executing cargo_check.sh -cd ../zkif-wasm-bundles/zkif-wasm-bulletproofs/ +cd ./zkif-wasm-bundles/zkif-wasm-bulletproofs/ cargo fmt -- --check cargo clippy -- -D warnings cargo test diff --git a/zkif-wasm-bundles/zkif-wasm-bulletproofs/src/backend_bulletproofs.rs b/zkif-wasm-bundles/zkif-wasm-bulletproofs/src/backend_bulletproofs.rs index b9927fe..37164fe 100644 --- a/zkif-wasm-bundles/zkif-wasm-bulletproofs/src/backend_bulletproofs.rs +++ b/zkif-wasm-bundles/zkif-wasm-bulletproofs/src/backend_bulletproofs.rs @@ -1,10 +1,6 @@ +use bulletproofs::r1cs::{zkinterface_backend, R1CSProof}; use wasm_bindgen::prelude::wasm_bindgen; use zkinterface::reading::Messages; -use bulletproofs::r1cs::{ - R1CSProof, - zkinterface_backend, -}; - /// Prove using the circuit and the witness. #[wasm_bindgen] @@ -18,7 +14,6 @@ pub fn prove(circuit: &[u8], witness: &[u8]) -> Vec { bincode::serialize(&proof).unwrap() } - /// Verify using the circuit and the proof. #[wasm_bindgen] pub fn verify(circuit: &[u8], inputs: &[u8], proof_ser: &[u8]) -> bool { diff --git a/zkif-wasm-bundles/zkif-wasm-bulletproofs/src/lib.rs b/zkif-wasm-bundles/zkif-wasm-bulletproofs/src/lib.rs index 1584c05..fc71b9c 100644 --- a/zkif-wasm-bundles/zkif-wasm-bulletproofs/src/lib.rs +++ b/zkif-wasm-bundles/zkif-wasm-bulletproofs/src/lib.rs @@ -9,7 +9,7 @@ use wasm_bindgen::prelude::*; static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; #[wasm_bindgen] -extern { +extern "C" { #[wasm_bindgen(js_namespace = console)] fn error(msg: String); #[wasm_bindgen(js_namespace = console)] @@ -19,5 +19,5 @@ extern { #[wasm_bindgen(start)] pub fn start() { #[cfg(feature = "console_error_panic_hook")] - console_error_panic_hook::set_once(); + console_error_panic_hook::set_once(); } diff --git a/zkif-wasm-bundles/zkif-wasm-example/src/frontend.rs b/zkif-wasm-bundles/zkif-wasm-example/src/frontend.rs index f11c7c1..f3feb97 100644 --- a/zkif-wasm-bundles/zkif-wasm-example/src/frontend.rs +++ b/zkif-wasm-bundles/zkif-wasm-example/src/frontend.rs @@ -1,6 +1,6 @@ use wasm_bindgen::prelude::wasm_bindgen; -use zkinterface::{ - examples::{example_circuit_inputs, write_example_constraints, write_example_witness_inputs}, +use zkinterface::examples::{ + example_circuit_inputs, write_example_constraints, write_example_witness_inputs, }; /// Generate a test circuit constraints. @@ -15,7 +15,6 @@ pub fn make_circuit(x: u32, y: u32, zz: u32) -> Vec { msg } - /// Generate a witness. #[wasm_bindgen] pub fn make_witness(x: u32, y: u32) -> Vec { diff --git a/zkif-wasm-bundles/zkif-wasm-example/src/lib.rs b/zkif-wasm-bundles/zkif-wasm-example/src/lib.rs index df13dbb..f523e2c 100644 --- a/zkif-wasm-bundles/zkif-wasm-example/src/lib.rs +++ b/zkif-wasm-bundles/zkif-wasm-example/src/lib.rs @@ -9,7 +9,7 @@ use wasm_bindgen::prelude::*; static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; #[wasm_bindgen] -extern { +extern "C" { #[wasm_bindgen(js_namespace = console)] fn error(msg: String); #[wasm_bindgen(js_namespace = console)] @@ -19,5 +19,5 @@ extern { #[wasm_bindgen(start)] pub fn start() { #[cfg(feature = "console_error_panic_hook")] - console_error_panic_hook::set_once(); + console_error_panic_hook::set_once(); } diff --git a/zkif-wasm-bundles/zkif-wasm-zokrates/src/frontend.rs b/zkif-wasm-bundles/zkif-wasm-zokrates/src/frontend.rs index b47136a..711a082 100644 --- a/zkif-wasm-bundles/zkif-wasm-zokrates/src/frontend.rs +++ b/zkif-wasm-bundles/zkif-wasm-zokrates/src/frontend.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; -use wasm_bindgen::prelude::{JsValue, wasm_bindgen}; +use wasm_bindgen::prelude::{wasm_bindgen, JsValue}; use zkinterface::{ - reading::{Messages, split_messages}, + reading::{split_messages, Messages}, zkinterface_generated::zkinterface::get_size_prefixed_root_as_root, }; use zokrates_core::{ @@ -11,10 +11,8 @@ use zokrates_core::{ }; use zokrates_field::field::FieldPrime; - fn compile_prog(code: &str) -> Prog { - compile::( - &mut code.as_bytes(), None, None).unwrap() + compile::(&mut code.as_bytes(), None, None).unwrap() } /// Generate a constraint system. @@ -42,7 +40,11 @@ pub fn make_witness(code: &str, x: u32, y: u32) -> JsValue /* Instance */ { let verifier_msg = get_verifier_msg(&prover_msg).unwrap(); - JsValue::from_serde(&Instance { prover_msg, verifier_msg }).unwrap() + JsValue::from_serde(&Instance { + prover_msg, + verifier_msg, + }) + .unwrap() } #[derive(Serialize)] diff --git a/zkif-wasm-bundles/zkif-wasm-zokrates/src/lib.rs b/zkif-wasm-bundles/zkif-wasm-zokrates/src/lib.rs index 34fc1fd..3cae6e2 100644 --- a/zkif-wasm-bundles/zkif-wasm-zokrates/src/lib.rs +++ b/zkif-wasm-bundles/zkif-wasm-zokrates/src/lib.rs @@ -12,7 +12,7 @@ extern crate serde_derive; static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; #[wasm_bindgen] -extern { +extern "C" { #[wasm_bindgen(js_namespace = console)] fn error(msg: String); #[wasm_bindgen(js_namespace = console)] @@ -22,5 +22,5 @@ extern { #[wasm_bindgen(start)] pub fn start() { #[cfg(feature = "console_error_panic_hook")] - console_error_panic_hook::set_once(); + console_error_panic_hook::set_once(); }