Skip to content

Commit bfe406f

Browse files
committed
Merge branch 'native/napi-gatevector' into florian/napi-prover-index
2 parents f8fe4c8 + d4ff2e9 commit bfe406f

File tree

6 files changed

+142
-145
lines changed

6 files changed

+142
-145
lines changed
Lines changed: 0 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +0,0 @@
1-
/* eslint-disable no-unused-vars */
2-
/* global plonk_wasm, caml_string_of_jsstring,
3-
free_on_finalize, tsRustConversion, caml_bytes_of_uint8array
4-
*/
5-
6-
// Provides: caml_pasta_fp_plonk_gate_vector_create
7-
// Requires: plonk_wasm, free_on_finalize
8-
var caml_pasta_fp_plonk_gate_vector_create = function () {
9-
return free_on_finalize(plonk_wasm.caml_pasta_fp_plonk_gate_vector_create());
10-
};
11-
12-
// Provides: caml_pasta_fp_plonk_gate_vector_add
13-
// Requires: plonk_wasm, tsRustConversion
14-
var caml_pasta_fp_plonk_gate_vector_add = function (v, x) {
15-
return plonk_wasm.caml_pasta_fp_plonk_gate_vector_add(
16-
v,
17-
tsRustConversion.fp.gateToRust(x)
18-
);
19-
};
20-
21-
// Provides: caml_pasta_fp_plonk_gate_vector_get
22-
// Requires: plonk_wasm, tsRustConversion
23-
var caml_pasta_fp_plonk_gate_vector_get = function (v, i) {
24-
return tsRustConversion.fp.gateFromRust(
25-
plonk_wasm.caml_pasta_fp_plonk_gate_vector_get(v, i)
26-
);
27-
};
28-
29-
// Provides: caml_pasta_fp_plonk_gate_vector_len
30-
// Requires: plonk_wasm
31-
var caml_pasta_fp_plonk_gate_vector_len = function (v) {
32-
return plonk_wasm.caml_pasta_fp_plonk_gate_vector_len(v);
33-
};
34-
35-
// Provides: caml_pasta_fp_plonk_gate_vector_wrap
36-
// Requires: plonk_wasm, tsRustConversion
37-
var caml_pasta_fp_plonk_gate_vector_wrap = function (v, x, y) {
38-
return plonk_wasm.caml_pasta_fp_plonk_gate_vector_wrap(
39-
v,
40-
tsRustConversion.wireToRust(x),
41-
tsRustConversion.wireToRust(y)
42-
);
43-
};
44-
45-
// Provides: caml_pasta_fp_plonk_gate_vector_digest
46-
// Requires: plonk_wasm, caml_bytes_of_uint8array
47-
var caml_pasta_fp_plonk_gate_vector_digest = function (
48-
public_input_size,
49-
gate_vector
50-
) {
51-
var uint8array = plonk_wasm.caml_pasta_fp_plonk_gate_vector_digest(
52-
public_input_size,
53-
gate_vector
54-
);
55-
return caml_bytes_of_uint8array(uint8array);
56-
};
57-
58-
59-
60-
// Provides: caml_pasta_fq_plonk_gate_vector_create
61-
// Requires: plonk_wasm, free_on_finalize
62-
var caml_pasta_fq_plonk_gate_vector_create = function () {
63-
return free_on_finalize(plonk_wasm.caml_pasta_fq_plonk_gate_vector_create());
64-
};
65-
66-
// Provides: caml_pasta_fq_plonk_gate_vector_add
67-
// Requires: plonk_wasm, tsRustConversion
68-
var caml_pasta_fq_plonk_gate_vector_add = function (v, x) {
69-
return plonk_wasm.caml_pasta_fq_plonk_gate_vector_add(
70-
v,
71-
tsRustConversion.fq.gateToRust(x)
72-
);
73-
};
74-
75-
// Provides: caml_pasta_fq_plonk_gate_vector_get
76-
// Requires: plonk_wasm, tsRustConversion
77-
var caml_pasta_fq_plonk_gate_vector_get = function (v, i) {
78-
return tsRustConversion.fq.gateFromRust(
79-
plonk_wasm.caml_pasta_fq_plonk_gate_vector_get(v, i)
80-
);
81-
};
82-
83-
// Provides: caml_pasta_fq_plonk_gate_vector_len
84-
// Requires: plonk_wasm
85-
var caml_pasta_fq_plonk_gate_vector_len = function (v) {
86-
return plonk_wasm.caml_pasta_fq_plonk_gate_vector_len(v);
87-
};
88-
89-
// Provides: caml_pasta_fq_plonk_gate_vector_wrap
90-
// Requires: plonk_wasm, tsRustConversion
91-
var caml_pasta_fq_plonk_gate_vector_wrap = function (v, x, y) {
92-
return plonk_wasm.caml_pasta_fq_plonk_gate_vector_wrap(
93-
v,
94-
tsRustConversion.wireToRust(x),
95-
tsRustConversion.wireToRust(y)
96-
);
97-
};
98-
99-
// Provides: caml_pasta_fq_plonk_gate_vector_digest
100-
// Requires: plonk_wasm, caml_bytes_of_uint8array
101-
var caml_pasta_fq_plonk_gate_vector_digest = function (
102-
public_input_size,
103-
gate_vector
104-
) {
105-
var uint8array = plonk_wasm.caml_pasta_fq_plonk_gate_vector_digest(
106-
public_input_size,
107-
gate_vector
108-
);
109-
return caml_bytes_of_uint8array(uint8array);
110-
};

