@nori-zk/proof-conversion
Version:
Verifying zkVM proofs inside o1js circuits, to generate Mina compatible proof
31 lines • 896 B
JavaScript
import { Gadgets, createForeignField } from 'o1js';
class Fr extends createForeignField(21888242871839275222246405745257275088548364400416034343698204186575808495617n) {
}
class FrU extends Fr.Unreduced {
}
class FrA extends Fr.AlmostReduced {
}
class FrC extends Fr.Canonical {
}
function powFr(x, exp) {
let r = Fr.from(x).assertCanonical();
const n = exp.length;
for (let i = 1; i < n; i++) {
r = r.mul(r).assertCanonical();
if (exp[i] == 1) {
r = r.mul(x).assertCanonical();
}
}
return r;
}
function xorFr(x, y) {
let fieldsX = x.toFields();
let fieldsY = y.toFields();
let xoredFields = [];
for (let i = 0; i < 3; i++) {
xoredFields.push(Gadgets.xor(fieldsX[i], fieldsY[i], 96));
}
return FrC.provable.fromFields(xoredFields);
}
export { Fr, FrU, FrA, FrC, powFr, xorFr };
//# sourceMappingURL=fr.js.map