UNPKG

o1js

Version:

TypeScript framework for zk-SNARKs and zkApps

72 lines 3.06 kB
import { MlOption } from '../../../lib/ml/base.js'; import { fieldFromRust, fieldToRust, fieldsFromRustFlat, fieldsToRustFlat, maybeFieldToRust, } from '../bindings/conversion-base.js'; export { napiOraclesConversion }; function napiOraclesConversion(napi) { return { fp: oraclesConversionPerField({ RandomOracles: napi.WasmFpRandomOracles, Oracles: napi.WasmFpOracles, }), fq: oraclesConversionPerField({ RandomOracles: napi.WasmFqRandomOracles, Oracles: napi.WasmFqOracles, }), }; } function oraclesConversionPerField({ RandomOracles, Oracles }) { function randomOraclesToRust(ro) { let jointCombinerMl = MlOption.from(ro[1]); let jointCombinerChal = maybeFieldToRust(jointCombinerMl?.[1][1]); let jointCombiner = maybeFieldToRust(jointCombinerMl?.[2]); let beta = fieldToRust(ro[2]); let gamma = fieldToRust(ro[3]); let alphaChal = fieldToRust(ro[4][1]); let alpha = fieldToRust(ro[5]); let zeta = fieldToRust(ro[6]); let v = fieldToRust(ro[7]); let u = fieldToRust(ro[8]); let zetaChal = fieldToRust(ro[9][1]); let vChal = fieldToRust(ro[10][1]); let uChal = fieldToRust(ro[11][1]); return new RandomOracles(jointCombinerChal, jointCombiner, beta, gamma, alphaChal, alpha, zeta, v, u, zetaChal, vChal, uChal); } function randomOraclesFromRust(ro) { let jointCombinerChal = ro.joint_combiner_chal; let jointCombiner = ro.joint_combiner; let jointCombinerOption = MlOption(jointCombinerChal != null && jointCombiner != null ? [0, [0, fieldFromRust(jointCombinerChal)], fieldFromRust(jointCombiner)] : undefined); let mlRo = [ 0, jointCombinerOption, fieldFromRust(ro.beta), fieldFromRust(ro.gamma), [0, fieldFromRust(ro.alpha_chal)], fieldFromRust(ro.alpha), fieldFromRust(ro.zeta), fieldFromRust(ro.v), fieldFromRust(ro.u), [0, fieldFromRust(ro.zeta_chal)], [0, fieldFromRust(ro.v_chal)], [0, fieldFromRust(ro.u_chal)], ]; return mlRo; } return { oraclesToRust(oracles) { let [, o, pEval, openingPrechallenges, digestBeforeEvaluations] = oracles; return new Oracles(randomOraclesToRust(o), fieldToRust(pEval[1]), fieldToRust(pEval[2]), fieldsToRustFlat(openingPrechallenges), fieldToRust(digestBeforeEvaluations)); }, oraclesFromRust(oracles) { let mlOracles = [ 0, randomOraclesFromRust(oracles.o), [0, fieldFromRust(oracles.p_eval0), fieldFromRust(oracles.p_eval1)], fieldsFromRustFlat(oracles.opening_prechallenges), fieldFromRust(oracles.digest_before_evaluations), ]; return mlOracles; }, }; } //# sourceMappingURL=napi-conversion-oracles.js.map