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"]); 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();