@aztec/bb.js 0.86.0 → 0.87.0-nightly.20250521
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 +179 -345
- package/dest/browser/main.worker.js +116 -116
- package/dest/browser/thread.worker.js +116 -116
- package/dest/node/barretenberg/backend.d.ts +5 -40
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +28 -108
- package/dest/node/barretenberg/index.d.ts +1 -1
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +6 -6
- 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 +7 -11
- package/dest/node/barretenberg_api/index.d.ts.map +1 -1
- package/dest/node/barretenberg_api/index.js +46 -74
- 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/index.d.ts +1 -1
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +2 -2
- package/dest/node/main.d.ts +0 -8
- package/dest/node/main.d.ts.map +1 -1
- package/dest/node/main.js +38 -244
- package/dest/node/proof/index.d.ts +1 -2
- package/dest/node/proof/index.d.ts.map +1 -1
- package/dest/node/proof/index.js +2 -9
- 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 +5 -40
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +28 -109
- package/dest/node-cjs/barretenberg/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +6 -7
- 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 +7 -11
- package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_api/index.js +45 -73
- 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/index.d.ts +1 -1
- package/dest/node-cjs/index.d.ts.map +1 -1
- package/dest/node-cjs/index.js +2 -3
- 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 +39 -253
- package/dest/node-cjs/proof/index.d.ts +1 -2
- package/dest/node-cjs/proof/index.d.ts.map +1 -1
- package/dest/node-cjs/proof/index.js +3 -11
- 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 +41 -159
- package/src/barretenberg/index.ts +10 -6
- package/src/barretenberg/verifier.ts +1 -13
- package/src/barretenberg_api/index.ts +74 -130
- 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/index.ts +0 -1
- package/src/main.ts +44 -279
- package/src/proof/index.ts +1 -13
- package/src/serialize/buffer_reader.ts +4 -1
- package/src/types/fields.ts +2 -2
- package/src/types/point.ts +4 -1
- package/dest/browser/733.655674bbbb79bdf168c4.js +0 -7
- 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 +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-nightly.20250521",
|
|
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,9 +6,8 @@ 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';
|
|
13
12
|
import { Encoder } from 'msgpackr/pack';
|
|
14
13
|
|
|
@@ -25,7 +24,6 @@ function parseBigEndianU32Array(buffer: Uint8Array): number[] {
|
|
|
25
24
|
|
|
26
25
|
let offset = 0;
|
|
27
26
|
const count = buffer.byteLength >>> 2; // default is entire buffer length / 4
|
|
28
|
-
console.log(buffer);
|
|
29
27
|
|
|
30
28
|
const out: number[] = new Array(count);
|
|
31
29
|
for (let i = 0; i < count; i++) {
|
|
@@ -36,144 +34,6 @@ function parseBigEndianU32Array(buffer: Uint8Array): number[] {
|
|
|
36
34
|
return out;
|
|
37
35
|
}
|
|
38
36
|
|
|
39
|
-
export class UltraPlonkBackend {
|
|
40
|
-
// These type assertions are used so that we don't
|
|
41
|
-
// have to initialize `api` and `acirComposer` in the constructor.
|
|
42
|
-
// These are initialized asynchronously in the `init` function,
|
|
43
|
-
// constructors cannot be asynchronous which is why we do this.
|
|
44
|
-
|
|
45
|
-
protected api!: Barretenberg;
|
|
46
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
-
protected acirComposer: any;
|
|
48
|
-
|
|
49
|
-
protected acirUncompressedBytecode: Uint8Array;
|
|
50
|
-
|
|
51
|
-
constructor(
|
|
52
|
-
acirBytecode: string,
|
|
53
|
-
protected backendOptions: BackendOptions = { threads: 1 },
|
|
54
|
-
protected circuitOptions: CircuitOptions = { recursive: false },
|
|
55
|
-
) {
|
|
56
|
-
this.acirUncompressedBytecode = acirToUint8Array(acirBytecode);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/** @ignore */
|
|
60
|
-
async instantiate(): Promise<void> {
|
|
61
|
-
if (!this.api) {
|
|
62
|
-
const api = await Barretenberg.new(this.backendOptions);
|
|
63
|
-
|
|
64
|
-
const honkRecursion = false;
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
66
|
-
const [_total, subgroupSize] = await api.acirGetCircuitSizes(
|
|
67
|
-
this.acirUncompressedBytecode,
|
|
68
|
-
this.circuitOptions.recursive,
|
|
69
|
-
honkRecursion,
|
|
70
|
-
);
|
|
71
|
-
|
|
72
|
-
await api.initSRSForCircuitSize(subgroupSize);
|
|
73
|
-
this.acirComposer = await api.acirNewAcirComposer(subgroupSize);
|
|
74
|
-
await api.acirInitProvingKey(this.acirComposer, this.acirUncompressedBytecode, this.circuitOptions.recursive);
|
|
75
|
-
this.api = api;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** @description Generates a proof */
|
|
80
|
-
async generateProof(compressedWitness: Uint8Array): Promise<ProofData> {
|
|
81
|
-
await this.instantiate();
|
|
82
|
-
const proofWithPublicInputs = await this.api.acirCreateProof(
|
|
83
|
-
this.acirComposer,
|
|
84
|
-
this.acirUncompressedBytecode,
|
|
85
|
-
this.circuitOptions.recursive,
|
|
86
|
-
gunzip(compressedWitness),
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
// This is the number of bytes in a UltraPlonk proof
|
|
90
|
-
// minus the public inputs.
|
|
91
|
-
const numBytesInProofWithoutPublicInputs = 2144;
|
|
92
|
-
|
|
93
|
-
const splitIndex = proofWithPublicInputs.length - numBytesInProofWithoutPublicInputs;
|
|
94
|
-
|
|
95
|
-
const publicInputsConcatenated = proofWithPublicInputs.slice(0, splitIndex);
|
|
96
|
-
const proof = proofWithPublicInputs.slice(splitIndex);
|
|
97
|
-
const publicInputs = deflattenFields(publicInputsConcatenated);
|
|
98
|
-
|
|
99
|
-
return { proof, publicInputs };
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Generates artifacts that will be passed to a circuit that will verify this proof.
|
|
104
|
-
*
|
|
105
|
-
* Instead of passing the proof and verification key as a byte array, we pass them
|
|
106
|
-
* as fields which makes it cheaper to verify in a circuit.
|
|
107
|
-
*
|
|
108
|
-
* The proof that is passed here will have been created by passing the `recursive`
|
|
109
|
-
* parameter to a backend.
|
|
110
|
-
*
|
|
111
|
-
* The number of public inputs denotes how many public inputs are in the inner proof.
|
|
112
|
-
*
|
|
113
|
-
* @example
|
|
114
|
-
* ```typescript
|
|
115
|
-
* const artifacts = await backend.generateRecursiveProofArtifacts(proof, numOfPublicInputs);
|
|
116
|
-
* ```
|
|
117
|
-
*/
|
|
118
|
-
async generateRecursiveProofArtifacts(
|
|
119
|
-
proofData: ProofData,
|
|
120
|
-
numOfPublicInputs = 0,
|
|
121
|
-
): Promise<{
|
|
122
|
-
proofAsFields: string[];
|
|
123
|
-
vkAsFields: string[];
|
|
124
|
-
vkHash: string;
|
|
125
|
-
}> {
|
|
126
|
-
await this.instantiate();
|
|
127
|
-
|
|
128
|
-
const proof = reconstructUltraPlonkProof(proofData);
|
|
129
|
-
const proofAsFields = (
|
|
130
|
-
await this.api.acirSerializeProofIntoFields(this.acirComposer, proof, numOfPublicInputs)
|
|
131
|
-
).slice(numOfPublicInputs);
|
|
132
|
-
|
|
133
|
-
// TODO: perhaps we should put this in the init function. Need to benchmark
|
|
134
|
-
// TODO how long it takes.
|
|
135
|
-
await this.api.acirInitVerificationKey(this.acirComposer);
|
|
136
|
-
|
|
137
|
-
// Note: If you don't init verification key, `acirSerializeVerificationKeyIntoFields`` will just hang on serialization
|
|
138
|
-
const vk = await this.api.acirSerializeVerificationKeyIntoFields(this.acirComposer);
|
|
139
|
-
|
|
140
|
-
return {
|
|
141
|
-
proofAsFields: proofAsFields.map(p => p.toString()),
|
|
142
|
-
vkAsFields: vk[0].map(vk => vk.toString()),
|
|
143
|
-
vkHash: vk[1].toString(),
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/** @description Verifies a proof */
|
|
148
|
-
async verifyProof(proofData: ProofData): Promise<boolean> {
|
|
149
|
-
await this.instantiate();
|
|
150
|
-
await this.api.acirInitVerificationKey(this.acirComposer);
|
|
151
|
-
const proof = reconstructUltraPlonkProof(proofData);
|
|
152
|
-
return await this.api.acirVerifyProof(this.acirComposer, proof);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/** @description Returns the verification key */
|
|
156
|
-
async getVerificationKey(): Promise<Uint8Array> {
|
|
157
|
-
await this.instantiate();
|
|
158
|
-
await this.api.acirInitVerificationKey(this.acirComposer);
|
|
159
|
-
return await this.api.acirGetVerificationKey(this.acirComposer);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/** @description Returns a solidity verifier */
|
|
163
|
-
async getSolidityVerifier(): Promise<string> {
|
|
164
|
-
await this.instantiate();
|
|
165
|
-
await this.api.acirInitVerificationKey(this.acirComposer);
|
|
166
|
-
return await this.api.acirGetSolidityVerifier(this.acirComposer);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
async destroy(): Promise<void> {
|
|
170
|
-
if (!this.api) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
await this.api.destroy();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
37
|
/**
|
|
178
38
|
* Options for the UltraHonkBackend.
|
|
179
39
|
*/
|
|
@@ -183,6 +43,11 @@ export type UltraHonkBackendOptions = {
|
|
|
183
43
|
* Use this when you want to verify the created proof on an EVM chain.
|
|
184
44
|
*/
|
|
185
45
|
keccak?: boolean;
|
|
46
|
+
/** Selecting this option will use the keccak hash function instead of poseidon
|
|
47
|
+
* when generating challenges in the proof.
|
|
48
|
+
* Use this when you want to verify the created proof on an EVM chain.
|
|
49
|
+
*/
|
|
50
|
+
keccakZK?: boolean;
|
|
186
51
|
/**S electing this option will use the poseidon/stark252 hash function instead of poseidon
|
|
187
52
|
* when generating challenges in the proof.
|
|
188
53
|
* Use this when you want to verify the created proof on an Starknet chain with Garaga.
|
|
@@ -224,25 +89,29 @@ export class UltraHonkBackend {
|
|
|
224
89
|
|
|
225
90
|
const proveUltraHonk = options?.keccak
|
|
226
91
|
? this.api.acirProveUltraKeccakHonk.bind(this.api)
|
|
227
|
-
: options?.
|
|
228
|
-
? this.api.
|
|
229
|
-
:
|
|
92
|
+
: options?.keccakZK
|
|
93
|
+
? this.api.acirProveUltraKeccakZKHonk.bind(this.api)
|
|
94
|
+
: options?.starknet
|
|
95
|
+
? this.api.acirProveUltraStarknetHonk.bind(this.api)
|
|
96
|
+
: this.api.acirProveUltraHonk.bind(this.api);
|
|
230
97
|
|
|
231
98
|
const proofWithPublicInputs = await proveUltraHonk(this.acirUncompressedBytecode, gunzip(compressedWitness));
|
|
232
99
|
|
|
233
100
|
// Write VK to get the number of public inputs
|
|
234
101
|
const writeVKUltraHonk = options?.keccak
|
|
235
102
|
? this.api.acirWriteVkUltraKeccakHonk.bind(this.api)
|
|
236
|
-
: options?.
|
|
237
|
-
? this.api.
|
|
238
|
-
:
|
|
103
|
+
: options?.keccakZK
|
|
104
|
+
? this.api.acirWriteVkUltraKeccakZKHonk.bind(this.api)
|
|
105
|
+
: options?.starknet
|
|
106
|
+
? this.api.acirWriteVkUltraStarknetHonk.bind(this.api)
|
|
107
|
+
: this.api.acirWriteVkUltraHonk.bind(this.api);
|
|
239
108
|
|
|
240
109
|
const vk = await writeVKUltraHonk(this.acirUncompressedBytecode);
|
|
241
110
|
const vkAsFields = await this.api.acirVkAsFieldsUltraHonk(new RawBuffer(vk));
|
|
242
111
|
|
|
243
112
|
// Item at index 1 in VK is the number of public inputs
|
|
244
113
|
const publicInputsSizeIndex = 1; // index into VK for numPublicInputs
|
|
245
|
-
const numPublicInputs = Number(vkAsFields[publicInputsSizeIndex].toString()) -
|
|
114
|
+
const numPublicInputs = Number(vkAsFields[publicInputsSizeIndex].toString()) - PAIRING_POINTS_SIZE;
|
|
246
115
|
|
|
247
116
|
const { proof, publicInputs: publicInputsBytes } = splitHonkProof(proofWithPublicInputs, numPublicInputs);
|
|
248
117
|
const publicInputs = deflattenFields(publicInputsBytes);
|
|
@@ -257,14 +126,18 @@ export class UltraHonkBackend {
|
|
|
257
126
|
|
|
258
127
|
const writeVkUltraHonk = options?.keccak
|
|
259
128
|
? this.api.acirWriteVkUltraKeccakHonk.bind(this.api)
|
|
260
|
-
: options?.
|
|
261
|
-
? this.api.
|
|
262
|
-
:
|
|
129
|
+
: options?.keccakZK
|
|
130
|
+
? this.api.acirWriteVkUltraKeccakZKHonk.bind(this.api)
|
|
131
|
+
: options?.starknet
|
|
132
|
+
? this.api.acirWriteVkUltraStarknetHonk.bind(this.api)
|
|
133
|
+
: this.api.acirWriteVkUltraHonk.bind(this.api);
|
|
263
134
|
const verifyUltraHonk = options?.keccak
|
|
264
135
|
? this.api.acirVerifyUltraKeccakHonk.bind(this.api)
|
|
265
|
-
: options?.
|
|
266
|
-
? this.api.
|
|
267
|
-
:
|
|
136
|
+
: options?.keccakZK
|
|
137
|
+
? this.api.acirVerifyUltraKeccakZKHonk.bind(this.api)
|
|
138
|
+
: options?.starknet
|
|
139
|
+
? this.api.acirVerifyUltraStarknetHonk.bind(this.api)
|
|
140
|
+
: this.api.acirVerifyUltraHonk.bind(this.api);
|
|
268
141
|
|
|
269
142
|
const vkBuf = await writeVkUltraHonk(this.acirUncompressedBytecode);
|
|
270
143
|
return await verifyUltraHonk(proof, new RawBuffer(vkBuf));
|
|
@@ -274,9 +147,11 @@ export class UltraHonkBackend {
|
|
|
274
147
|
await this.instantiate();
|
|
275
148
|
return options?.keccak
|
|
276
149
|
? await this.api.acirWriteVkUltraKeccakHonk(this.acirUncompressedBytecode)
|
|
277
|
-
: options?.
|
|
278
|
-
? await this.api.
|
|
279
|
-
:
|
|
150
|
+
: options?.keccakZK
|
|
151
|
+
? await this.api.acirWriteVkUltraKeccakZKHonk(this.acirUncompressedBytecode)
|
|
152
|
+
: options?.starknet
|
|
153
|
+
? await this.api.acirWriteVkUltraStarknetHonk(this.acirUncompressedBytecode)
|
|
154
|
+
: await this.api.acirWriteVkUltraHonk(this.acirUncompressedBytecode);
|
|
280
155
|
}
|
|
281
156
|
|
|
282
157
|
/** @description Returns a solidity verifier */
|
|
@@ -336,7 +211,11 @@ interface AztecClientExecutionStep {
|
|
|
336
211
|
vk: Uint8Array;
|
|
337
212
|
}
|
|
338
213
|
|
|
339
|
-
function serializeAztecClientExecutionSteps(
|
|
214
|
+
function serializeAztecClientExecutionSteps(
|
|
215
|
+
acirBuf: Uint8Array[],
|
|
216
|
+
witnessBuf: Uint8Array[],
|
|
217
|
+
vksBuf: Uint8Array[],
|
|
218
|
+
): Uint8Array {
|
|
340
219
|
const steps: AztecClientExecutionStep[] = [];
|
|
341
220
|
for (let i = 0; i < acirBuf.length; i++) {
|
|
342
221
|
const bytecode = acirBuf[i];
|
|
@@ -363,7 +242,10 @@ export class AztecClientBackend {
|
|
|
363
242
|
|
|
364
243
|
protected api!: Barretenberg;
|
|
365
244
|
|
|
366
|
-
constructor(
|
|
245
|
+
constructor(
|
|
246
|
+
protected acirBuf: Uint8Array[],
|
|
247
|
+
protected options: BackendOptions = { threads: 1 },
|
|
248
|
+
) {}
|
|
367
249
|
|
|
368
250
|
/** @ignore */
|
|
369
251
|
private async instantiate(): Promise<void> {
|
|
@@ -9,7 +9,7 @@ import { RawBuffer } from '../types/raw_buffer.js';
|
|
|
9
9
|
import { fetchModuleAndThreads } from '../barretenberg_wasm/index.js';
|
|
10
10
|
|
|
11
11
|
export { BarretenbergVerifier } from './verifier.js';
|
|
12
|
-
export {
|
|
12
|
+
export { UltraHonkBackend, AztecClientBackend } from './backend.js';
|
|
13
13
|
|
|
14
14
|
export type BackendOptions = {
|
|
15
15
|
/** @description Number of threads to run the backend worker on */
|
|
@@ -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();
|