Skip to content

Commit 0b18661

Browse files
committed
Merge branch 'native/napi' into querolita/napi-proof
2 parents 64b3727 + 188aa22 commit 0b18661

File tree

4 files changed

+47
-14
lines changed

4 files changed

+47
-14
lines changed

src/bindings/crypto/bindings/conversion-core.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { MlArray } from '../../../lib/ml/base.js';
2+
import type * as wasmNamespace from '../../compiled/node_bindings/plonk_wasm.cjs';
13
import type {
24
WasmFpGate,
35
WasmFpPolyComm,
@@ -6,27 +8,25 @@ import type {
68
WasmGPallas,
79
WasmGVesta,
810
} from '../../compiled/node_bindings/plonk_wasm.cjs';
9-
import { OrInfinity, Gate, PolyComm, Wire } from './kimchi-types.js';
10-
import type * as wasmNamespace from '../../compiled/node_bindings/plonk_wasm.cjs';
11-
import { MlArray } from '../../../lib/ml/base.js';
12-
import { mapTuple } from './util.js';
1311
import {
1412
WasmAffine,
1513
affineFromRust,
1614
affineToRust,
1715
fieldsFromRustFlat,
1816
fieldsToRustFlat,
1917
} from './conversion-base.js';
18+
import { Gate, OrInfinity, PolyComm, Wire } from './kimchi-types.js';
19+
import { mapTuple } from './util.js';
2020

2121
export {
2222
ConversionCore,
2323
ConversionCores,
2424
conversionCore,
2525
freeOnFinalize,
26-
wrap,
27-
unwrap,
2826
mapFromUintArray,
2927
mapToUint32Array,
28+
unwrap,
29+
wrap,
3030
};
3131

3232
// basic conversion functions for each field
@@ -116,7 +116,9 @@ function conversionCorePerField(
116116
return new PolyComm(rustUnshifted, rustShifted);
117117
},
118118
polyCommFromRust(polyComm: WasmPolyComm): PolyComm {
119+
console.log('polyComm', polyComm);
119120
let rustUnshifted = polyComm.unshifted;
121+
console.log('polyCommFromRust', rustUnshifted);
120122
let mlUnshifted = mapFromUintArray(rustUnshifted, (ptr) => {
121123
return affineFromRust(wrap(ptr, CommitmentCurve));
122124
});
@@ -174,6 +176,7 @@ function freeOnFinalize<T extends Freeable>(instance: T) {
174176
}
175177

176178
function mapFromUintArray<T>(array: Uint32Array | Uint8Array, map: (i: number) => T) {
179+
console.log('array', array);
177180
let n = array.length;
178181
let result: T[] = Array(n);
179182
for (let i = 0; i < n; i++) {

src/bindings/crypto/bindings/conversion-verifier-index.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { MlArray, MlBool, MlOption } from '../../../lib/ml/base.js';
2+
import type * as wasmNamespace from '../../compiled/node_bindings/plonk_wasm.cjs';
13
import type {
24
WasmFpDomain,
35
WasmFpLookupSelectors,
@@ -13,11 +15,9 @@ import type {
1315
WasmFqShifts,
1416
LookupInfo as WasmLookupInfo,
1517
} from '../../compiled/node_bindings/plonk_wasm.cjs';
16-
import type * as wasmNamespace from '../../compiled/node_bindings/plonk_wasm.cjs';
17-
import { MlBool, MlArray, MlOption } from '../../../lib/ml/base.js';
18-
import { Field, VerifierIndex, Domain, VerificationEvals, PolyComm } from './kimchi-types.js';
1918
import { fieldFromRust, fieldToRust } from './conversion-base.js';
2019
import { ConversionCore, ConversionCores, freeOnFinalize } from './conversion-core.js';
20+
import { Domain, Field, PolyComm, VerificationEvals, VerifierIndex } from './kimchi-types.js';
2121
import { Lookup, LookupInfo, LookupSelectors } from './lookup.js';
2222

2323
export { verifierIndexConversion };
@@ -117,6 +117,8 @@ function verifierIndexConversionPerField(
117117
);
118118
}
119119
function verificationEvalsFromRust(evals: WasmVerificationEvals): VerificationEvals {
120+
console.log('evals', evals.coefficients_comm);
121+
120122
let mlEvals: VerificationEvals = [
121123
0,
122124
core.polyCommsFromRust(evals.sigma_comm),

src/bindings/crypto/bindings/srs.ts

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,15 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
104104
let maybeLagrangeCommitment = (srs: WasmSrs, domain_size: number, i: number) => {
105105
try {
106106
console.log(3);
107-
return wasm[`caml_${f}_srs_maybe_lagrange_commitment`](srs, domain_size, i);
107+
console.log('srs', srs);
108+
let bytes = (wasm as any)[`caml_${f}_srs_to_bytes_external`](srs);
109+
console.log('bytes', bytes);
110+
let wasmSrs = undefined;
111+
if (f === 'fp') wasmSrs = wasm.WasmFpSrs.deserialize(bytes);
112+
else wasmSrs = wasm.WasmFqSrs.deserialize(bytes);
113+
let s = wasm[`caml_${f}_srs_maybe_lagrange_commitment`](wasmSrs, domain_size, i);
114+
console.log('S', s);
115+
return s;
108116
} catch (error) {
109117
console.error(`Error in SRS maybe lagrange commitment for field ${f}`);
110118
throw error;
@@ -113,7 +121,13 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
113121
let lagrangeCommitment = (srs: WasmSrs, domain_size: number, i: number) => {
114122
try {
115123
console.log(4);
116-
return wasm[`caml_${f}_srs_lagrange_commitment`](srs, domain_size, i);
124+
console.log('srs', srs);
125+
let bytes = (wasm as any)[`caml_${f}_srs_to_bytes_external`](srs);
126+
console.log('bytes', bytes);
127+
let wasmSrs = undefined;
128+
if (f === 'fp') wasmSrs = wasm.WasmFpSrs.deserialize(bytes);
129+
else wasmSrs = wasm.WasmFqSrs.deserialize(bytes);
130+
return wasm[`caml_${f}_srs_lagrange_commitment`](wasmSrs, domain_size, i);
117131
} catch (error) {
118132
console.error(`Error in SRS lagrange commitment for field ${f}`);
119133
throw error;
@@ -122,7 +136,13 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
122136
let lagrangeCommitmentsWholeDomainPtr = (srs: WasmSrs, domain_size: number) => {
123137
try {
124138
console.log(5);
125-
return wasm[`caml_${f}_srs_lagrange_commitments_whole_domain_ptr`](srs, domain_size);
139+
console.log('srs', srs);
140+
let bytes = (wasm as any)[`caml_${f}_srs_to_bytes_external`](srs);
141+
console.log('bytes', bytes);
142+
let wasmSrs = undefined;
143+
if (f === 'fp') wasmSrs = wasm.WasmFpSrs.deserialize(bytes);
144+
else wasmSrs = wasm.WasmFqSrs.deserialize(bytes);
145+
return wasm[`caml_${f}_srs_lagrange_commitments_whole_domain_ptr`](wasmSrs, domain_size);
126146
} catch (error) {
127147
console.error(`Error in SRS lagrange commitments whole domain ptr for field ${f}`);
128148
throw error;
@@ -140,7 +160,13 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
140160
let getLagrangeBasis = (srs: WasmSrs, n: number) => {
141161
try {
142162
console.log(7);
143-
return wasm[`caml_${f}_srs_get_lagrange_basis`](srs, n);
163+
console.log('srs', srs);
164+
let bytes = (wasm as any)[`caml_${f}_srs_to_bytes_external`](srs);
165+
console.log('bytes', bytes);
166+
let wasmSrs = undefined;
167+
if (f === 'fp') wasmSrs = wasm.WasmFpSrs.deserialize(bytes);
168+
else wasmSrs = wasm.WasmFqSrs.deserialize(bytes);
169+
return wasm[`caml_${f}_srs_get_lagrange_basis`](wasmSrs, n);
144170
} catch (error) {
145171
console.error(`Error in SRS get lagrange basis for field ${f}`);
146172
throw error;
@@ -241,7 +267,9 @@ function srsPerField(f: 'fp' | 'fq', wasm: Wasm, conversion: RustConversion) {
241267
// TODO: this code path will throw on the web since `caml_${f}_srs_get_lagrange_basis` is not properly implemented
242268
// using a writable cache in the browser seems to be fairly uncommon though, so it's at least an 80/20 solution
243269
let wasmComms = getLagrangeBasis(srs, domainSize);
270+
console.log('wasmComms', wasmComms);
244271
let mlComms = conversion[f].polyCommsFromRust(wasmComms);
272+
console.log('mlComms', mlComms);
245273
let comms = polyCommsToJSON(mlComms);
246274
let bytes = new TextEncoder().encode(JSON.stringify(comms));
247275
writeCache(cache, header, bytes);

0 commit comments

Comments
 (0)