miksi-app/index.js
index.jsRaw
1var circuit = {};
2var provingKey = {};
3var witnessCalc = {};
4
5function loadCircuit(circuitname) {
6 fetch("circuits-files/"+circuitname+"-proving_key.bin").then( (response) => {
7 return response.arrayBuffer();
8 }).then( (b) => {
9 provingKey[circuitname] = b;
10 console.log("proving_key loaded for", circuitname);
11 });
12
13 fetch("circuits-files/"+circuitname+".wasm").then( (response) => {
14 return response.arrayBuffer();
15 }).then( (b) => {
16 witnessCalc[circuitname] = b;
17 console.log("w", b);
18 console.log("witnessCalc loaded for", circuitname);
19 });
20}
21
22async function deposit(circuitname) {
23 console.log("circuit:", circuitname);
24
25 // TODO
26 const secret = "1234567890";
27 const nullifier = "567891234";
28 const commitments = [];
29
30 // witness
31 console.log(witnessCalc[circuitname]);
32 const witness = await miksi.calcWitness(witnessCalc[circuitname], secret, nullifier, commitments);
33 console.log("w", witness);
34
35 // proof
36 const start = new Date().getTime();
37 console.log(provingKey[circuitname]);
38 const proof = await window.groth16GenProof(witness.buffer, provingKey[circuitname]);
39 const end = new Date().getTime();
40 const time = end - start;
41 console.log("circuit " + circuitname + " took " + time + "ms to compute");
42 console.log(proof);
43}
44
45loadCircuit("deposit");
46loadCircuit("withdraw");
47
48
49// var web3 = new Web3(Web3.givenProvider || "ws://localhost:8545");