@aztec/bb.js 0.0.0-devnet → 0.0.0-test.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.
Files changed (189) hide show
  1. package/README.md +10 -2
  2. package/dest/browser/522.6386c00ebfb22619e11b.js +3 -0
  3. package/dest/browser/barretenberg/backend.d.ts +7 -2
  4. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  5. package/dest/browser/barretenberg/index.d.ts +6 -2
  6. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  7. package/dest/browser/barretenberg-threads.js +32 -0
  8. package/dest/browser/barretenberg.js +32 -0
  9. package/dest/browser/barretenberg_api/index.d.ts +5 -2
  10. package/dest/browser/barretenberg_api/index.d.ts.map +1 -1
  11. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  12. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  13. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  14. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +1 -1
  15. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  16. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +3 -0
  17. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts.map +1 -0
  18. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +3 -0
  19. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts.map +1 -0
  20. package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  21. package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -1
  22. package/dest/browser/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  23. package/dest/browser/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -1
  24. package/dest/browser/barretenberg_wasm/index.d.ts +2 -2
  25. package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -1
  26. package/dest/browser/bigint-array/index.d.ts +17 -2
  27. package/dest/browser/bigint-array/index.d.ts.map +1 -1
  28. package/dest/browser/crs/net_crs.d.ts.map +1 -1
  29. package/dest/browser/crs/node/index.d.ts +6 -4
  30. package/dest/browser/crs/node/index.d.ts.map +1 -1
  31. package/dest/browser/index.d.ts.map +1 -1
  32. package/dest/browser/index.js +10583 -16082
  33. package/dest/browser/index.js.LICENSE.txt +16 -0
  34. package/dest/browser/main.worker.worker.js.LICENSE.txt +5 -0
  35. package/dest/browser/proof/index.d.ts +10 -0
  36. package/dest/browser/proof/index.d.ts.map +1 -1
  37. package/dest/browser/retry/index.d.ts +26 -0
  38. package/dest/browser/retry/index.d.ts.map +1 -0
  39. package/dest/browser/thread.worker.worker.js.LICENSE.txt +5 -0
  40. package/dest/browser/thread.worker.worker.worker.js.LICENSE.txt +5 -0
  41. package/dest/browser/types/fields.d.ts +6 -5
  42. package/dest/browser/types/fields.d.ts.map +1 -1
  43. package/dest/node/barretenberg/__snapshots__/pedersen.test.js.snap +156 -0
  44. package/dest/node/barretenberg/__snapshots__/poseidon.test.js.snap +40 -0
  45. package/dest/node/barretenberg/backend.d.ts +7 -2
  46. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  47. package/dest/node/barretenberg/backend.js +54 -4
  48. package/dest/node/barretenberg/blake2s.test.js +2 -2
  49. package/dest/node/barretenberg/index.d.ts +6 -2
  50. package/dest/node/barretenberg/index.d.ts.map +1 -1
  51. package/dest/node/barretenberg/index.js +15 -20
  52. package/dest/node/barretenberg/pedersen.test.js +2 -2
  53. package/dest/node/barretenberg/poseidon.test.js +2 -2
  54. package/dest/node/barretenberg_api/index.d.ts +5 -2
  55. package/dest/node/barretenberg_api/index.d.ts.map +1 -1
  56. package/dest/node/barretenberg_api/index.js +32 -2
  57. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  58. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  59. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
  60. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  61. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  62. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +16 -11
  63. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +1 -1
  64. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  65. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +7 -9
  66. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +3 -0
  67. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts.map +1 -0
  68. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +3 -0
  69. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +3 -0
  70. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts.map +1 -0
  71. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.js +3 -0
  72. package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  73. package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -1
  74. package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +31 -8
  75. package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  76. package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -1
  77. package/dest/node/barretenberg_wasm/fetch_code/node/index.js +3 -3
  78. package/dest/node/barretenberg_wasm/index.d.ts +2 -2
  79. package/dest/node/barretenberg_wasm/index.d.ts.map +1 -1
  80. package/dest/node/barretenberg_wasm/index.js +12 -10
  81. package/dest/node/barretenberg_wasm/index.test.js +3 -3
  82. package/dest/node/bigint-array/index.d.ts +17 -2
  83. package/dest/node/bigint-array/index.d.ts.map +1 -1
  84. package/dest/node/bigint-array/index.js +34 -18
  85. package/dest/node/crs/net_crs.d.ts.map +1 -1
  86. package/dest/node/crs/net_crs.js +6 -5
  87. package/dest/node/crs/node/index.d.ts +6 -4
  88. package/dest/node/crs/node/index.d.ts.map +1 -1
  89. package/dest/node/crs/node/index.js +16 -13
  90. package/dest/node/examples/simple.test.js +2 -2
  91. package/dest/node/index.d.ts.map +1 -1
  92. package/dest/node/index.js +1 -1
  93. package/dest/node/main.d.ts.map +1 -1
  94. package/dest/node/main.js +57 -65
  95. package/dest/node/proof/index.d.ts +10 -0
  96. package/dest/node/proof/index.d.ts.map +1 -1
  97. package/dest/node/proof/index.js +1 -1
  98. package/dest/node/retry/index.d.ts +26 -0
  99. package/dest/node/retry/index.d.ts.map +1 -0
  100. package/dest/node/retry/index.js +50 -0
  101. package/dest/node/types/fields.d.ts +6 -5
  102. package/dest/node/types/fields.d.ts.map +1 -1
  103. package/dest/node/types/fields.js +15 -10
  104. package/dest/node-cjs/barretenberg/backend.d.ts +7 -2
  105. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  106. package/dest/node-cjs/barretenberg/backend.js +56 -5
  107. package/dest/node-cjs/barretenberg/blake2s.test.js +2 -2
  108. package/dest/node-cjs/barretenberg/index.d.ts +6 -2
  109. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  110. package/dest/node-cjs/barretenberg/index.js +15 -19
  111. package/dest/node-cjs/barretenberg/pedersen.test.js +2 -2
  112. package/dest/node-cjs/barretenberg/poseidon.test.js +2 -2
  113. package/dest/node-cjs/barretenberg_api/index.d.ts +5 -2
  114. package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -1
  115. package/dest/node-cjs/barretenberg_api/index.js +32 -2
  116. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  117. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  118. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
  119. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  120. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  121. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +16 -11
  122. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +1 -1
  123. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  124. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +7 -9
  125. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +3 -0
  126. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts.map +1 -0
  127. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +6 -0
  128. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +3 -0
  129. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts.map +1 -0
  130. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.js +6 -0
  131. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  132. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -1
  133. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +31 -8
  134. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  135. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -1
  136. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +3 -3
  137. package/dest/node-cjs/barretenberg_wasm/index.d.ts +2 -2
  138. package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -1
  139. package/dest/node-cjs/barretenberg_wasm/index.js +12 -10
  140. package/dest/node-cjs/barretenberg_wasm/index.test.js +3 -3
  141. package/dest/node-cjs/bigint-array/index.d.ts +17 -2
  142. package/dest/node-cjs/bigint-array/index.d.ts.map +1 -1
  143. package/dest/node-cjs/bigint-array/index.js +39 -21
  144. package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
  145. package/dest/node-cjs/crs/net_crs.js +6 -5
  146. package/dest/node-cjs/crs/node/index.d.ts +6 -4
  147. package/dest/node-cjs/crs/node/index.d.ts.map +1 -1
  148. package/dest/node-cjs/crs/node/index.js +16 -13
  149. package/dest/node-cjs/examples/simple.test.js +2 -2
  150. package/dest/node-cjs/index.d.ts.map +1 -1
  151. package/dest/node-cjs/index.js +1 -1
  152. package/dest/node-cjs/main.d.ts.map +1 -1
  153. package/dest/node-cjs/main.js +57 -65
  154. package/dest/node-cjs/proof/index.d.ts +10 -0
  155. package/dest/node-cjs/proof/index.d.ts.map +1 -1
  156. package/dest/node-cjs/proof/index.js +1 -1
  157. package/dest/node-cjs/retry/index.d.ts +26 -0
  158. package/dest/node-cjs/retry/index.d.ts.map +1 -0
  159. package/dest/node-cjs/retry/index.js +56 -0
  160. package/dest/node-cjs/types/fields.d.ts +6 -5
  161. package/dest/node-cjs/types/fields.d.ts.map +1 -1
  162. package/dest/node-cjs/types/fields.js +14 -9
  163. package/package.json +5 -5
  164. package/src/barretenberg/backend.ts +79 -3
  165. package/src/barretenberg/blake2s.test.ts +1 -1
  166. package/src/barretenberg/index.ts +27 -21
  167. package/src/barretenberg/pedersen.test.ts +1 -1
  168. package/src/barretenberg/poseidon.test.ts +1 -1
  169. package/src/barretenberg_api/index.ts +49 -2
  170. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +4 -6
  171. package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +14 -10
  172. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +7 -10
  173. package/src/barretenberg_wasm/fetch_code/browser/barretenberg-threads.ts +3 -0
  174. package/src/barretenberg_wasm/fetch_code/browser/barretenberg.ts +3 -0
  175. package/src/barretenberg_wasm/fetch_code/browser/index.ts +28 -7
  176. package/src/barretenberg_wasm/fetch_code/node/index.ts +2 -2
  177. package/src/barretenberg_wasm/index.test.ts +2 -2
  178. package/src/barretenberg_wasm/index.ts +22 -11
  179. package/src/bigint-array/index.ts +39 -17
  180. package/src/crs/net_crs.ts +18 -9
  181. package/src/crs/node/index.ts +31 -15
  182. package/src/examples/simple.test.ts +1 -1
  183. package/src/index.ts +1 -0
  184. package/src/main.ts +61 -70
  185. package/src/proof/index.ts +11 -0
  186. package/src/retry/index.ts +50 -0
  187. package/src/types/fields.ts +24 -13
  188. package/dest/browser/522.index.js +0 -10
  189. /package/src/barretenberg_wasm/fetch_code/{browser/wasm-module.d.ts → wasm-module.d.ts} +0 -0
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Generates a backoff sequence for retrying operations with an increasing delay.
3
+ * The backoff sequence follows this pattern: 1, 1, 1, 2, 4, 8, 16, 32, 64, ...
4
+ * This generator can be used in combination with the `retry` function to perform
5
+ * retries with exponential backoff and capped at 64 seconds between attempts.
6
+ *
7
+ * @returns A generator that yields the next backoff value in seconds as an integer.
8
+ */
9
+ export declare function backoffGenerator(): Generator<number, void, unknown>;
10
+ /**
11
+ * Generates a backoff sequence based on the array of retry intervals to use with the `retry` function.
12
+ * @param retries - Intervals to retry (in seconds).
13
+ * @returns A generator sequence.
14
+ */
15
+ export declare function makeBackoff(retries: number[]): Generator<number, void, unknown>;
16
+ /**
17
+ * Retry a given asynchronous function with a specific backoff strategy, until it succeeds or backoff generator ends.
18
+ * It logs the error and retry interval in case an error is caught. The function can be named for better log output.
19
+ *
20
+ * @param fn - The asynchronous function to be retried.
21
+ * @param backoff - The optional backoff generator providing the intervals in seconds between retries. Defaults to a predefined series.
22
+ * @returns A Promise that resolves with the successful result of the provided function, or rejects if backoff generator ends.
23
+ * @throws If `NoRetryError` is thrown by the `fn`, it is rethrown.
24
+ */
25
+ export declare function retry<Result>(fn: () => Promise<Result>, backoff?: Generator<number, void, unknown>): Promise<Result>;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/retry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAiB,gBAAgB,qCAMhC;AAED;;;;GAIG;AACH,wBAAiB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,oCAI7C;AAED;;;;;;;;GAQG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,mCAAqB,mBAa1F"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retry = exports.makeBackoff = exports.backoffGenerator = void 0;
4
+ /**
5
+ * Generates a backoff sequence for retrying operations with an increasing delay.
6
+ * The backoff sequence follows this pattern: 1, 1, 1, 2, 4, 8, 16, 32, 64, ...
7
+ * This generator can be used in combination with the `retry` function to perform
8
+ * retries with exponential backoff and capped at 64 seconds between attempts.
9
+ *
10
+ * @returns A generator that yields the next backoff value in seconds as an integer.
11
+ */
12
+ function* backoffGenerator() {
13
+ const v = [1, 1, 1, 2, 4, 8, 16, 32, 64];
14
+ let i = 0;
15
+ while (true) {
16
+ yield v[Math.min(i++, v.length - 1)];
17
+ }
18
+ }
19
+ exports.backoffGenerator = backoffGenerator;
20
+ /**
21
+ * Generates a backoff sequence based on the array of retry intervals to use with the `retry` function.
22
+ * @param retries - Intervals to retry (in seconds).
23
+ * @returns A generator sequence.
24
+ */
25
+ function* makeBackoff(retries) {
26
+ for (const retry of retries) {
27
+ yield retry;
28
+ }
29
+ }
30
+ exports.makeBackoff = makeBackoff;
31
+ /**
32
+ * Retry a given asynchronous function with a specific backoff strategy, until it succeeds or backoff generator ends.
33
+ * It logs the error and retry interval in case an error is caught. The function can be named for better log output.
34
+ *
35
+ * @param fn - The asynchronous function to be retried.
36
+ * @param backoff - The optional backoff generator providing the intervals in seconds between retries. Defaults to a predefined series.
37
+ * @returns A Promise that resolves with the successful result of the provided function, or rejects if backoff generator ends.
38
+ * @throws If `NoRetryError` is thrown by the `fn`, it is rethrown.
39
+ */
40
+ async function retry(fn, backoff = backoffGenerator()) {
41
+ while (true) {
42
+ try {
43
+ return await fn();
44
+ }
45
+ catch (err) {
46
+ const s = backoff.next().value;
47
+ if (s === undefined) {
48
+ throw err;
49
+ }
50
+ await new Promise(resolve => setTimeout(resolve, s * 1000));
51
+ continue;
52
+ }
53
+ }
54
+ }
55
+ exports.retry = retry;
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmV0cnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILFFBQWUsQ0FBQyxDQUFDLGdCQUFnQjtJQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNaLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7QUFDSCxDQUFDO0FBTkQsNENBTUM7QUFFRDs7OztHQUlHO0FBQ0gsUUFBZSxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQWlCO0lBQzVDLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUpELGtDQUlDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsS0FBSyxDQUFTLEVBQXlCLEVBQUUsT0FBTyxHQUFHLGdCQUFnQixFQUFFO0lBQ3pGLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDcEIsQ0FBQztRQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxHQUFHLENBQUM7WUFDWixDQUFDO1lBQ0QsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDNUQsU0FBUztRQUNYLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQWJELHNCQWFDIn0=
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import { BufferReader } from '../serialize/index.js';
2
3
  /**
3
4
  * Fr field class.
@@ -10,9 +11,9 @@ export declare class Fr {
10
11
  static MAX_VALUE: bigint;
11
12
  static SIZE_IN_BYTES: number;
12
13
  value: Uint8Array;
13
- constructor(value: Uint8Array | bigint);
14
+ constructor(value: Uint8Array | Buffer | bigint);
14
15
  static random(): Fr;
15
- static fromBuffer(buffer: Uint8Array | BufferReader): Fr;
16
+ static fromBuffer(buffer: Uint8Array | Buffer | BufferReader): Fr;
16
17
  static fromBufferReduce(buffer: Uint8Array | BufferReader): Fr;
17
18
  static fromString(str: string): Fr;
18
19
  toBuffer(): Uint8Array;
@@ -32,10 +33,10 @@ export declare class Fq {
32
33
  static SIZE_IN_BYTES: number;
33
34
  constructor(value: bigint);
34
35
  static random(): Fq;
35
- static fromBuffer(buffer: Uint8Array | BufferReader): Fq;
36
- static fromBufferReduce(buffer: Uint8Array | BufferReader): Fq;
36
+ static fromBuffer(buffer: Uint8Array | Buffer | BufferReader): Fq;
37
+ static fromBufferReduce(buffer: Uint8Array | Buffer | BufferReader): Fq;
37
38
  static fromString(str: string): Fq;
38
- toBuffer(): Uint8Array;
39
+ toBuffer(): Buffer;
39
40
  toString(): string;
40
41
  equals(rhs: Fq): boolean;
41
42
  isZero(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/types/fields.ts"],"names":[],"mappings":"AAEA,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;IAWtC,MAAM,CAAC,MAAM;IAKb,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY;IAKnD,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,YAAY;IAKnD,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"}
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"}
@@ -14,14 +14,19 @@ const index_js_3 = require("../serialize/index.js");
14
14
  class Fr {
15
15
  constructor(value) {
16
16
  // We convert buffer value to bigint to be able to check it fits within modulus
17
- const valueBigInt = typeof value === 'bigint' ? value : (0, index_js_2.toBigIntBE)(value);
17
+ const valueBigInt = typeof value === 'bigint'
18
+ ? value
19
+ : value instanceof Buffer
20
+ ? (0, index_js_2.buffer32BytesToBigIntBE)(value)
21
+ : (0, index_js_2.uint8ArrayToBigIntBE)(value);
18
22
  if (valueBigInt > _a.MAX_VALUE) {
19
23
  throw new Error(`Value 0x${valueBigInt.toString(16)} is greater or equal to field modulus.`);
20
24
  }
21
- this.value = typeof value === 'bigint' ? (0, index_js_2.toBufferBE)(value) : value;
25
+ this.value =
26
+ typeof value === 'bigint' ? (0, index_js_2.bigIntToUint8ArrayBE)(value) : value instanceof Buffer ? new Uint8Array(value) : value;
22
27
  }
23
28
  static random() {
24
- const r = (0, index_js_2.toBigIntBE)((0, index_js_1.randomBytes)(64)) % _a.MODULUS;
29
+ const r = (0, index_js_2.uint8ArrayToBigIntBE)((0, index_js_1.randomBytes)(64)) % _a.MODULUS;
25
30
  return new this(r);
26
31
  }
27
32
  static fromBuffer(buffer) {
@@ -30,7 +35,7 @@ class Fr {
30
35
  }
31
36
  static fromBufferReduce(buffer) {
32
37
  const reader = index_js_3.BufferReader.asReader(buffer);
33
- return new this((0, index_js_2.toBigIntBE)(reader.readBytes(this.SIZE_IN_BYTES)) % _a.MODULUS);
38
+ return new this((0, index_js_2.uint8ArrayToBigIntBE)(reader.readBytes(this.SIZE_IN_BYTES)) % _a.MODULUS);
34
39
  }
35
40
  static fromString(str) {
36
41
  return this.fromBuffer(Buffer.from(str.replace(/^0x/i, ''), 'hex'));
@@ -67,22 +72,22 @@ class Fq {
67
72
  }
68
73
  }
69
74
  static random() {
70
- const r = (0, index_js_2.toBigIntBE)((0, index_js_1.randomBytes)(64)) % _b.MODULUS;
75
+ const r = (0, index_js_2.uint8ArrayToBigIntBE)((0, index_js_1.randomBytes)(64)) % _b.MODULUS;
71
76
  return new this(r);
72
77
  }
73
78
  static fromBuffer(buffer) {
74
79
  const reader = index_js_3.BufferReader.asReader(buffer);
75
- return new this((0, index_js_2.toBigIntBE)(reader.readBytes(this.SIZE_IN_BYTES)));
80
+ return new this((0, index_js_2.uint8ArrayToBigIntBE)(reader.readBytes(this.SIZE_IN_BYTES)));
76
81
  }
77
82
  static fromBufferReduce(buffer) {
78
83
  const reader = index_js_3.BufferReader.asReader(buffer);
79
- return new this((0, index_js_2.toBigIntBE)(reader.readBytes(this.SIZE_IN_BYTES)) % Fr.MODULUS);
84
+ return new this((0, index_js_2.uint8ArrayToBigIntBE)(reader.readBytes(this.SIZE_IN_BYTES)) % Fr.MODULUS);
80
85
  }
81
86
  static fromString(str) {
82
87
  return this.fromBuffer(Buffer.from(str.replace(/^0x/i, ''), 'hex'));
83
88
  }
84
89
  toBuffer() {
85
- return (0, index_js_2.toBufferBE)(this.value, _b.SIZE_IN_BYTES);
90
+ return (0, index_js_2.bigIntToBufferBE)(this.value, _b.SIZE_IN_BYTES);
86
91
  }
87
92
  toString() {
88
93
  return '0x' + this.value.toString(16);
@@ -99,4 +104,4 @@ _b = Fq;
99
104
  Fq.MODULUS = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n;
100
105
  Fq.MAX_VALUE = _b.MODULUS - 1n;
101
106
  Fq.SIZE_IN_BYTES = 32;
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2ZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsaURBQWlEO0FBQ2pELHVEQUFrRTtBQUNsRSxvREFBNEU7QUFFNUUsMkZBQTJGO0FBQzNGOzs7O0dBSUc7QUFDSCxNQUFhLEVBQUU7SUFPYixZQUFZLEtBQTBCO1FBQ3BDLCtFQUErRTtRQUMvRSxNQUFNLFdBQVcsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBQSxxQkFBVSxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFFLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUEscUJBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTTtRQUNYLE1BQU0sQ0FBQyxHQUFHLElBQUEscUJBQVUsRUFBQyxJQUFBLHNCQUFXLEVBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBaUM7UUFDakQsTUFBTSxNQUFNLEdBQUcsdUJBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBaUM7UUFDdkQsTUFBTSxNQUFNLEdBQUcsdUJBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFBLHFCQUFVLEVBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBVztRQUMzQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLEdBQUcsSUFBQSxnQ0FBcUIsRUFBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQU87UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7QUFuREgsZ0JBb0RDOztBQW5EUSxPQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEFBQWIsQ0FBYztBQUNsQixVQUFPLEdBQUcsbUVBQW1FLEFBQXRFLENBQXVFO0FBQzlFLFlBQVMsR0FBRyxFQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQUFBcEIsQ0FBcUI7QUFDOUIsZ0JBQWEsR0FBRyxFQUFFLEFBQUwsQ0FBTTtBQWtENUI7Ozs7R0FJRztBQUNILE1BQWEsRUFBRTtJQUtiLFlBQTRCLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ3ZDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU07UUFDWCxNQUFNLENBQUMsR0FBRyxJQUFBLHFCQUFVLEVBQUMsSUFBQSxzQkFBVyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUNuRCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQWlDO1FBQ2pELE1BQU0sTUFBTSxHQUFHLHVCQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBQSxxQkFBVSxFQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQWlDO1FBQ3ZELE1BQU0sTUFBTSxHQUFHLHVCQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBQSxxQkFBVSxFQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVc7UUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBQSxxQkFBVSxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7O0FBNUNILGdCQTZDQzs7QUE1Q1EsVUFBTyxHQUFHLG1FQUFtRSxBQUF0RSxDQUF1RTtBQUM5RSxZQUFTLEdBQUcsRUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEFBQXBCLENBQXFCO0FBQzlCLGdCQUFhLEdBQUcsRUFBRSxBQUFMLENBQU0ifQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2ZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsaURBQWlEO0FBQ2pELHVEQUtrQztBQUNsQyxvREFBNEU7QUFFNUUsMkZBQTJGO0FBQzNGOzs7O0dBSUc7QUFDSCxNQUFhLEVBQUU7SUFPYixZQUFZLEtBQW1DO1FBQzdDLCtFQUErRTtRQUMvRSxNQUFNLFdBQVcsR0FDZixPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLEtBQUssWUFBWSxNQUFNO2dCQUN6QixDQUFDLENBQUMsSUFBQSxrQ0FBdUIsRUFBQyxLQUFLLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxJQUFBLCtCQUFvQixFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUs7WUFDUixPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUEsK0JBQW9CLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEgsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNO1FBQ1gsTUFBTSxDQUFDLEdBQUcsSUFBQSwrQkFBb0IsRUFBQyxJQUFBLHNCQUFXLEVBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQzdELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIs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
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.0.0-devnet",
4
+ "version": "0.0.0-test.0",
5
5
  "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -13,7 +13,7 @@
13
13
  "default": "./dest/node/index.js"
14
14
  }
15
15
  },
16
- "bin": "./dest/node/main.js",
16
+ "bin": "dest/node/main.js",
17
17
  "files": [
18
18
  "src/",
19
19
  "dest/",
@@ -84,7 +84,6 @@
84
84
  "@typescript-eslint/eslint-plugin": "^5.54.1",
85
85
  "@typescript-eslint/parser": "^5.54.1",
86
86
  "buffer": "^6.0.3",
87
- "copy-webpack-plugin": "^11.0.0",
88
87
  "eslint": "^8.35.0",
89
88
  "eslint-config-prettier": "^8.8.0",
90
89
  "html-webpack-plugin": "^5.5.1",
@@ -93,13 +92,14 @@
93
92
  "prettier": "^2.8.4",
94
93
  "resolve-typescript-plugin": "^2.0.1",
95
94
  "source-map-support": "^0.5.21",
95
+ "terser-webpack-plugin": "^5.3.11",
96
96
  "ts-jest": "^29.1.0",
97
97
  "ts-loader": "^9.4.2",
98
98
  "ts-node": "^10.9.1",
99
- "typescript": "^5.0.4",
99
+ "typescript": "5.4.5",
100
100
  "webpack": "^5.82.1",
101
101
  "webpack-cli": "^5.1.1",
102
- "webpack-dev-server": "^4.15.0",
102
+ "webpack-dev-server": "^5.2.0",
103
103
  "worker-loader": "^3.0.8"
104
104
  }
105
105
  }
@@ -5,10 +5,17 @@ import {
5
5
  deflattenFields,
6
6
  flattenFieldsAsArray,
7
7
  ProofData,
8
+ ProofDataForRecursion,
8
9
  reconstructHonkProof,
9
10
  reconstructUltraPlonkProof,
10
11
  } from '../proof/index.js';
11
12
 
13
+ export class AztecClientBackendError extends Error {
14
+ constructor(message: string) {
15
+ super(message);
16
+ }
17
+ }
18
+
12
19
  export class UltraPlonkBackend {
13
20
  // These type assertions are used so that we don't
14
21
  // have to initialize `api` and `acirComposer` in the constructor.
@@ -216,6 +223,7 @@ export class UltraHonkBackend {
216
223
  const proofStart = proofWithPublicInputs.slice(0, publicInputsOffset);
217
224
  const publicInputsSplitIndex = numPublicInputs * fieldByteSize;
218
225
  const proofEnd = proofWithPublicInputs.slice(publicInputsOffset + publicInputsSplitIndex);
226
+
219
227
  // Construct the proof without the public inputs
220
228
  const proof = new Uint8Array([...proofStart, ...proofEnd]);
221
229
 
@@ -229,6 +237,61 @@ export class UltraHonkBackend {
229
237
  return { proof, publicInputs };
230
238
  }
231
239
 
240
+ async generateProofForRecursiveAggregation(
241
+ compressedWitness: Uint8Array,
242
+ options?: UltraHonkBackendOptions,
243
+ ): Promise<ProofDataForRecursion> {
244
+ await this.instantiate();
245
+
246
+ const proveUltraHonk = options?.keccak
247
+ ? this.api.acirProveUltraKeccakHonk.bind(this.api)
248
+ : this.api.acirProveUltraHonk.bind(this.api);
249
+
250
+ const proofWithPublicInputs = await proveUltraHonk(
251
+ this.acirUncompressedBytecode,
252
+ this.circuitOptions.recursive,
253
+ gunzip(compressedWitness),
254
+ );
255
+
256
+ // proofWithPublicInputs starts with a four-byte size
257
+ const numSerdeHeaderBytes = 4;
258
+ // some public inputs are handled specially
259
+ const numKZGAccumulatorFieldElements = 16;
260
+ // proof begins with: size, num public inputs, public input offset
261
+ const numProofPreambleElements = 3;
262
+ const publicInputsSizeIndex = 1;
263
+
264
+ // Slice serde header and convert to fields
265
+ const proofAsStrings = deflattenFields(proofWithPublicInputs.slice(numSerdeHeaderBytes));
266
+ const numPublicInputs = Number(proofAsStrings[publicInputsSizeIndex]) - numKZGAccumulatorFieldElements;
267
+
268
+ // Account for the serialized buffer size at start
269
+ const publicInputsOffset = publicInputsOffsetBytes + serializedBufferSize;
270
+ const publicInputsSplitIndex = numPublicInputs * fieldByteSize;
271
+
272
+ // Construct the proof without the public inputs
273
+ const numPublicInputsBytes = numPublicInputs * fieldByteSize;
274
+ const numHeaderPlusPreambleBytes = numSerdeHeaderBytes + numProofPreambleElements * fieldByteSize;
275
+ const proofNoPIs = new Uint8Array(proofWithPublicInputs.length - numPublicInputsBytes);
276
+ // copy the elements before the public inputs
277
+ proofNoPIs.set(proofWithPublicInputs.subarray(0, numHeaderPlusPreambleBytes), 0);
278
+ // copy the elements after the public inputs
279
+ proofNoPIs.set(
280
+ proofWithPublicInputs.subarray(numHeaderPlusPreambleBytes + numPublicInputsBytes),
281
+ numHeaderPlusPreambleBytes,
282
+ );
283
+ const proof: string[] = deflattenFields(proofNoPIs.slice(numSerdeHeaderBytes));
284
+
285
+ // Fetch the number of public inputs out of the proof string
286
+ const publicInputsConcatenated = proofWithPublicInputs.slice(
287
+ publicInputsOffset,
288
+ publicInputsOffset + publicInputsSplitIndex,
289
+ );
290
+ const publicInputs = deflattenFields(publicInputsConcatenated);
291
+
292
+ return { proof, publicInputs };
293
+ }
294
+
232
295
  async verifyProof(proofData: ProofData, options?: UltraHonkBackendOptions): Promise<boolean> {
233
296
  await this.instantiate();
234
297
 
@@ -245,9 +308,11 @@ export class UltraHonkBackend {
245
308
  return await verifyUltraHonk(proof, new RawBuffer(vkBuf));
246
309
  }
247
310
 
248
- async getVerificationKey(): Promise<Uint8Array> {
311
+ async getVerificationKey(options?: UltraHonkBackendOptions): Promise<Uint8Array> {
249
312
  await this.instantiate();
250
- return await this.api.acirWriteVkUltraHonk(this.acirUncompressedBytecode, this.circuitOptions.recursive);
313
+ return options?.keccak
314
+ ? await this.api.acirWriteVkUltraKeccakHonk(this.acirUncompressedBytecode, this.circuitOptions.recursive)
315
+ : await this.api.acirWriteVkUltraHonk(this.acirUncompressedBytecode, this.circuitOptions.recursive);
251
316
  }
252
317
 
253
318
  /** @description Returns a solidity verifier */
