const fs = require("fs"); const bigInt = require("big-integer"); const { groth } = require('snarkjs'); const { Fr } = require('ffjavascript').bn128; const { stringifyBigInts, unstringifyBigInts } = require('ffjavascript').utils; const WitnessCalculatorBuilder = require("circom_runtime").WitnessCalculatorBuilder; const circomlib = require("circomlib"); const smt = require("circomlib").smt; const Web3 = require("web3"); // const buildBn128 = require("wasmsnark").buildBn128; const coinCode = "0"; // refearing to ETH const ethAmount = '1'; const amount = Web3.utils.toWei(ethAmount, 'ether'); exports.randBigInt = () => { return Fr.random(); }; exports.calcCommitment = (key, secret) => { const poseidon = circomlib.poseidon.createHash(6, 8, 57); const nullifier = poseidon([key, secret]).toString(); const commitment = poseidon([coinCode, amount, secret, nullifier]).toString(); return commitment; }; exports.calcDepositWitness = async (wasm, nLevels, key, secret, commitments) => { const poseidon = circomlib.poseidon.createHash(6, 8, 57); const nullifier = poseidon([key, secret]).toString(); const commitment = poseidon([coinCode, amount, secret, nullifier]).toString(); console.log("Commitment", commitment.toString()); // rebuild the tree let tree = await smt.newMemEmptyTrie(); await tree.insert(0, 0); for (let i=0; i { const poseidon = circomlib.poseidon.createHash(6, 8, 57); const nullifier = poseidon([key, secret]).toString(); const commitment = poseidon([coinCode, amount, secret, nullifier]).toString(); // rebuild the tree let tree = await smt.newMemEmptyTrie(); await tree.insert(0, 0); for (let i=0; i