snarkjs/src/r1cs_export_json.js

31 lines
817 B
JavaScript
Raw Normal View History

2020-10-08 12:43:05 +03:00
import {readR1cs} from "r1csfile";
2020-06-30 16:45:21 +03:00
2020-10-08 17:06:48 +03:00
export function stringifyBigInts(Fr, o) {
if (o instanceof Uint8Array) {
return Fr.toString(o);
} else if (Array.isArray(o)) {
return o.map(stringifyBigInts.bind(null, Fr));
} else if (typeof o == "object") {
const res = {};
const keys = Object.keys(o);
keys.forEach( (k) => {
res[k] = stringifyBigInts(Fr, o[k]);
});
return res;
} else if ((typeof(o) == "bigint") || o.eq !== undefined) {
return o.toString(10);
} else {
return o;
}
}
2020-07-11 11:31:52 +03:00
export default async function r1csExportJson(r1csFileName, logger) {
2020-06-30 16:45:21 +03:00
2020-10-09 07:29:55 +03:00
const cir = await readR1cs(r1csFileName, true, true, true, logger);
2020-10-08 17:06:48 +03:00
const Fr=cir.curve.Fr;
delete cir.curve;
2020-06-30 16:45:21 +03:00
2020-10-08 17:06:48 +03:00
return stringifyBigInts(Fr, cir);
2020-06-30 16:45:21 +03:00
}