arnaucube
arnaucube/miksi-appPublic Self-hosted repository
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");