-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheck_bit_length.js
40 lines (36 loc) · 1.4 KB
/
check_bit_length.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const path = require("path");
const assert = require("chai").assert;
const wasm_tester = require("circom_tester").wasm;
describe("CheckBitLength", () => {
var circ_file = path.join(__dirname, "circuits", "check_bit_length.circom");
var circ, num_constraints;
before(async () => {
circ = await wasm_tester(circ_file);
await circ.loadConstraints();
num_constraints = circ.constraints.length;
var b = 23;
console.log("CheckBitLength #Constraints:", num_constraints, "Expected:", b + 2);
var expected_constraints = b + 2;
if (num_constraints < expected_constraints) {
console.log("WARNING: number of constraints is less than b + 2. It is likely that you are not constraining the witnesses appropriately.");
}
});
it("bitlength of `in` <= `b`", async () => {
const input = {
//"in": "4903265",
"in": "8388607",
};
const witness = await circ.calculateWitness(input);
await circ.checkConstraints(witness);
await circ.assertOut(witness, {"out": "1"});
});
it("bitlength of `in` > `b`", async () => {
const input = {
//"in": "13291873",
"in": "53167492",
};
const witness = await circ.calculateWitness(input);
await circ.checkConstraints(witness);
await circ.assertOut(witness, {"out": "0"});
});
});