snarkjs/test/zksnark_groth.js
Micah Zoltu 2c964b3fe6 Removes most dependencies and switches to @noble/hashes.
* @noble/hashes is a widely used and audited cryptography library that is pure JavaScript with no transitive dependencies and no dependencies on NodeJS.
* NodeJS now comes with built-in support for testing, so mocha and chai are no longer required, removing most dependencies from this project.

Between these two changes, almost all dependencies were removed and now there are only 2, including transitive.
2024-11-28 18:34:47 +08:00

44 lines
1.6 KiB
JavaScript

/*
Copyright 2018 0kims association.
This file is part of zksnark JavaScript library.
zksnark JavaScript library is a free software: you can redistribute it and/or
modify it under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your option)
any later version.
zksnark JavaScript library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along with
zksnark JavaScript library. If not, see <https://www.gnu.org/licenses/>.
*/
const assert = require("node:assert");
const { describe, it } = require("node:test");
const fs = require("fs");
const path = require("path");
const Circuit = require("../src/circuit.js");
const zkSnark = require("../index.js").groth;
describe("zkSnark Groth", () => {
it("Load a circuit, create trusted setup, create a proof and validate it", { timeout: 10000000 }, () => {
const cirDef = JSON.parse(fs.readFileSync(path.join(__dirname, "circuit", "sum.json"), "utf8"));
const cir = new Circuit(cirDef);
const setup = zkSnark.setup(cir);
const witness = cir.calculateWitness({"a": "33", "b": "34"});
const {proof, publicSignals} = zkSnark.genProof(setup.vk_proof, witness);
assert( zkSnark.isValid(setup.vk_verifier, proof, publicSignals));
});
});