You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

63 lines
1.8 KiB

const path = require("path");
const tester = require("circom").tester;
const chai = require("chai");
const assert = chai.assert;
const circomlib = require("circomlib");
const smt = require("circomlib").smt;
export {};
describe("deposit test", function () {
this.timeout(200000);
it("Test Deposit", async () => {
const circuit = await tester(
path.join(__dirname, "main", "deposit.circom"),
{reduceConstraints: false}
);
const nLevels = 4;
const secret = "1234567890";
const coinCode = "0";
const amount = '1000000000000000000';
const poseidon = circomlib.poseidon.createHash(6, 8, 57);
const nullifier = poseidon([2, secret]);
const commitment = poseidon([coinCode, amount, secret, nullifier]).toString();
// add commitment into SMT
let tree = await smt.newMemEmptyTrie();
await tree.insert(1, 0);
let rootOld = tree.root;
let res = await tree.insert(2, commitment);
console.log("INSERT", res);
let rootNew = tree.root;
let siblings = res.siblings;
while (siblings.length < nLevels) {
siblings.push("0");
};
console.log("siblings", siblings);
console.log(res);
const witness = await circuit.calculateWitness({
"coinCode": coinCode,
"amount": amount,
"secret": secret,
"oldKey": res.isOld0 ? 0 : res.oldKey,
"oldValue": res.isOld0 ? 0 : res.oldValue,
"isOld0": res.isOld0 ? 1 : 0,
"siblings": siblings,
"rootOld": res.oldRoot,
"rootNew": res.newRoot,
"commitment": commitment,
"key": 2
});
await circuit.checkConstraints(witness);
});
});