src/lib/crypto/kimchi_bindings/js/bindings/prover-index.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
/* global plonk_wasm, tsRustConversion, caml_string_of_jsstring,
22
free_on_finalize, caml_jsstring_of_string
33
*/
4-
5-
64

75
// Provides: caml_pasta_fp_plonk_index_create_bytecode
86
// Requires: caml_pasta_fp_plonk_index_create
Lines changed: 115 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,126 @@
11
/* global plonk_wasm, caml_string_of_jsstring */
2+
/* eslint-disable no-unused-vars */
3+
/* global plonk_wasm, tsRustConversionNative, caml_bytes_of_uint8array, caml_string_of_jsstring */
24

5+
// Provides: caml_pasta_fp_plonk_gate_vector_create
6+
// Requires: plonk_wasm
7+
var caml_pasta_fp_plonk_gate_vector_create = function () {
8+
return plonk_wasm.caml_pasta_fp_plonk_gate_vector_create();
9+
};
10+
11+
// Provides: caml_pasta_fp_plonk_gate_vector_add
12+
// Requires: plonk_wasm, tsRustConversionNative
13+
var caml_pasta_fp_plonk_gate_vector_add = function (vector, gate) {
14+
return plonk_wasm.caml_pasta_fp_plonk_gate_vector_add(
15+
vector,
16+
tsRustConversionNative.fp.gateToRust(gate)
17+
);
18+
};
19+
20+
// Provides: caml_pasta_fp_plonk_gate_vector_get
21+
// Requires: plonk_wasm, tsRustConversionNative
22+
var caml_pasta_fp_plonk_gate_vector_get = function (vector, index) {
23+
return tsRustConversionNative.fp.gateFromRust(
24+
plonk_wasm.caml_pasta_fp_plonk_gate_vector_get(vector, index)
25+
);
26+
};
27+
28+
// Provides: caml_pasta_fp_plonk_gate_vector_len
29+
// Requires: plonk_wasm
30+
var caml_pasta_fp_plonk_gate_vector_len = function (vector) {
31+
return plonk_wasm.caml_pasta_fp_plonk_gate_vector_len(vector);
32+
};
33+
34+
// Provides: caml_pasta_fp_plonk_gate_vector_wrap
35+
// Requires: plonk_wasm, tsRustConversionNative
36+
var caml_pasta_fp_plonk_gate_vector_wrap = function (vector, target, head) {
37+
return plonk_wasm.caml_pasta_fp_plonk_gate_vector_wrap(
38+
vector,
39+
tsRustConversionNative.wireToRust(target),
40+
tsRustConversionNative.wireToRust(head)
41+
);
42+
};
43+
44+
// Provides: caml_pasta_fp_plonk_gate_vector_digest
45+
// Requires: plonk_wasm, caml_bytes_of_uint8array
46+
var caml_pasta_fp_plonk_gate_vector_digest = function (public_input_size, gate_vector) {
47+
var bytes = plonk_wasm.caml_pasta_fp_plonk_gate_vector_digest(
48+
public_input_size,
49+
gate_vector
50+
);
51+
if (!(bytes instanceof Uint8Array)) {
52+
bytes = Uint8Array.from(bytes);
53+
}
54+
return caml_bytes_of_uint8array(bytes);
55+
};
356

