From 1f04580cffc32ff992585e3472d52e3775530a26 Mon Sep 17 00:00:00 2001 From: dark64 Date: Wed, 15 Jul 2020 19:07:23 +0200 Subject: [PATCH 1/2] update zokrates.js docs --- zokrates_book/src/zokrates_js.md | 37 ++++++++++++++++++++++++++------ zokrates_js/README.md | 4 +++- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/zokrates_book/src/zokrates_js.md b/zokrates_book/src/zokrates_js.md index 8d162c74..726449c0 100644 --- a/zokrates_book/src/zokrates_js.md +++ b/zokrates_book/src/zokrates_js.md @@ -19,19 +19,44 @@ npm install zokrates-js ## Usage +### Importing + +Bundlers ```js import { initialize } from 'zokrates-js'; +``` -function importResolver(location, path) { +Node +```js +const { initialize } = require('zokrates-js/node'); +``` + +### Example +```js +function importResolver(currentLocation, importLocation) { // implement your resolving logic here - return { - source: "def main() -> (): return", - location: path + return { + source: "def main() -> (): return", + location: importLocation }; } initialize().then((zokratesProvider) => { - // we have to initialize the wasm module before calling api functions - zokratesProvider.compile("def main(private field a) -> (field): return a", "main", importResolver) + const source = "def main(private field a) -> (field): return a * a"; + + // compilation + const artifacts = zokratesProvider.compile(source, "main", importResolver); + + // computation + const { witness, output } = zokratesProvider.computeWitness(artifacts, ["2"]); + + // run setup + const keypair = zokratesProvider.setup(artifacts.program); + + // generate proof + const proof = zokratesProvider.generateProof(artifacts.program, witness, keypair.pk); + + // export solidity verifier + const verifier = zokratesProvider.exportSolidityVerifier(keypair.vk, "v1"); }); ``` diff --git a/zokrates_js/README.md b/zokrates_js/README.md index 12133e33..2863185f 100644 --- a/zokrates_js/README.md +++ b/zokrates_js/README.md @@ -42,8 +42,10 @@ function importResolver(currentLocation, importLocation) { } initialize().then((zokratesProvider) => { + const source = "def main(private field a) -> (field): return a * a"; + // compilation - const artifacts = zokratesProvider.compile("def main(private field a) -> (field): return a * a", "main", importResolver); + const artifacts = zokratesProvider.compile(source, "main", importResolver); // computation const { witness, output } = zokratesProvider.computeWitness(artifacts, ["2"]); From ab811a0d0ba70b6d3ac27c0967f24cef918c47bd Mon Sep 17 00:00:00 2001 From: dark64 Date: Thu, 16 Jul 2020 11:10:13 +0200 Subject: [PATCH 2/2] fix import resolving issue with absolute paths --- zokrates_js/tests/tests.js | 7 ++++++- zokrates_js/wrapper.js | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/zokrates_js/tests/tests.js b/zokrates_js/tests/tests.js index edcfb9fc..d235e3c4 100644 --- a/zokrates_js/tests/tests.js +++ b/zokrates_js/tests/tests.js @@ -25,7 +25,12 @@ describe('tests', function() { it('should resolve stdlib module', function() { assert.doesNotThrow(() => { - const code = 'import "hashes/sha256/512bit" as sha256\ndef main() -> (): return'; + const code = ` + import "hashes/sha256/512bit" as sha256 + import "ecc/edwardsAdd" as edwardsAdd + def main() -> (): + return + `; this.zokrates.compile(code, "main"); }) }); diff --git a/zokrates_js/wrapper.js b/zokrates_js/wrapper.js index e163c128..7765e0c2 100644 --- a/zokrates_js/wrapper.js +++ b/zokrates_js/wrapper.js @@ -1,4 +1,7 @@ const getAbsolutePath = (basePath, relativePath) => { + if (relativePath[0] !== '.') { + return relativePath; + } var stack = basePath.split('/'); var chunks = relativePath.split('/'); stack.pop();