@@ -319,7 +384,12 @@ export class AztecClientBackend {
319
384
 
320
385
  async prove(witnessMsgpack: Uint8Array[]): Promise<[Uint8Array, Uint8Array]> {
321
386
  await this.instantiate();
322
- return this.api.acirProveAztecClient(this.acirMsgpack, witnessMsgpack);
387
+ const proofAndVk = await this.api.acirProveAztecClient(this.acirMsgpack, witnessMsgpack);
388
+ const [proof, vk] = proofAndVk;
389
+ if (!await this.verify(proof, vk)) {
390
+ throw new AztecClientBackendError("Failed to verify the private (ClientIVC) transaction proof!");
391
+ }
392
+ return proofAndVk;
323
393
  }
324
394
 
325
395
  async verify(proof: Uint8Array, vk: Uint8Array): Promise<boolean> {
@@ -332,6 +402,12 @@ export class AztecClientBackend {
332
402
  return this.api.acirProveAndVerifyAztecClient(this.acirMsgpack, witnessMsgpack);
333
403
  }
334
404
 
405
+ async gates(): Promise<number[]> {
406
+ // call function on API
407
+ await this.instantiate();
408
+ return this.api.acirGatesAztecClient(this.acirMsgpack);
409
+ }
410
+
335
411
  async destroy(): Promise<void> {
336
412
  if (!this.api) {
337
413
  return;
@@ -41,7 +41,7 @@ describe('blake2s sync', () => {
41
41
  let api: BarretenbergSync;
42
42
 
43
43
  beforeAll(async () => {
44
- api = await BarretenbergSync.new();
44
+ api = await BarretenbergSync.initSingleton();
45
45
  });
46
46
 
47
47
  it('blake2s', () => {
@@ -11,8 +11,6 @@ import { RawBuffer } from '../types/raw_buffer.js';
11
11
  export { BarretenbergVerifier } from './verifier.js';
12
12
  export { UltraPlonkBackend, UltraHonkBackend, AztecClientBackend } from './backend.js';
13
13
 
14
- const debug = createDebug('bb.js:wasm');
15
-
16
14
  export type BackendOptions = {
17
15
  /** @description Number of threads to run the backend worker on */
18
16
  threads?: number;
@@ -22,6 +20,12 @@ export type BackendOptions = {
22
20
 
23
21
  /** @description Path to download CRS files */
24
22
  crsPath?: string;
23
+
24
+ /** @description Path to download WASM files */
25
+ wasmPath?: string;
26
+
27
+ /** @description Logging function */
28
+ logger?: (msg: string) => void;
25
29
  };
26
30
 
27
31
  export type CircuitOptions = {
@@ -50,8 +54,14 @@ export class Barretenberg extends BarretenbergApi {
50
54
  static async new(options: BackendOptions = {}) {
51
55
  const worker = createMainWorker();
52
56
  const wasm = getRemoteBarretenbergWasm<BarretenbergWasmMainWorker>(worker);
53
- const { module, threads } = await fetchModuleAndThreads(options.threads);
54
- await wasm.init(module, threads, proxy(debug), options.memory?.initial, options.memory?.maximum);
57
+ const { module, threads } = await fetchModuleAndThreads(options.threads, options.wasmPath, options.logger);
58
+ await wasm.init(
59
+ module,
60
+ threads,
61
+ proxy(options.logger ?? createDebug('bb.js:bb_wasm_async')),
62
+ options.memory?.initial,
63
+ options.memory?.maximum,
64
+ );
55
65
  return new Barretenberg(worker, wasm, options);
56
66
  }
57
67
 
@@ -60,7 +70,7 @@ export class Barretenberg extends BarretenbergApi {
60
70
  }
61
71
 
62
72
  async initSRSForCircuitSize(circuitSize: number): Promise<void> {
63
- const crs = await Crs.new(circuitSize + 1, this.options.crsPath);
73
+ const crs = await Crs.new(circuitSize + 1, this.options.crsPath, this.options.logger);
64
74
  // TODO(https://github.com/AztecProtocol/barretenberg/issues/1129): Do slab allocator initialization?
65
75
  // await this.commonInitSlabAllocator(circuitSize);
66
76
  await this.srsInitSrs(new RawBuffer(crs.getG1Data()), crs.numPoints, new RawBuffer(crs.getG2Data()));
@@ -68,8 +78,8 @@ export class Barretenberg extends BarretenbergApi {
68
78
 
69
79
  async initSRSClientIVC(): Promise<void> {
70
80
  // crsPath can be undefined
71
- const crs = await Crs.new(2 ** 20 + 1, this.options.crsPath);
72
- const grumpkinCrs = await GrumpkinCrs.new(2 ** 15 + 1, this.options.crsPath);
81
+ const crs = await Crs.new(2 ** 20 + 1, this.options.crsPath, this.options.logger);
82
+ const grumpkinCrs = await GrumpkinCrs.new(2 ** 16 + 1, this.options.crsPath, this.options.logger);
73
83
 
74
84
  // Load CRS into wasm global CRS state.
75
85
  // TODO: Make RawBuffer be default behavior, and have a specific Vector type for when wanting length prefixed.
@@ -89,26 +99,28 @@ export class Barretenberg extends BarretenbergApi {
89
99
  }
90
100
  }
91
101
 
102
+ let barrentenbergSyncSingletonPromise: Promise<BarretenbergSync>;
92
103
  let barretenbergSyncSingleton: BarretenbergSync;
93
- let barretenbergSyncSingletonPromise: Promise<BarretenbergSync>;
94
104
 
95
105
  export class BarretenbergSync extends BarretenbergApiSync {
96
106
  private constructor(wasm: BarretenbergWasmMain) {
97
107
  super(wasm);
98
108
  }
99
109
 
100
- static async new() {
110
+ private static async new(wasmPath?: string, logger: (msg: string) => void = createDebug('bb.js:bb_wasm_sync')) {
101
111
  const wasm = new BarretenbergWasmMain();
102
- const { module, threads } = await fetchModuleAndThreads(1);
103
- await wasm.init(module, threads);
112
+ const { module, threads } = await fetchModuleAndThreads(1, wasmPath, logger);
113
+ await wasm.init(module, threads, logger);
104
114
  return new BarretenbergSync(wasm);
105
115
  }
106
116
 
107
- static initSingleton() {
108
- if (!barretenbergSyncSingletonPromise) {
109
- barretenbergSyncSingletonPromise = BarretenbergSync.new().then(s => (barretenbergSyncSingleton = s));
117
+ static async initSingleton(wasmPath?: string, logger: (msg: string) => void = createDebug('bb.js:bb_wasm_sync')) {
118
+ if (!barrentenbergSyncSingletonPromise) {
119
+ barrentenbergSyncSingletonPromise = BarretenbergSync.new(wasmPath, logger);
110
120
  }
111
- return barretenbergSyncSingletonPromise;
121
+
122
+ barretenbergSyncSingleton = await barrentenbergSyncSingletonPromise;
123
+ return barretenbergSyncSingleton;
112
124
  }
113
125
 
114
126
  static getSingleton() {
@@ -122,9 +134,3 @@ export class BarretenbergSync extends BarretenbergApiSync {
122
134
  return this.wasm;
123
135
  }
124
136
  }
125
-
126
- // If we're in ESM environment, use top level await. CJS users need to call it manually.
127
- // Need to ignore for cjs build.
128
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
129
- // @ts-ignore
130
- await BarretenbergSync.initSingleton(); // POSTPROCESS ESM ONLY
@@ -6,7 +6,7 @@ describe('pedersen sync', () => {
6
6
  let api: BarretenbergSync;
7
7
 
8
8
  beforeAll(async () => {
9
- api = await BarretenbergSync.new();
9
+ api = await BarretenbergSync.initSingleton();
10
10
  });
11
11
 
12
12
  it('pedersenHash', () => {
@@ -6,7 +6,7 @@ describe('poseidon sync', () => {
6
6
  let api: BarretenbergSync;
7
7
 
8
8
  beforeAll(async () => {
9
- api = await BarretenbergSync.new();
9
+ api = await BarretenbergSync.initSingleton();
10
10
  });
11
11
 
12
12
  it('poseidonHash', () => {
@@ -1,5 +1,6 @@
1
1
  // WARNING: FILE CODE GENERATED BY BINDGEN UTILITY. DO NOT EDIT!
2
2
  /* eslint-disable @typescript-eslint/no-unused-vars */
3
+ import { BarretenbergWasmMain } from '../barretenberg_wasm/barretenberg_wasm_main/index.js';
3
4
  import { BarretenbergWasmWorker, BarretenbergWasm } from '../barretenberg_wasm/index.js';
4
5
  import {
5
6
  BufferDeserializer,
@@ -11,9 +12,29 @@ import {
11
12
  OutputType,
12
13
  } from '../serialize/index.js';
13
14
  import { Fr, Fq, Point, Buffer32, Buffer128, Ptr } from '../types/index.js';
15
+ function parseBigEndianU32Array(buffer: Uint8Array, hasSizePrefix = false): number[] {
16
+ const dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
17
+
18
+ let offset = 0;
19
+ let count = buffer.byteLength >>> 2; // default is entire buffer length / 4
20
+
21
+ if (hasSizePrefix) {
22
+ // Read the first 4 bytes as the size (big-endian).
23
+ count = dv.getUint32(0, /* littleEndian= */ false);
24
+ offset = 4;
25
+ }
26
+
27
+ const out: number[] = new Array(count);
28
+ for (let i = 0; i < count; i++) {
29
+ out[i] = dv.getUint32(offset, false);
30
+ offset += 4;
31
+ }
32
+
33
+ return out;
34
+ }
14
35
 
15
36
  export class BarretenbergApi {
16
- constructor(protected wasm: BarretenbergWasmWorker) {}
37
+ constructor(protected wasm: BarretenbergWasmWorker | BarretenbergWasmMain) {}
17
38
 
18
39
  async pedersenCommit(inputsBuffer: Fr[], ctxIndex: number): Promise<Point> {
19
40
  const inArgs = [inputsBuffer, ctxIndex].map(serializeBufferable);
@@ -75,6 +96,18 @@ export class BarretenbergApi {
75
96
  return out[0];
76
97
  }
77
98
 
99
+ async poseidon2HashAccumulate(inputsBuffer: Fr[]): Promise<Fr> {
100
+ const inArgs = [inputsBuffer].map(serializeBufferable);
101
+ const outTypes: OutputType[] = [Fr];
102
+ const result = await this.wasm.callWasmExport(
103
+ 'poseidon2_hash_accumulate',
104
+ inArgs,
105
+ outTypes.map(t => t.SIZE_IN_BYTES),
106
+ );
107
+ const out = result.map((r, i) => outTypes[i].fromBuffer(r));
108
+ return out[0];
109
+ }
110
+
78
111
  async poseidon2Hashes(inputsBuffer: Fr[]): Promise<Fr> {
79
112
  const inArgs = [inputsBuffer].map(serializeBufferable);
80
113
  const outTypes: OutputType[] = [Fr];
@@ -344,6 +377,21 @@ export class BarretenbergApi {
344
377
  return out as [number, number];
345
378
  }
346
379
 
380
+ async acirGatesAztecClient(
381
+ // cf acirProveAztecClient
382
+ acirVec: Uint8Array[],
383
+ ): Promise<number[]> {
384
+ const inArgs = [acirVec].map(serializeBufferable);
385
+ const outTypes: OutputType[] = [BufferDeserializer()];
386
+ const resultBuffer = await this.wasm.callWasmExport(
387
+ 'acir_gates_aztec_client',
388
+ inArgs,
389
+ outTypes.map(t => t.SIZE_IN_BYTES),
390
+ );
391
+
392
+ return parseBigEndianU32Array(resultBuffer[0], /*hasSizePrefix=*/ true);
393
+ }
394
+
347
395
  async acirNewAcirComposer(sizeHint: number): Promise<Ptr> {
348
396
  const inArgs = [sizeHint].map(serializeBufferable);
349
397
  const outTypes: OutputType[] = [Ptr];
@@ -594,7 +642,6 @@ export class BarretenbergApi {
594
642
  }
595
643
 
596
644
  async acirProveUltraKeccakHonk(acirVec: Uint8Array, recursive: boolean, witnessVec: Uint8Array): Promise<Uint8Array> {
597
- console.log('acirProveUltraKeccakHonk in');
598
645
  const inArgs = [acirVec, recursive, witnessVec].map(serializeBufferable);
599
646
  const outTypes: OutputType[] = [BufferDeserializer()];
600
647
  const result = await this.wasm.callWasmExport(
@@ -1,8 +1,6 @@
1
1
  import createDebug from 'debug';
2
2
  import { randomBytes } from '../../random/index.js';
3
3
 
4
- const debug = createDebug('bb.js:wasm');
5
-
6
4
  /**
7
5
  * Base implementation of BarretenbergWasm.
8
6
  * Contains code that is common to the "main thread" implementation and the "child thread" implementation.
@@ -11,7 +9,7 @@ export class BarretenbergWasmBase {
11
9
  protected memStore: { [key: string]: Uint8Array } = {};
12
10
  protected memory!: WebAssembly.Memory;
13
11
  protected instance!: WebAssembly.Instance;
14
- protected logger: (msg: string) => void = debug;
12
+ protected logger: (msg: string) => void = createDebug('bb.js:bb_wasm_base');
15
13
 
16
14
  protected getImportObj(memory: WebAssembly.Memory) {
17
15
  /* eslint-disable camelcase */
@@ -51,9 +49,9 @@ export class BarretenbergWasmBase {
51
49
  const m = this.getMemory();
52
50
  const str2 = `${str} (mem: ${(m.length / (1024 * 1024)).toFixed(2)}MiB)`;
53
51
  this.logger(str2);
54
- if (str2.startsWith('WARNING:')) {
55
- this.logger(new Error().stack!);
56
- }
52
+ // if (str2.startsWith('WARNING:')) {
53
+ // this.logger(new Error().stack!);
54
+ // }
57
55
  },
58
56
 
59
57
  get_data: (keyAddr: number, outBufAddr: number) => {