Skip to content

Commit cba0e65

Browse files
committed
bindings: silent compiler using any in napi proof conversion
1 parent b59aba1 commit cba0e65

File tree

1 file changed

+93
-6
lines changed

1 file changed

+93
-6
lines changed

src/bindings/crypto/napi-conversion-proof.ts

Lines changed: 93 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,17 @@ import {
3838
fieldFromRust,
3939
} from './bindings/conversion-base.js';
4040
import { ConversionCore, ConversionCores } from './napi-conversion-core.js';
41+
import type { Field } from './bindings/field.js';
4142

4243
export { napiProofConversion };
4344

45+
const fieldToRust_ = (x: Field) => fieldToRust(x);
46+
const proofEvaluationsToRust = mapProofEvaluations(fieldToRust_);
47+
const proofEvaluationsFromRust = mapProofEvaluations(fieldFromRust);
48+
const pointEvalsOptionToRust = mapPointEvalsOption(fieldToRust_);
49+
const pointEvalsOptionFromRust = mapPointEvalsOption(fieldFromRust);
50+
51+
4452
type NapiProofEvaluations = [
4553
0,
4654
MlOption<PointEvaluations<Uint8Array>>,
@@ -111,7 +119,7 @@ function proofConversionPerField(
111119
let zComm = core.polyCommToRust(commitments[2]);
112120
let tComm = core.polyCommToRust(commitments[3]);
113121
let lookup = MlOption.mapFrom(commitments[4], lookupCommitmentsToRust);
114-
return new ProverCommitments(wComm, zComm, tComm, lookup);
122+
return new ProverCommitments(wComm as any, zComm as any, tComm as any, lookup as any);
115123
}
116124
function commitmentsFromRust(commitments: NapiProverCommitments): ProverCommitments {
117125
let wComm = core.polyCommsFromRust(commitments.w_comm);
@@ -126,7 +134,7 @@ function proofConversionPerField(
126134
let sorted = core.polyCommsToRust(lookup[1]);
127135
let aggreg = core.polyCommToRust(lookup[2]);
128136
let runtime = MlOption.mapFrom(lookup[3], core.polyCommToRust);
129-
return new LookupCommitments(sorted, aggreg, runtime);
137+
return new LookupCommitments(sorted as any, aggreg as any, runtime as any);
130138
}
131139
function lookupCommitmentsFromRust(lookup: NapiLookupCommitments): LookupCommitments {
132140
let sorted = core.polyCommsFromRust(lookup.sorted);
@@ -146,15 +154,15 @@ function proofConversionPerField(
146154
r.push(ri);
147155
}
148156
return new OpeningProof(
149-
core.pointsToRust(l),
150-
core.pointsToRust(r),
157+
core.pointsToRust(l) as any,
158+
core.pointsToRust(r) as any,
151159
core.pointToRust(delta),
152160
fieldToRust(z1),
153161
fieldToRust(z2),
154162
core.pointToRust(sg)
155163
);
156164
}
157-
function openingProofFromRust(proof: NapiOpeningProof): OpeningProof {
165+
function openingProofFromRust(proof: any): OpeningProof {
158166
let [, ...l] = core.pointsFromRust(proof.lr_0);
159167
let [, ...r] = core.pointsFromRust(proof.lr_1);
160168
let n = l.length;
@@ -214,7 +222,7 @@ function proofConversionPerField(
214222
ftEval1,
215223
public_,
216224
prevChallengeScalars,
217-
prevChallengeComms
225+
prevChallengeComms as any
218226
);
219227
},
220228
proofFromRust(wasmProof: NapiProverProof): ProofWithPublic {
@@ -260,6 +268,85 @@ function proofConversionPerField(
260268
};
261269
}
262270

271+
function createMapPointEvals<Field1, Field2>(map: (x: Field1) => Field2) {
272+
return (evals: PointEvaluations<Field1>): PointEvaluations<Field2> => {
273+
let [, zeta, zeta_omega] = evals;
274+
return [0, MlArray.map(zeta, map), MlArray.map(zeta_omega, map)];
275+
};
276+
}
277+
278+
function mapPointEvalsOption<Field1, Field2>(map: (x: Field1) => Field2) {
279+
return (evals: MlOption<PointEvaluations<Field1>>) =>
280+
MlOption.map(evals, createMapPointEvals(map));
281+
}
282+
283+
function mapProofEvaluations<Field1, Field2>(map: (x: Field1) => Field2) {
284+
const mapPointEvals = createMapPointEvals(map);
285+
286+
const mapPointEvalsOption = (
287+
evals: MlOption<PointEvaluations<Field1>>
288+
): MlOption<PointEvaluations<Field2>> => MlOption.map(evals, mapPointEvals);
289+
290+
return function mapProofEvaluations(evals: ProofEvaluations<Field1>): ProofEvaluations<Field2> {
291+
let [
292+
,
293+
w,
294+
z,
295+
s,
296+
coeffs,
297+
genericSelector,
298+
poseidonSelector,
299+
completeAddSelector,
300+
mulSelector,
301+
emulSelector,
302+
endomulScalarSelector,
303+
rangeCheck0Selector,
304+
rangeCheck1Selector,
305+
foreignFieldAddSelector,
306+
foreignFieldMulSelector,
307+
xorSelector,
308+
rotSelector,
309+
lookupAggregation,
310+
lookupTable,
311+
lookupSorted,
312+
runtimeLookupTable,
313+
runtimeLookupTableSelector,
314+
xorLookupSelector,
315+
lookupGateLookupSelector,
316+
rangeCheckLookupSelector,
317+
foreignFieldMulLookupSelector,
318+
] = evals;
319+
return [
320+
0,
321+
MlTuple.map(w, mapPointEvals),
322+
mapPointEvals(z),
323+
MlTuple.map(s, mapPointEvals),
324+
MlTuple.map(coeffs, mapPointEvals),
325+
mapPointEvals(genericSelector),
326+
mapPointEvals(poseidonSelector),
327+
mapPointEvals(completeAddSelector),
328+
mapPointEvals(mulSelector),
329+
mapPointEvals(emulSelector),
330+
mapPointEvals(endomulScalarSelector),
331+
mapPointEvalsOption(rangeCheck0Selector),
332+
mapPointEvalsOption(rangeCheck1Selector),
333+
mapPointEvalsOption(foreignFieldAddSelector),
334+
mapPointEvalsOption(foreignFieldMulSelector),
335+
mapPointEvalsOption(xorSelector),
336+
mapPointEvalsOption(rotSelector),
337+
mapPointEvalsOption(lookupAggregation),
338+
mapPointEvalsOption(lookupTable),
339+
MlArray.map(lookupSorted, mapPointEvalsOption),
340+
mapPointEvalsOption(runtimeLookupTable),
341+
mapPointEvalsOption(runtimeLookupTableSelector),
342+
mapPointEvalsOption(xorLookupSelector),
343+
mapPointEvalsOption(lookupGateLookupSelector),
344+
mapPointEvalsOption(rangeCheckLookupSelector),
345+
mapPointEvalsOption(foreignFieldMulLookupSelector),
346+
];
347+
};
348+
}
349+
263350
// helper
264351

265352
type RemoveLeadingZero<T extends [0, ...any]> = T extends [0, ...infer U] ? U : never;

0 commit comments

Comments
 (0)