70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
import chai from "chai";
|
|
import {createCode, generateABI} from "../src/poseidon_gencontract.js";
|
|
import buildPoseidon from "../src/poseidon.js";
|
|
import { ethers } from "ethers";
|
|
import ganache from "ganache-cli";
|
|
|
|
const assert = chai.assert;
|
|
const log = (msg) => { if (process.env.MOCHA_VERBOSE) console.log(msg); };
|
|
|
|
describe("Poseidon Smart contract test", function () {
|
|
let testrpc;
|
|
let web3;
|
|
let poseidon6;
|
|
let poseidon3;
|
|
let poseidon;
|
|
let account;
|
|
this.timeout(100000);
|
|
|
|
before(async () => {
|
|
const provider = new ethers.providers.Web3Provider(ganache.provider());
|
|
|
|
account = provider.getSigner(0);
|
|
poseidon = await buildPoseidon();
|
|
});
|
|
after(async () => {
|
|
globalThis.curve_bn128.terminate();
|
|
});
|
|
|
|
it("Should deploy the contract", async () => {
|
|
const C6 = new ethers.ContractFactory(
|
|
generateABI(5),
|
|
createCode(5),
|
|
account
|
|
);
|
|
const C3 = new ethers.ContractFactory(
|
|
generateABI(2),
|
|
createCode(2),
|
|
account
|
|
);
|
|
|
|
poseidon6 = await C6.deploy();
|
|
poseidon3 = await C3.deploy();
|
|
});
|
|
|
|
it("Should calculate the poseidon correctly t=6", async () => {
|
|
|
|
const res = await poseidon6["poseidon(uint256[5])"]([1,2, 0, 0, 0]);
|
|
|
|
// console.log("Cir: " + bigInt(res.toString(16)).toString(16));
|
|
|
|
const res2 = poseidon([1,2, 0, 0, 0]);
|
|
// console.log("Ref: " + bigInt(res2).toString(16));
|
|
|
|
assert.equal(res.toString(), poseidon.F.toString(res2));
|
|
});
|
|
it("Should calculate the poseidon correctly t=3", async () => {
|
|
|
|
const res = await poseidon3["poseidon(uint256[2])"]([1,2]);
|
|
|
|
// console.log("Cir: " + bigInt(res.toString(16)).toString(16));
|
|
|
|
const res2 = poseidon([1,2]);
|
|
// console.log("Ref: " + bigInt(res2).toString(16));
|
|
|
|
assert.equal(res.toString(), poseidon.F.toString(res2));
|
|
});
|
|
|
|
});
|
|
|