C generation

This commit is contained in:
Jordi Baylina
2019-11-23 19:12:58 +01:00
parent 51ff27b9c6
commit 66291a0efe
31 changed files with 3295 additions and 239 deletions

1
test/circuits/in.bin Normal file
View File

@@ -0,0 +1 @@


1
test/circuits/in.json Normal file
View File

@@ -0,0 +1 @@
{ "in1": 1, "in2": [2,3], "in3":[[4,5],[6,7],[8,9]] }

View File

@@ -1,18 +1,54 @@
template Internal() {
signal input in;
signal output out;
signal input in1;
signal input in2[2];
signal input in3[3][2];
out <== in;
signal output out1;
signal output out2[2];
signal output out3[3][2];
out1 <== in1;
out2[0] <== in2[0];
out2[1] <== in2[1];
out3[0][0] <== in3[0][0];
out3[0][1] <== in3[0][1];
out3[1][0] <== in3[1][0];
out3[1][1] <== in3[1][1];
out3[2][0] <== in3[2][0];
out3[2][1] <== in3[2][1];
}
template InOut() {
signal input in;
signal output out;
signal input in1;
signal input in2[2];
signal input in3[3][2];
signal output out1;
signal output out2[2];
signal output out3[3][2];
component internal = Internal();
internal.in <== in;
internal.out ==> out;
internal.in1 <== in1;
internal.in2[0] <== in2[0];
internal.in2[1] <== in2[1];
internal.in3[0][0] <== in3[0][0];
internal.in3[0][1] <== in3[0][1];
internal.in3[1][0] <== in3[1][0];
internal.in3[1][1] <== in3[1][1];
internal.in3[2][0] <== in3[2][0];
internal.in3[2][1] <== in3[2][1];
internal.out1 ==> out1;
internal.out2[0] ==> out2[0];
internal.out2[1] ==> out2[1];
internal.out3[0][0] ==> out3[0][0];
internal.out3[0][1] ==> out3[0][1];
internal.out3[1][0] ==> out3[1][0];
internal.out3[1][1] ==> out3[1][1];
internal.out3[2][0] ==> out3[2][0];
internal.out3[2][1] ==> out3[2][1];
}
component main = InOut();

20
test/inout.js Normal file
View File

@@ -0,0 +1,20 @@
const chai = require("chai");
const path = require("path");
const c_tester = require("../index.js").c_tester;
const stringifyBigInts = require("snarkjs").stringifyBigInts;
describe("inout test", function () {
this.timeout(100000);
it("Should compile a code with vars inside a for", async () => {
const cir = await c_tester(path.join(__dirname, "circuits", "inout.circom"));
const out = await cir.calculateWitness({in1: 1, in2: [2,3], in3:[[4,5], [6,7], [8,9]]});
// console.log(JSON.stringify(stringifyBigInts(out),null,1));
await cir.assertOut(out, {out1: 1, out2: [2,3], out3: [[4,5], [6,7],[8,9]]} );
await cir.release();
});
});