457
// Provides: caml_pasta_fp_plonk_circuit_serialize
558
// Requires: plonk_wasm, caml_string_of_jsstring
6-
var caml_pasta_fp_plonk_circuit_serialize = function (
7-
public_input_size,
8-
gate_vector
9-
) {
10-
var t = plonk_wasm.caml_pasta_fp_plonk_circuit_serialize(
11-
plonk_wasm.caml_pasta_fp_plonk_gate_vector_from_bytes(gate_vector.serialize()),
12-
public_input_size
13-
);
59+
var caml_pasta_fp_plonk_circuit_serialize = function (public_input_size, gate_vector) {
60+
return caml_string_of_jsstring(
61+
plonk_wasm.caml_pasta_fp_plonk_circuit_serialize(public_input_size, gate_vector)
62+
);
63+
};
1464

15-
console.log(t);
16-
return caml_string_of_jsstring(
17-
t
18-
);
65+
// --- Fq versions ---
66+
67+
// Provides: caml_pasta_fq_plonk_gate_vector_create
68+
// Requires: plonk_wasm
69+
var caml_pasta_fq_plonk_gate_vector_create = function () {
70+
return plonk_wasm.caml_pasta_fq_plonk_gate_vector_create();
71+
};
72+
73+
// Provides: caml_pasta_fq_plonk_gate_vector_add
74+
// Requires: plonk_wasm, tsRustConversionNative
75+
var caml_pasta_fq_plonk_gate_vector_add = function (vector, gate) {
76+
return plonk_wasm.caml_pasta_fq_plonk_gate_vector_add(
77+
vector,
78+
tsRustConversionNative.fq.gateToRust(gate)
79+
);
80+
};
81+
82+
// Provides: caml_pasta_fq_plonk_gate_vector_get
83+
// Requires: plonk_wasm, tsRustConversionNative
84+
var caml_pasta_fq_plonk_gate_vector_get = function (vector, index) {
85+
return tsRustConversionNative.fq.gateFromRust(
86+
plonk_wasm.caml_pasta_fq_plonk_gate_vector_get(vector, index)
87+
);
88+
};
89+
90+
91+
// Provides: caml_pasta_fq_plonk_gate_vector_len
92+
// Requires: plonk_wasm
93+
var caml_pasta_fq_plonk_gate_vector_len = function (vector) {
94+
return plonk_wasm.caml_pasta_fq_plonk_gate_vector_len(vector);
95+
};
96+
97+
// Provides: caml_pasta_fq_plonk_gate_vector_wrap
98+
// Requires: plonk_wasm, tsRustConversionNative
99+
var caml_pasta_fq_plonk_gate_vector_wrap = function (vector, target, head) {
100+
return plonk_wasm.caml_pasta_fq_plonk_gate_vector_wrap(
101+
vector,
102+
tsRustConversionNative.wireToRust(target),
103+
tsRustConversionNative.wireToRust(head)
104+
);
19105
};
20106

107+
// Provides: caml_pasta_fq_plonk_gate_vector_digest
108+
// Requires: plonk_wasm, caml_bytes_of_uint8array
109+
var caml_pasta_fq_plonk_gate_vector_digest = function (public_input_size, gate_vector) {
110+
var bytes = plonk_wasm.caml_pasta_fq_plonk_gate_vector_digest(
111+
public_input_size,
112+
gate_vector
113+
);
114+
if (!(bytes instanceof Uint8Array)) {
115+
bytes = Uint8Array.from(bytes);
116+
}
117+
return caml_bytes_of_uint8array(bytes);
118+
};
21119

22120
// Provides: caml_pasta_fq_plonk_circuit_serialize
23121
// Requires: plonk_wasm, caml_string_of_jsstring
24-
var caml_pasta_fq_plonk_circuit_serialize = function (
25-
public_input_size,
26-
gate_vector
27-
) {
28-
29-
var t = plonk_wasm.caml_pasta_fq_plonk_circuit_serialize(
30-
plonk_wasm.caml_pasta_fq_plonk_gate_vector_from_bytes(gate_vector.serialize()),
31-
public_input_size
32-
);
33-
console.log(t)
34-
return caml_string_of_jsstring(
35-
t
36-
);
37-
};
122+
var caml_pasta_fq_plonk_circuit_serialize = function (public_input_size, gate_vector) {
123+
return caml_string_of_jsstring(
124+
plonk_wasm.caml_pasta_fq_plonk_circuit_serialize(public_input_size, gate_vector)
125+
);
126+
};

src/lib/crypto/kimchi_bindings/js/native/native-overrides/oracles.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@
44
// Provides: caml_pasta_fq_poseidon_block_cipher
55
// Requires: plonk_wasm, tsRustConversionNative
66
function caml_pasta_fq_poseidon_block_cipher(_fake_params, fq_vector) {
7-
8-
console.log("overriding the old wasm caml_pasta_fq_poseidon_block_cipher, now using the native one")
9-
107
// 1. get permuted field vector from rust
118
var wasm_flat_vector = plonk_wasm.caml_pasta_fq_poseidon_block_cipher(
129
tsRustConversionNative.fq.vectorToRust(fq_vector)
@@ -22,7 +19,6 @@ function caml_pasta_fq_poseidon_block_cipher(_fake_params, fq_vector) {
2219
// Provides: caml_pasta_fp_poseidon_block_cipher
2320
// Requires: plonk_wasm, tsRustConversionNative
2421
function caml_pasta_fp_poseidon_block_cipher(_fake_params, fp_vector) {
25-
2622
// 1. get permuted field vector from rust
2723
var wasm_flat_vector = plonk_wasm.caml_pasta_fp_poseidon_block_cipher(
2824
tsRustConversionNative.fp.vectorToRust(fp_vector)

src/lib/crypto/kimchi_bindings/js/native/native-overrides/util.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
/* global plonk_wasm, tsRustConversionNative, getTsBindings, tsBindings */
2-
1+
/* global plonk_wasm, tsRustConversionNative, getTsBindings, tsBindings */
32

43
// Provides: tsRustConversionNative
54
// Requires: tsBindings, plonk_wasm, getTsBindings

src/lib/crypto/kimchi_bindings/js/node_js/node_backend.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ try {
77
// native not available, keep WASM
88
}
99

10+
if (native) {
11+
plonk_wasm.__kimchi_napi = true;
12+
if (typeof globalThis !== 'undefined') {
13+
globalThis.__kimchi_napi = true;
14+
}
15+
}
16+
1017
function snakeToCamel(name) {
1118
return name.replace(/_([a-z])/g, function (_match, ch) {
1219
return ch.toUpperCase();
@@ -55,4 +62,22 @@ override('caml_pasta_fq_plonk_index_decode')
5562
override('caml_pasta_fp_plonk_index_encode');
5663
override('caml_pasta_fq_plonk_index_encode');
5764
override('caml_pasta_fq_plonk_index_read');
58-
override('caml_pasta_fp_plonk_index_read');
65+
override('caml_pasta_fp_plonk_index_read');
66+
67+
// GateVector
68+
[
69+
'caml_pasta_fp_plonk_gate_vector_create',
70+
'caml_pasta_fq_plonk_gate_vector_create',
71+
'caml_pasta_fp_plonk_gate_vector_add',
72+
'caml_pasta_fq_plonk_gate_vector_add',
73+
'caml_pasta_fp_plonk_gate_vector_get',
74+
'caml_pasta_fq_plonk_gate_vector_get',
75+
'caml_pasta_fp_plonk_gate_vector_len',
76+
'caml_pasta_fq_plonk_gate_vector_len',
77+
'caml_pasta_fp_plonk_gate_vector_wrap',
78+
'caml_pasta_fq_plonk_gate_vector_wrap',
79+
'caml_pasta_fp_plonk_gate_vector_digest',
80+
'caml_pasta_fq_plonk_gate_vector_digest',
81+
'caml_pasta_fp_plonk_circuit_serialize',
82+
'caml_pasta_fq_plonk_circuit_serialize',
83+
].forEach(override);

0 commit comments

Comments
 (0)