@aztec/bb.js 0.86.0-starknet.1 → 0.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/browser/barretenberg-threads.js +1 -1
- package/dest/browser/barretenberg.js +1 -1
- package/dest/browser/index.js +125 -209
- package/dest/browser/main.worker.js +116 -116
- package/dest/browser/thread.worker.js +116 -116
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +1 -1
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +5 -5
- package/dest/node/barretenberg/verifier.d.ts +0 -2
- package/dest/node/barretenberg/verifier.d.ts.map +1 -1
- package/dest/node/barretenberg/verifier.js +2 -12
- package/dest/node/barretenberg_api/index.d.ts +0 -10
- package/dest/node/barretenberg_api/index.d.ts.map +1 -1
- package/dest/node/barretenberg_api/index.js +2 -72
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/bigint-array/index.d.ts +1 -0
- package/dest/node/bigint-array/index.d.ts.map +1 -1
- package/dest/node/bindgen/mappings.js +2 -2
- package/dest/node/bindgen/typescript.js +1 -1
- package/dest/node/crs/net_crs.d.ts.map +1 -1
- package/dest/node/crs/net_crs.js +6 -7
- package/dest/node/crs/node/index.js +4 -4
- package/dest/node/main.d.ts +0 -8
- package/dest/node/main.d.ts.map +1 -1
- package/dest/node/main.js +3 -193
- package/dest/node/proof/index.d.ts +0 -1
- package/dest/node/proof/index.d.ts.map +1 -1
- package/dest/node/proof/index.js +1 -8
- package/dest/node/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/node/serialize/buffer_reader.js +1 -1
- package/dest/node/types/fields.d.ts +1 -0
- package/dest/node/types/fields.d.ts.map +1 -1
- package/dest/node/types/fields.js +1 -1
- package/dest/node/types/point.d.ts +1 -0
- package/dest/node/types/point.d.ts.map +1 -1
- package/dest/node/types/point.js +1 -1
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +1 -1
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +5 -5
- package/dest/node-cjs/barretenberg/verifier.d.ts +0 -2
- package/dest/node-cjs/barretenberg/verifier.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/verifier.js +1 -11
- package/dest/node-cjs/barretenberg_api/index.d.ts +0 -10
- package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_api/index.js +1 -71
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/bigint-array/index.d.ts +1 -0
- package/dest/node-cjs/bigint-array/index.d.ts.map +1 -1
- package/dest/node-cjs/bindgen/mappings.js +2 -2
- package/dest/node-cjs/bindgen/typescript.js +1 -1
- package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
- package/dest/node-cjs/crs/net_crs.js +6 -7
- package/dest/node-cjs/crs/node/index.js +4 -4
- package/dest/node-cjs/main.d.ts +0 -8
- package/dest/node-cjs/main.d.ts.map +1 -1
- package/dest/node-cjs/main.js +4 -202
- package/dest/node-cjs/proof/index.d.ts +0 -1
- package/dest/node-cjs/proof/index.d.ts.map +1 -1
- package/dest/node-cjs/proof/index.js +2 -10
- package/dest/node-cjs/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/node-cjs/serialize/buffer_reader.js +1 -1
- package/dest/node-cjs/types/fields.d.ts +1 -0
- package/dest/node-cjs/types/fields.d.ts.map +1 -1
- package/dest/node-cjs/types/fields.js +1 -1
- package/dest/node-cjs/types/point.d.ts +1 -0
- package/dest/node-cjs/types/point.d.ts.map +1 -1
- package/dest/node-cjs/types/point.js +1 -1
- package/package.json +7 -8
- package/src/barretenberg/backend.ts +24 -22
- package/src/barretenberg/index.ts +9 -5
- package/src/barretenberg/verifier.ts +1 -13
- package/src/barretenberg_api/index.ts +0 -128
- package/src/bindgen/mappings.ts +1 -1
- package/src/bindgen/typescript.ts +4 -4
- package/src/crs/net_crs.ts +5 -6
- package/src/crs/node/index.ts +3 -3
- package/src/index.html +1 -1
- package/src/main.ts +14 -230
- package/src/proof/index.ts +0 -12
- package/src/serialize/buffer_reader.ts +4 -1
- package/src/types/fields.ts +2 -2
- package/src/types/point.ts +4 -1
- package/dest/node/crs/node/ignition_files_crs.d.ts +0 -38
- package/dest/node/crs/node/ignition_files_crs.d.ts.map +0 -1
- package/dest/node/crs/node/ignition_files_crs.js +0 -65
- package/dest/node/examples/simple.rawtest.d.ts +0 -2
- package/dest/node/examples/simple.rawtest.d.ts.map +0 -1
- package/dest/node/examples/simple.rawtest.js +0 -30
- package/dest/node/examples/simple.test.d.ts +0 -2
- package/dest/node/examples/simple.test.d.ts.map +0 -1
- package/dest/node/examples/simple.test.js +0 -23
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts +0 -38
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts.map +0 -1
- package/dest/node-cjs/crs/node/ignition_files_crs.js +0 -69
- package/dest/node-cjs/examples/simple.rawtest.d.ts +0 -2
- package/dest/node-cjs/examples/simple.rawtest.d.ts.map +0 -1
- package/dest/node-cjs/examples/simple.rawtest.js +0 -33
- package/dest/node-cjs/examples/simple.test.d.ts +0 -2
- package/dest/node-cjs/examples/simple.test.d.ts.map +0 -1
- package/dest/node-cjs/examples/simple.test.js +0 -25
- package/src/crs/node/ignition_files_crs.ts +0 -74
- package/src/examples/simple.rawtest.ts +0 -38
- package/src/examples/simple.test.ts +0 -28
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.flattenFieldsAsArray = exports.deflattenFields = exports.
|
|
3
|
+
exports.flattenFieldsAsArray = exports.deflattenFields = exports.reconstructHonkProof = exports.splitHonkProof = exports.PAIRING_POINTS_SIZE = void 0;
|
|
4
4
|
exports.PAIRING_POINTS_SIZE = 16;
|
|
5
5
|
// Fields are 32 bytes
|
|
6
6
|
const fieldByteSize = 32;
|
|
@@ -18,14 +18,6 @@ function reconstructHonkProof(publicInputs, proof) {
|
|
|
18
18
|
return proofWithPublicInputs;
|
|
19
19
|
}
|
|
20
20
|
exports.reconstructHonkProof = reconstructHonkProof;
|
|
21
|
-
function reconstructUltraPlonkProof(proofData) {
|
|
22
|
-
// Flatten publicInputs
|
|
23
|
-
const publicInputsConcatenated = flattenFieldsAsArray(proofData.publicInputs);
|
|
24
|
-
// Concatenate publicInputs and proof
|
|
25
|
-
const proofWithPublicInputs = Uint8Array.from([...publicInputsConcatenated, ...proofData.proof]);
|
|
26
|
-
return proofWithPublicInputs;
|
|
27
|
-
}
|
|
28
|
-
exports.reconstructUltraPlonkProof = reconstructUltraPlonkProof;
|
|
29
21
|
function deflattenFields(flattenedFields) {
|
|
30
22
|
const publicInputSize = 32;
|
|
31
23
|
const chunkedFlattenedPublicInputs = [];
|
|
@@ -75,4 +67,4 @@ function hexToUint8Array(hex) {
|
|
|
75
67
|
}
|
|
76
68
|
return u8;
|
|
77
69
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvb2YvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBV2EsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFFdEMsc0JBQXNCO0FBQ3RCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUV6QixTQUFnQixjQUFjLENBQzVCLHFCQUFpQyxFQUNqQyxlQUF1QjtJQUV2QixNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsR0FBRyxhQUFhLENBQUMsQ0FBQztJQUNyRixNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBRTNFLE9BQU87UUFDTCxLQUFLO1FBQ0wsWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDO0FBWEQsd0NBV0M7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxZQUF3QixFQUFFLEtBQWlCO0lBQzlFLE1BQU0scUJBQXFCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRSxPQUFPLHFCQUFxQixDQUFDO0FBQy9CLENBQUM7QUFIRCxvREFHQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxlQUEyQjtJQUN6RCxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDM0IsTUFBTSw0QkFBNEIsR0FBaUIsRUFBRSxDQUFDO0lBRXRELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNqRSxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUM7UUFDbEUsNEJBQTRCLENBQUMsSUFBSSxDQUFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer_reader.d.ts","sourceRoot":"","sources":["../../../src/serialize/buffer_reader.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;
|
|
1
|
+
{"version":3,"file":"buffer_reader.d.ts","sourceRoot":"","sources":["../../../src/serialize/buffer_reader.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IAGrB,OAAO,CAAC,MAAM;IAFhB,OAAO,CAAC,KAAK,CAAS;gBAEZ,MAAM,EAAE,UAAU,EAC1B,MAAM,SAAI;WAKE,QAAQ,CAAC,cAAc,EAAE,UAAU,GAAG,YAAY;IAIzD,UAAU,IAAI,MAAM;IAMpB,WAAW,IAAI,OAAO;IAKtB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU;IAKhC,gBAAgB,IAAI,MAAM,EAAE;IAM5B,UAAU,CAAC,CAAC,EAAE,gBAAgB,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAA;KAAE,GAAG,CAAC,EAAE;IASjF,SAAS,CAAC,CAAC,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE;QAChB,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC;KACzC,GACA,CAAC,EAAE;IAQC,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAA;KAAE,GAAG,CAAC;IAI3E,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM;IAIpB,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,UAAU;IAKxB,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAA;KAAE,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;CAUnG"}
|
|
@@ -67,4 +67,4 @@ class BufferReader {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
exports.BufferReader = BufferReader;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3JlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJpYWxpemUvYnVmZmVyX3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFhLFlBQVk7SUFFdkIsWUFDVSxNQUFrQixFQUMxQixNQUFNLEdBQUcsQ0FBQztRQURGLFdBQU0sR0FBTixNQUFNLENBQVk7UUFHMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBeUM7UUFDOUQsT0FBTyxjQUFjLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTSxVQUFVO1FBQ2YsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNoQixPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sU0FBUyxDQUFDLENBQVM7UUFDeEIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFH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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/types/fields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/types/fields.ts"],"names":[],"mappings":";;AAOA,OAAO,EAAE,YAAY,EAAyB,MAAM,uBAAuB,CAAC;AAG5E;;;;GAIG;AACH,qBAAa,EAAE;IACb,MAAM,CAAC,IAAI,KAAc;IACzB,MAAM,CAAC,OAAO,SAAuE;IACrF,MAAM,CAAC,SAAS,SAAqB;IACrC,MAAM,CAAC,aAAa,SAAM;IAC1B,KAAK,EAAE,UAAU,CAAC;gBAEN,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM;IAiB/C,MAAM,CAAC,MAAM;IAKb,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,YAAY;IAK5D,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY;IAKzD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B,QAAQ;IAIR,QAAQ;IAIR,MAAM,CAAC,GAAG,EAAE,EAAE;IAId,MAAM;CAGP;AAED;;;;GAIG;AACH,qBAAa,EAAE;aAKe,KAAK,EAAE,MAAM;IAJzC,MAAM,CAAC,OAAO,SAAuE;IACrF,MAAM,CAAC,SAAS,SAAqB;IACrC,MAAM,CAAC,aAAa,SAAM;gBAEE,KAAK,EAAE,MAAM;IAMzC,MAAM,CAAC,MAAM;IAKb,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,YAAY;IAK5D,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,YAAY;IAKlE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B,QAAQ;IAIR,QAAQ;IAIR,MAAM,CAAC,GAAG,EAAE,EAAE;IAId,MAAM;CAGP"}
|
|
@@ -104,4 +104,4 @@ _b = Fq;
|
|
|
104
104
|
Fq.MODULUS = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n;
|
|
105
105
|
Fq.MAX_VALUE = _b.MODULUS - 1n;
|
|
106
106
|
Fq.SIZE_IN_BYTES = 32;
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2ZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsaURBQWlEO0FBQ2pELHVEQUtrQztBQUNsQyxvREFBNEU7QUFFNUUsMkZBQTJGO0FBQzNGOzs7O0dBSUc7QUFDSCxNQUFhLEVBQUU7SUFPYixZQUFZLEtBQW1DO1FBQzdDLCtFQUErRTtRQUMvRSxNQUFNLFdBQVcsR0FDZixPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLEtBQUssWUFBWSxNQUFNO2dCQUN2QixDQUFDLENBQUMsSUFBQSxrQ0FBdUIsRUFBQyxLQUFLLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxJQUFBLCtCQUFvQixFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUs7WUFDUixPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUEsK0JBQW9CLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEgsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNO1FBQ1gsTUFBTSxDQUFDLEdBQUcsSUFBQSwrQkFBb0IsRUFBQyxJQUFBLHNCQUFXLEVBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQzdELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../src/types/point.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../src/types/point.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,qBAAa,KAAK;aAKE,CAAC,EAAE,EAAE;aACL,CAAC,EAAE,EAAE;IALvB,MAAM,CAAC,aAAa,SAAM;IAC1B,MAAM,CAAC,KAAK,QAA+B;gBAGzB,CAAC,EAAE,EAAE,EACL,CAAC,EAAE,EAAE;IAGvB,MAAM,CAAC,MAAM;IAKb,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY;IAKnD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM;IAIjC,QAAQ;IAIR,QAAQ;IAIR,MAAM,CAAC,GAAG,EAAE,KAAK;CAGlB"}
|
|
@@ -32,4 +32,4 @@ class Point {
|
|
|
32
32
|
exports.Point = Point;
|
|
33
33
|
Point.SIZE_IN_BYTES = 64;
|
|
34
34
|
Point.EMPTY = new Point(index_js_1.Fr.ZERO, index_js_1.Fr.ZERO);
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQWdDO0FBQ2hDLG9FQUE2RDtBQUU3RCxNQUFhLEtBQUs7SUFJaEIsWUFDa0IsQ0FBSyxFQUNMLENBQUs7UUFETCxNQUFDLEdBQUQsQ0FBQyxDQUFJO1FBQ0wsTUFBQyxHQUFELENBQUMsQ0FBSTtJQUNwQixDQUFDO0lBRUosTUFBTSxDQUFDLE1BQU07UUFDWCwwQ0FBMEM7UUFDMUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxhQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsYUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBaUM7UUFDakQsTUFBTSxNQUFNLEdBQUcsK0JBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGFBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFlO1FBQy9CLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7QUFqQ0gsc0JBa0NDO0FBakNRLG1CQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ25CLFdBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxhQUFFLENBQUMsSUFBSSxFQUFFLGFBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb.js",
|
|
3
3
|
"packageManager": "yarn@4.5.2",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.87.0",
|
|
5
5
|
"homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"commander": "^12.1.0",
|
|
68
68
|
"debug": "^4.3.4",
|
|
69
69
|
"fflate": "^0.8.0",
|
|
70
|
+
"msgpackr": "^1.11.2",
|
|
70
71
|
"pako": "^2.1.0",
|
|
71
72
|
"tslib": "^2.4.0"
|
|
72
73
|
},
|
|
@@ -77,25 +78,23 @@
|
|
|
77
78
|
"@types/debug": "^4.1.7",
|
|
78
79
|
"@types/detect-node": "^2.0.0",
|
|
79
80
|
"@types/jest": "^29.4.0",
|
|
80
|
-
"@types/node": "^
|
|
81
|
+
"@types/node": "^22.15.17",
|
|
81
82
|
"@types/pako": "^2.0.3",
|
|
82
83
|
"@types/source-map-support": "^0.5.6",
|
|
83
|
-
"@typescript-eslint/eslint-plugin": "^5.54.1",
|
|
84
|
-
"@typescript-eslint/parser": "^5.54.1",
|
|
85
84
|
"buffer": "^6.0.3",
|
|
86
|
-
"eslint": "^
|
|
87
|
-
"eslint-config-prettier": "^
|
|
85
|
+
"eslint": "^9.26.0",
|
|
86
|
+
"eslint-config-prettier": "^10.1.5",
|
|
88
87
|
"html-webpack-plugin": "^5.6.3",
|
|
89
88
|
"idb-keyval": "^6.2.1",
|
|
90
89
|
"jest": "^29.5.0",
|
|
91
|
-
"msgpackr": "^1.11.2",
|
|
92
90
|
"node-polyfill-webpack-plugin": "^4.1.0",
|
|
93
|
-
"prettier": "^
|
|
91
|
+
"prettier": "^3.5.3",
|
|
94
92
|
"terser-webpack-plugin": "^5.3.14",
|
|
95
93
|
"ts-jest": "^29.1.0",
|
|
96
94
|
"ts-loader": "^9.4.2",
|
|
97
95
|
"ts-node": "^10.9.1",
|
|
98
96
|
"typescript": "5.4.5",
|
|
97
|
+
"typescript-eslint": "^8.32.1",
|
|
99
98
|
"webpack": "^5.99.6",
|
|
100
99
|
"webpack-cli": "^6.0.1",
|
|
101
100
|
"webpack-dev-server": "^5.2.1"
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
flattenFieldsAsArray,
|
|
7
7
|
ProofData,
|
|
8
8
|
reconstructHonkProof,
|
|
9
|
-
reconstructUltraPlonkProof,
|
|
10
9
|
splitHonkProof,
|
|
11
10
|
PAIRING_POINTS_SIZE,
|
|
12
11
|
} from '../proof/index.js';
|
|
@@ -91,10 +90,10 @@ export class UltraHonkBackend {
|
|
|
91
90
|
const proveUltraHonk = options?.keccak
|
|
92
91
|
? this.api.acirProveUltraKeccakHonk.bind(this.api)
|
|
93
92
|
: options?.keccakZK
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
? this.api.acirProveUltraKeccakZKHonk.bind(this.api)
|
|
94
|
+
: options?.starknet
|
|
95
|
+
? this.api.acirProveUltraStarknetHonk.bind(this.api)
|
|
96
|
+
: this.api.acirProveUltraHonk.bind(this.api);
|
|
98
97
|
|
|
99
98
|
const proofWithPublicInputs = await proveUltraHonk(this.acirUncompressedBytecode, gunzip(compressedWitness));
|
|
100
99
|
|
|
@@ -102,10 +101,10 @@ export class UltraHonkBackend {
|
|
|
102
101
|
const writeVKUltraHonk = options?.keccak
|
|
103
102
|
? this.api.acirWriteVkUltraKeccakHonk.bind(this.api)
|
|
104
103
|
: options?.keccakZK
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
? this.api.acirWriteVkUltraKeccakZKHonk.bind(this.api)
|
|
105
|
+
: options?.starknet
|
|
106
|
+
? this.api.acirWriteVkUltraStarknetHonk.bind(this.api)
|
|
107
|
+
: this.api.acirWriteVkUltraHonk.bind(this.api);
|
|
109
108
|
|
|
110
109
|
const vk = await writeVKUltraHonk(this.acirUncompressedBytecode);
|
|
111
110
|
const vkAsFields = await this.api.acirVkAsFieldsUltraHonk(new RawBuffer(vk));
|
|
@@ -128,17 +127,17 @@ export class UltraHonkBackend {
|
|
|
128
127
|
const writeVkUltraHonk = options?.keccak
|
|
129
128
|
? this.api.acirWriteVkUltraKeccakHonk.bind(this.api)
|
|
130
129
|
: options?.keccakZK
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
130
|
+
? this.api.acirWriteVkUltraKeccakZKHonk.bind(this.api)
|
|
131
|
+
: options?.starknet
|
|
132
|
+
? this.api.acirWriteVkUltraStarknetHonk.bind(this.api)
|
|
133
|
+
: this.api.acirWriteVkUltraHonk.bind(this.api);
|
|
135
134
|
const verifyUltraHonk = options?.keccak
|
|
136
135
|
? this.api.acirVerifyUltraKeccakHonk.bind(this.api)
|
|
137
136
|
: options?.keccakZK
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
137
|
+
? this.api.acirVerifyUltraKeccakZKHonk.bind(this.api)
|
|
138
|
+
: options?.starknet
|
|
139
|
+
? this.api.acirVerifyUltraStarknetHonk.bind(this.api)
|
|
140
|
+
: this.api.acirVerifyUltraHonk.bind(this.api);
|
|
142
141
|
|
|
143
142
|
const vkBuf = await writeVkUltraHonk(this.acirUncompressedBytecode);
|
|
144
143
|
return await verifyUltraHonk(proof, new RawBuffer(vkBuf));
|
|
@@ -149,10 +148,10 @@ export class UltraHonkBackend {
|
|
|
149
148
|
return options?.keccak
|
|
150
149
|
? await this.api.acirWriteVkUltraKeccakHonk(this.acirUncompressedBytecode)
|
|
151
150
|
: options?.keccakZK
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
151
|
+
? await this.api.acirWriteVkUltraKeccakZKHonk(this.acirUncompressedBytecode)
|
|
152
|
+
: options?.starknet
|
|
153
|
+
? await this.api.acirWriteVkUltraStarknetHonk(this.acirUncompressedBytecode)
|
|
154
|
+
: await this.api.acirWriteVkUltraHonk(this.acirUncompressedBytecode);
|
|
156
155
|
}
|
|
157
156
|
|
|
158
157
|
/** @description Returns a solidity verifier */
|
|
@@ -243,7 +242,10 @@ export class AztecClientBackend {
|
|
|
243
242
|
|
|
244
243
|
protected api!: Barretenberg;
|
|
245
244
|
|
|
246
|
-
constructor(
|
|
245
|
+
constructor(
|
|
246
|
+
protected acirBuf: Uint8Array[],
|
|
247
|
+
protected options: BackendOptions = { threads: 1 },
|
|
248
|
+
) {}
|
|
247
249
|
|
|
248
250
|
/** @ignore */
|
|
249
251
|
private async instantiate(): Promise<void> {
|
|
@@ -40,7 +40,11 @@ export type CircuitOptions = {
|
|
|
40
40
|
export class Barretenberg extends BarretenbergApi {
|
|
41
41
|
private options: BackendOptions;
|
|
42
42
|
|
|
43
|
-
private constructor(
|
|
43
|
+
private constructor(
|
|
44
|
+
private worker: any,
|
|
45
|
+
wasm: BarretenbergWasmMainWorker,
|
|
46
|
+
options: BackendOptions,
|
|
47
|
+
) {
|
|
44
48
|
super(wasm);
|
|
45
49
|
this.options = options;
|
|
46
50
|
}
|
|
@@ -103,7 +107,7 @@ export class Barretenberg extends BarretenbergApi {
|
|
|
103
107
|
}
|
|
104
108
|
}
|
|
105
109
|
|
|
106
|
-
let
|
|
110
|
+
let barretenbergSyncSingletonPromise: Promise<BarretenbergSync>;
|
|
107
111
|
let barretenbergSyncSingleton: BarretenbergSync;
|
|
108
112
|
|
|
109
113
|
export class BarretenbergSync extends BarretenbergApiSync {
|
|
@@ -119,11 +123,11 @@ export class BarretenbergSync extends BarretenbergApiSync {
|
|
|
119
123
|
}
|
|
120
124
|
|
|
121
125
|
static async initSingleton(wasmPath?: string, logger: (msg: string) => void = createDebug('bb.js:bb_wasm_sync')) {
|
|
122
|
-
if (!
|
|
123
|
-
|
|
126
|
+
if (!barretenbergSyncSingletonPromise) {
|
|
127
|
+
barretenbergSyncSingletonPromise = BarretenbergSync.new(wasmPath, logger);
|
|
124
128
|
}
|
|
125
129
|
|
|
126
|
-
barretenbergSyncSingleton = await
|
|
130
|
+
barretenbergSyncSingleton = await barretenbergSyncSingletonPromise;
|
|
127
131
|
return barretenbergSyncSingleton;
|
|
128
132
|
}
|
|
129
133
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BackendOptions, Barretenberg } from './index.js';
|
|
2
2
|
import { RawBuffer } from '../types/raw_buffer.js';
|
|
3
|
-
import { flattenFieldsAsArray, ProofData, reconstructHonkProof
|
|
3
|
+
import { flattenFieldsAsArray, ProofData, reconstructHonkProof } from '../proof/index.js';
|
|
4
4
|
|
|
5
5
|
// TODO: once UP is removed we can just roll this into the bas `Barretenberg` class.
|
|
6
6
|
|
|
@@ -22,22 +22,10 @@ export class BarretenbergVerifier {
|
|
|
22
22
|
const api = await Barretenberg.new(this.options);
|
|
23
23
|
await api.initSRSForCircuitSize(0);
|
|
24
24
|
|
|
25
|
-
this.acirComposer = await api.acirNewAcirComposer(0);
|
|
26
25
|
this.api = api;
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
/** @description Verifies a proof */
|
|
31
|
-
async verifyUltraPlonkProof(proofData: ProofData, verificationKey: Uint8Array): Promise<boolean> {
|
|
32
|
-
await this.instantiate();
|
|
33
|
-
// The verifier can be used for a variety of ACIR programs so we should not assume that it
|
|
34
|
-
// is preloaded with the correct verification key.
|
|
35
|
-
await this.api.acirLoadVerificationKey(this.acirComposer, new RawBuffer(verificationKey));
|
|
36
|
-
|
|
37
|
-
const proof = reconstructUltraPlonkProof(proofData);
|
|
38
|
-
return await this.api.acirVerifyProof(this.acirComposer, proof);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
29
|
/** @description Verifies a proof */
|
|
42
30
|
async verifyUltraHonkProof(proofData: ProofData, verificationKey: Uint8Array): Promise<boolean> {
|
|
43
31
|
await this.instantiate();
|
|
@@ -183,18 +183,6 @@ export class BarretenbergApi {
|
|
|
183
183
|
return;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
async examplesSimpleCreateAndVerifyProof(): Promise<boolean> {
|
|
187
|
-
const inArgs = [].map(serializeBufferable);
|
|
188
|
-
const outTypes: OutputType[] = [BoolDeserializer()];
|
|
189
|
-
const result = await this.wasm.callWasmExport(
|
|
190
|
-
'examples_simple_create_and_verify_proof',
|
|
191
|
-
inArgs,
|
|
192
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
193
|
-
);
|
|
194
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
195
|
-
return out[0];
|
|
196
|
-
}
|
|
197
|
-
|
|
198
186
|
async testThreads(threads: number, iterations: number): Promise<number> {
|
|
199
187
|
const inArgs = [threads, iterations].map(serializeBufferable);
|
|
200
188
|
const outTypes: OutputType[] = [NumberDeserializer()];
|
|
@@ -235,58 +223,6 @@ export class BarretenbergApi {
|
|
|
235
223
|
return out as any;
|
|
236
224
|
}
|
|
237
225
|
|
|
238
|
-
async acirNewAcirComposer(sizeHint: number): Promise<Ptr> {
|
|
239
|
-
const inArgs = [sizeHint].map(serializeBufferable);
|
|
240
|
-
const outTypes: OutputType[] = [Ptr];
|
|
241
|
-
const result = await this.wasm.callWasmExport(
|
|
242
|
-
'acir_new_acir_composer',
|
|
243
|
-
inArgs,
|
|
244
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
245
|
-
);
|
|
246
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
247
|
-
return out[0];
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
async acirDeleteAcirComposer(acirComposerPtr: Ptr): Promise<void> {
|
|
251
|
-
const inArgs = [acirComposerPtr].map(serializeBufferable);
|
|
252
|
-
const outTypes: OutputType[] = [];
|
|
253
|
-
const result = await this.wasm.callWasmExport(
|
|
254
|
-
'acir_delete_acir_composer',
|
|
255
|
-
inArgs,
|
|
256
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
257
|
-
);
|
|
258
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
259
|
-
return;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
async acirInitProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, recursive: boolean): Promise<void> {
|
|
263
|
-
const inArgs = [acirComposerPtr, constraintSystemBuf, recursive].map(serializeBufferable);
|
|
264
|
-
const outTypes: OutputType[] = [];
|
|
265
|
-
const result = await this.wasm.callWasmExport(
|
|
266
|
-
'acir_init_proving_key',
|
|
267
|
-
inArgs,
|
|
268
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
269
|
-
);
|
|
270
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
async acirCreateProof(
|
|
275
|
-
acirComposerPtr: Ptr,
|
|
276
|
-
constraintSystemBuf: Uint8Array,
|
|
277
|
-
recursive: boolean,
|
|
278
|
-
witnessBuf: Uint8Array,
|
|
279
|
-
): Promise<Uint8Array> {
|
|
280
|
-
const inArgs = [acirComposerPtr, constraintSystemBuf, recursive, witnessBuf].map(serializeBufferable);
|
|
281
|
-
const outTypes: OutputType[] = [BufferDeserializer()];
|
|
282
|
-
const result = await this.wasm.callWasmExport(
|
|
283
|
-
'acir_create_proof',
|
|
284
|
-
inArgs,
|
|
285
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
286
|
-
);
|
|
287
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
288
|
-
return out[0];
|
|
289
|
-
}
|
|
290
226
|
|
|
291
227
|
async acirProveAndVerifyUltraHonk(constraintSystemBuf: Uint8Array, witnessBuf: Uint8Array): Promise<boolean> {
|
|
292
228
|
const inArgs = [constraintSystemBuf, witnessBuf].map(serializeBufferable);
|
|
@@ -811,18 +747,6 @@ export class BarretenbergApiSync {
|
|
|
811
747
|
return;
|
|
812
748
|
}
|
|
813
749
|
|
|
814
|
-
examplesSimpleCreateAndVerifyProof(): boolean {
|
|
815
|
-
const inArgs = [].map(serializeBufferable);
|
|
816
|
-
const outTypes: OutputType[] = [BoolDeserializer()];
|
|
817
|
-
const result = this.wasm.callWasmExport(
|
|
818
|
-
'examples_simple_create_and_verify_proof',
|
|
819
|
-
inArgs,
|
|
820
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
821
|
-
);
|
|
822
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
823
|
-
return out[0];
|
|
824
|
-
}
|
|
825
|
-
|
|
826
750
|
testThreads(threads: number, iterations: number): number {
|
|
827
751
|
const inArgs = [threads, iterations].map(serializeBufferable);
|
|
828
752
|
const outTypes: OutputType[] = [NumberDeserializer()];
|
|
@@ -859,58 +783,6 @@ export class BarretenbergApiSync {
|
|
|
859
783
|
return out as any;
|
|
860
784
|
}
|
|
861
785
|
|
|
862
|
-
acirNewAcirComposer(sizeHint: number): Ptr {
|
|
863
|
-
const inArgs = [sizeHint].map(serializeBufferable);
|
|
864
|
-
const outTypes: OutputType[] = [Ptr];
|
|
865
|
-
const result = this.wasm.callWasmExport(
|
|
866
|
-
'acir_new_acir_composer',
|
|
867
|
-
inArgs,
|
|
868
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
869
|
-
);
|
|
870
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
871
|
-
return out[0];
|
|
872
|
-
}
|
|
873
|
-
|
|
874
|
-
acirDeleteAcirComposer(acirComposerPtr: Ptr): void {
|
|
875
|
-
const inArgs = [acirComposerPtr].map(serializeBufferable);
|
|
876
|
-
const outTypes: OutputType[] = [];
|
|
877
|
-
const result = this.wasm.callWasmExport(
|
|
878
|
-
'acir_delete_acir_composer',
|
|
879
|
-
inArgs,
|
|
880
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
881
|
-
);
|
|
882
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
883
|
-
return;
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
acirInitProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, recursive: boolean): void {
|
|
887
|
-
const inArgs = [acirComposerPtr, constraintSystemBuf, recursive].map(serializeBufferable);
|
|
888
|
-
const outTypes: OutputType[] = [];
|
|
889
|
-
const result = this.wasm.callWasmExport(
|
|
890
|
-
'acir_init_proving_key',
|
|
891
|
-
inArgs,
|
|
892
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
893
|
-
);
|
|
894
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
895
|
-
return;
|
|
896
|
-
}
|
|
897
|
-
|
|
898
|
-
acirCreateProof(
|
|
899
|
-
acirComposerPtr: Ptr,
|
|
900
|
-
constraintSystemBuf: Uint8Array,
|
|
901
|
-
recursive: boolean,
|
|
902
|
-
witnessBuf: Uint8Array,
|
|
903
|
-
): Uint8Array {
|
|
904
|
-
const inArgs = [acirComposerPtr, constraintSystemBuf, recursive, witnessBuf].map(serializeBufferable);
|
|
905
|
-
const outTypes: OutputType[] = [BufferDeserializer()];
|
|
906
|
-
const result = this.wasm.callWasmExport(
|
|
907
|
-
'acir_create_proof',
|
|
908
|
-
inArgs,
|
|
909
|
-
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
910
|
-
);
|
|
911
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
912
|
-
return out[0];
|
|
913
|
-
}
|
|
914
786
|
|
|
915
787
|
acirProveAndVerifyUltraHonk(constraintSystemBuf: Uint8Array, witnessBuf: Uint8Array): boolean {
|
|
916
788
|
const inArgs = [constraintSystemBuf, witnessBuf].map(serializeBufferable);
|
package/src/bindgen/mappings.ts
CHANGED
|
@@ -13,7 +13,7 @@ const typeMap: { [key: string]: string } = {
|
|
|
13
13
|
'fq::vec_in_buf': 'Fq[]',
|
|
14
14
|
'fq::vec_out_buf': 'Fq[]',
|
|
15
15
|
'const uint8_t *': 'Uint8Array',
|
|
16
|
-
|
|
16
|
+
uint8_vec_vec_in_buf: 'Uint8Array[]',
|
|
17
17
|
'uint8_t **': 'Uint8Array',
|
|
18
18
|
in_str_buf: 'string',
|
|
19
19
|
out_str_buf: 'string',
|
|
@@ -46,8 +46,8 @@ export class BarretenbergApi {
|
|
|
46
46
|
outArgs.length === 0
|
|
47
47
|
? 'void'
|
|
48
48
|
: outArgs.length === 1
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
? `${mapType(outArgs[0].type)}`
|
|
50
|
+
: `[${outArgs.map(a => mapType(a.type)).join(', ')}]`;
|
|
51
51
|
|
|
52
52
|
output += `
|
|
53
53
|
async ${toCamelCase(functionName)}(${parameters}): Promise<${returnType}> {
|
|
@@ -93,8 +93,8 @@ export class BarretenbergApiSync {
|
|
|
93
93
|
outArgs.length === 0
|
|
94
94
|
? 'void'
|
|
95
95
|
: outArgs.length === 1
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
? `${mapType(outArgs[0].type)}`
|
|
97
|
+
: `[${outArgs.map(a => mapType(a.type)).join(', ')}]`;
|
|
98
98
|
|
|
99
99
|
output += `
|
|
100
100
|
${toCamelCase(functionName)}(${parameters}): ${returnType} {
|
package/src/crs/net_crs.ts
CHANGED
|
@@ -78,7 +78,7 @@ export class NetCrs {
|
|
|
78
78
|
const g1End = this.numPoints * 64 - 1;
|
|
79
79
|
return await retry(
|
|
80
80
|
() =>
|
|
81
|
-
fetch('https://aztec
|
|
81
|
+
fetch('https://crs.aztec.network/g1.dat', {
|
|
82
82
|
headers: {
|
|
83
83
|
Range: `bytes=0-${g1End}`,
|
|
84
84
|
},
|
|
@@ -94,7 +94,7 @@ export class NetCrs {
|
|
|
94
94
|
private async fetchG2Data(): Promise<Response> {
|
|
95
95
|
return await retry(
|
|
96
96
|
() =>
|
|
97
|
-
fetch('https://aztec
|
|
97
|
+
fetch('https://crs.aztec.network/g2.dat', {
|
|
98
98
|
cache: 'force-cache',
|
|
99
99
|
}),
|
|
100
100
|
makeBackoff([5, 5, 5]),
|
|
@@ -152,12 +152,11 @@ export class NetGrumpkinCrs {
|
|
|
152
152
|
return new Response(new Uint8Array([]));
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
const
|
|
156
|
-
const g1End = g1Start + (this.numPoints * 64 - 1);
|
|
155
|
+
const g1End = this.numPoints * 64 - 1;
|
|
157
156
|
|
|
158
|
-
return await fetch('https://aztec
|
|
157
|
+
return await fetch('https://crs.aztec.network/grumpkin_g1.dat', {
|
|
159
158
|
headers: {
|
|
160
|
-
Range: `bytes
|
|
159
|
+
Range: `bytes=0-${g1End}`,
|
|
161
160
|
},
|
|
162
161
|
cache: 'force-cache',
|
|
163
162
|
});
|
package/src/crs/node/index.ts
CHANGED
|
@@ -98,7 +98,7 @@ export class GrumpkinCrs {
|
|
|
98
98
|
async init(): Promise<void> {
|
|
99
99
|
mkdirSync(this.path, { recursive: true });
|
|
100
100
|
|
|
101
|
-
const g1FileSize = await stat(this.path + '/grumpkin_g1.dat')
|
|
101
|
+
const g1FileSize = await stat(this.path + '/grumpkin_g1.flat.dat')
|
|
102
102
|
.then(stats => stats.size)
|
|
103
103
|
.catch(() => 0);
|
|
104
104
|
|
|
@@ -111,7 +111,7 @@ export class GrumpkinCrs {
|
|
|
111
111
|
const crs = new NetGrumpkinCrs(this.numPoints);
|
|
112
112
|
const stream = await crs.streamG1Data();
|
|
113
113
|
|
|
114
|
-
await finished(Readable.fromWeb(stream as any).pipe(createWriteStream(this.path + '/grumpkin_g1.dat')));
|
|
114
|
+
await finished(Readable.fromWeb(stream as any).pipe(createWriteStream(this.path + '/grumpkin_g1.flat.dat')));
|
|
115
115
|
writeFileSync(this.path + '/grumpkin_size', String(crs.numPoints));
|
|
116
116
|
}
|
|
117
117
|
|
|
@@ -120,6 +120,6 @@ export class GrumpkinCrs {
|
|
|
120
120
|
* @returns The points data.
|
|
121
121
|
*/
|
|
122
122
|
getG1Data(): Uint8Array {
|
|
123
|
-
return readFileSync(this.path + '/grumpkin_g1.dat');
|
|
123
|
+
return readFileSync(this.path + '/grumpkin_g1.flat.dat');
|
|
124
124
|
}
|
|
125
125
|
}
|
package/src/index.html
CHANGED