@aztec/bb.js 0.71.0 → 0.72.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 (67) hide show
  1. package/dest/browser/barretenberg/backend.d.ts +2 -1
  2. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  3. package/dest/browser/barretenberg/index.d.ts +7 -0
  4. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  5. package/dest/browser/barretenberg_api/index.d.ts +3 -2
  6. package/dest/browser/barretenberg_api/index.d.ts.map +1 -1
  7. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  8. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  9. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +1 -1
  10. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  11. package/dest/browser/index.d.ts +1 -1
  12. package/dest/browser/index.d.ts.map +1 -1
  13. package/dest/browser/index.js +85 -24
  14. package/dest/browser/proof/index.d.ts +10 -0
  15. package/dest/browser/proof/index.d.ts.map +1 -1
  16. package/dest/node/barretenberg/backend.d.ts +2 -1
  17. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  18. package/dest/node/barretenberg/backend.js +34 -1
  19. package/dest/node/barretenberg/index.d.ts +7 -0
  20. package/dest/node/barretenberg/index.d.ts.map +1 -1
  21. package/dest/node/barretenberg/index.js +23 -2
  22. package/dest/node/barretenberg_api/index.d.ts +3 -2
  23. package/dest/node/barretenberg_api/index.d.ts.map +1 -1
  24. package/dest/node/barretenberg_api/index.js +1 -1
  25. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  26. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  27. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  28. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +16 -11
  29. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +1 -1
  30. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  31. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +2 -3
  32. package/dest/node/index.d.ts +1 -1
  33. package/dest/node/index.d.ts.map +1 -1
  34. package/dest/node/index.js +2 -2
  35. package/dest/node/proof/index.d.ts +10 -0
  36. package/dest/node/proof/index.d.ts.map +1 -1
  37. package/dest/node/proof/index.js +1 -1
  38. package/dest/node-cjs/barretenberg/backend.d.ts +2 -1
  39. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  40. package/dest/node-cjs/barretenberg/backend.js +34 -1
  41. package/dest/node-cjs/barretenberg/index.d.ts +7 -0
  42. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  43. package/dest/node-cjs/barretenberg/index.js +25 -3
  44. package/dest/node-cjs/barretenberg_api/index.d.ts +3 -2
  45. package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -1
  46. package/dest/node-cjs/barretenberg_api/index.js +1 -1
  47. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  48. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  49. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  50. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +16 -11
  51. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +1 -1
  52. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  53. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +2 -3
  54. package/dest/node-cjs/index.d.ts +1 -1
  55. package/dest/node-cjs/index.d.ts.map +1 -1
  56. package/dest/node-cjs/index.js +3 -2
  57. package/dest/node-cjs/proof/index.d.ts +10 -0
  58. package/dest/node-cjs/proof/index.d.ts.map +1 -1
  59. package/dest/node-cjs/proof/index.js +1 -1
  60. package/package.json +1 -1
  61. package/src/barretenberg/backend.ts +57 -0
  62. package/src/barretenberg/index.ts +27 -1
  63. package/src/barretenberg_api/index.ts +2 -1
  64. package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +14 -10
  65. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +2 -3
  66. package/src/index.ts +1 -0
  67. package/src/proof/index.ts +11 -0
@@ -16,18 +16,23 @@ class HeapAllocator {
16
16
  this.inScratchRemaining = 1024;
17
17
  this.outScratchRemaining = 1024;
18
18
  }
19
- copyToMemory(buffers) {
20
- return buffers.map(buf => {
21
- if (buf.length <= this.inScratchRemaining) {
22
- const ptr = (this.inScratchRemaining -= buf.length);
23
- this.wasm.writeMemory(ptr, buf);
24
- return ptr;
19
+ getInputs(buffers) {
20
+ return buffers.map(bufOrNum => {
21
+ if (typeof bufOrNum === 'object') {
22
+ if (bufOrNum.length <= this.inScratchRemaining) {
23
+ const ptr = (this.inScratchRemaining -= bufOrNum.length);
24
+ this.wasm.writeMemory(ptr, bufOrNum);
25
+ return ptr;
26
+ }
27
+ else {
28
+ const ptr = this.wasm.call('bbmalloc', bufOrNum.length);
29
+ this.wasm.writeMemory(ptr, bufOrNum);
30
+ this.allocs.push(ptr);
31
+ return ptr;
32
+ }
25
33
  }
26
34
  else {
27
- const ptr = this.wasm.call('bbmalloc', buf.length);
28
- this.wasm.writeMemory(ptr, buf);
29
- this.allocs.push(ptr);
30
- return ptr;
35
+ return bufOrNum;
31
36
  }
32
37
  });
33
38
  }
@@ -58,4 +63,4 @@ class HeapAllocator {
58
63
  }
59
64
  }
60
65
  exports.HeapAllocator = HeapAllocator;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhcF9hbGxvY2F0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX3dhc20vYmFycmV0ZW5iZXJnX3dhc21fbWFpbi9oZWFwX2FsbG9jYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxhQUFhO0lBS3hCLFlBQW9CLElBQTBCO1FBQTFCLFNBQUksR0FBSixJQUFJLENBQXNCO1FBSnRDLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFDdEIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLHdCQUFtQixHQUFHLElBQUksQ0FBQztJQUVjLENBQUM7SUFFbEQsWUFBWSxDQUFDLE9BQXFCO1FBQ2hDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QixJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QixPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBK0I7UUFDM0MsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLCtGQUErRjtZQUMvRiwyREFBMkQ7WUFDM0QsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUV0QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUM1QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVc7UUFDdEIsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFqREQsc0NBaURDIn0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhcF9hbGxvY2F0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX3dhc20vYmFycmV0ZW5iZXJnX3dhc21fbWFpbi9oZWFwX2FsbG9jYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxhQUFhO0lBS3hCLFlBQW9CLElBQTBCO1FBQTFCLFNBQUksR0FBSixJQUFJLENBQXNCO1FBSnRDLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFDdEIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLHdCQUFtQixHQUFHLElBQUksQ0FBQztJQUVjLENBQUM7SUFFbEQsU0FBUyxDQUFDLE9BQWdDO1FBQ3hDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1QixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQy9DLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNyQyxPQUFPLEdBQUcsQ0FBQztnQkFDYixDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdEIsT0FBTyxHQUFHLENBQUM7Z0JBQ2IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLFFBQVEsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQStCO1FBQzNDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QiwrRkFBK0Y7WUFDL0YsMkRBQTJEO1lBQzNELE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFdEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLENBQUM7WUFDNUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFXO1FBQ3RCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBckRELHNDQXFEQyJ9
@@ -37,7 +37,7 @@ export declare class BarretenbergWasmMain extends BarretenbergWasmBase {
37
37
  proc_exit: () => never;
38
38
  };
39
39
  };
40
- callWasmExport(funcName: string, inArgs: Uint8Array[], outLens: (number | undefined)[]): Uint8Array[];
40
+ callWasmExport(funcName: string, inArgs: (Uint8Array | number)[], outLens: (number | undefined)[]): Uint8Array[];
41
41
  private getOutputArgs;
42
42
  }
43
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/barretenberg_wasm/barretenberg_wasm_main/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAK1E;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB;IAC5D,MAAM,CAAC,WAAW,SAAM;IACxB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAK;IAElB,aAAa;IAIpB;;OAEG;IACU,IAAI,CACf,MAAM,EAAE,WAAW,CAAC,MAAM,EAC1B,OAAO,SAA0D,EACjE,MAAM,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAY,EACrC,OAAO,SAAK,EACZ,OAAO,SAAU;IAiCnB;;OAEG;IACU,OAAO;IAIpB,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM;;kCAOrB,MAAM;;;;;;;;;;;;;;;IAsBlC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;IAUtF,OAAO,CAAC,aAAa;CAkBtB;AAED;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/barretenberg_wasm/barretenberg_wasm_main/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAK1E;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB;IAC5D,MAAM,CAAC,WAAW,SAAM;IACxB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAK;IAElB,aAAa;IAIpB;;OAEG;IACU,IAAI,CACf,MAAM,EAAE,WAAW,CAAC,MAAM,EAC1B,OAAO,SAA0D,EACjE,MAAM,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAY,EACrC,OAAO,SAAK,EACZ,OAAO,SAAU;IAgCnB;;OAEG;IACU,OAAO;IAIpB,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM;;kCAOrB,MAAM;;;;;;;;;;;;;;;IAsBlC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;IAUjG,OAAO,CAAC,aAAa;CAkBtB;AAED;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
@@ -47,7 +47,6 @@ class BarretenbergWasmMain extends index_js_3.BarretenbergWasmBase {
47
47
  this.remoteWasms = await Promise.all(this.workers.map((index_js_1.getRemoteBarretenbergWasm)));
48
48
  await Promise.all(this.remoteWasms.map(w => w.initThread(module, this.memory)));
49
49
  }
50
- this.logger('init complete.');
51
50
  }
52
51
  /**
53
52
  * Called on main thread. Signals child threads to gracefully exit.
@@ -84,7 +83,7 @@ class BarretenbergWasmMain extends index_js_3.BarretenbergWasmBase {
84
83
  }
85
84
  callWasmExport(funcName, inArgs, outLens) {
86
85
  const alloc = new heap_allocator_js_1.HeapAllocator(this);
87
- const inPtrs = alloc.copyToMemory(inArgs);
86
+ const inPtrs = alloc.getInputs(inArgs);
88
87
  const outPtrs = alloc.getOutputPtrs(outLens);
89
88
  this.call(funcName, ...inPtrs, ...outPtrs);
90
89
  const outArgs = this.getOutputArgs(outLens, outPtrs, alloc);
@@ -109,4 +108,4 @@ class BarretenbergWasmMain extends index_js_3.BarretenbergWasmBase {
109
108
  }
110
109
  exports.BarretenbergWasmMain = BarretenbergWasmMain;
111
110
  BarretenbergWasmMain.MAX_THREADS = 32;
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX3dhc20vYmFycmV0ZW5iZXJnX3dhc21fbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsMERBQWdDO0FBRWhDLGtEQUFxRztBQUNyRyxnRkFBdUY7QUFFdkYsaUVBQTBFO0FBQzFFLDJEQUFvRDtBQUVwRCxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVcsRUFBQyxZQUFZLENBQUMsQ0FBQztBQUV4Qzs7OztHQUlHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSwrQkFBb0I7SUFBOUQ7O1FBRVUsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixnQkFBVyxHQUFtQyxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO0lBK0czQixDQUFDO0lBN0dRLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FDZixNQUEwQixFQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFBLG9CQUFTLEdBQUUsRUFBRSxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsRUFDakUsU0FBZ0MsS0FBSyxFQUNyQyxPQUFPLEdBQUcsRUFBRSxFQUNaLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRTtRQUVqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFH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
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX3dhc20vYmFycmV0ZW5iZXJnX3dhc21fbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsMERBQWdDO0FBRWhDLGtEQUFxRztBQUNyRyxnRkFBdUY7QUFFdkYsaUVBQTBFO0FBQzFFLDJEQUFvRDtBQUVwRCxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVcsRUFBQyxZQUFZLENBQUMsQ0FBQztBQUV4Qzs7OztHQUlHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSwrQkFBb0I7SUFBOUQ7O1FBRVUsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixnQkFBVyxHQUFtQyxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO0lBOEczQixDQUFDO0lBNUdRLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FDZixNQUEwQixFQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFBLG9CQUFTLEdBQUUsRUFBRSxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsRUFDakUsU0FBZ0MsS0FBSyxFQUNyQyxPQUFPLEdBQUcsRUFBRSxFQUNaLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRTtRQUVqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFH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
@@ -1,5 +1,5 @@
1
1
  export { Crs, GrumpkinCrs } from './crs/index.js';
2
- export { BackendOptions, Barretenberg, BarretenbergSync, BarretenbergVerifier, UltraPlonkBackend, UltraHonkBackend, AztecClientBackend, } from './barretenberg/index.js';
2
+ export { BackendOptions, Barretenberg, BarretenbergSync, BarretenbergLazy, BarretenbergVerifier, UltraPlonkBackend, UltraHonkBackend, AztecClientBackend, } from './barretenberg/index.js';
3
3
  export { RawBuffer, Fr } from './types/index.js';
4
4
  export { splitHonkProof, reconstructHonkProof, ProofData } from './proof/index.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reconstructHonkProof = exports.splitHonkProof = exports.Fr = exports.RawBuffer = exports.AztecClientBackend = exports.UltraHonkBackend = exports.UltraPlonkBackend = exports.BarretenbergVerifier = exports.BarretenbergSync = exports.Barretenberg = exports.GrumpkinCrs = exports.Crs = void 0;
3
+ exports.reconstructHonkProof = exports.splitHonkProof = exports.Fr = exports.RawBuffer = exports.AztecClientBackend = exports.UltraHonkBackend = exports.UltraPlonkBackend = exports.BarretenbergVerifier = exports.BarretenbergLazy = exports.BarretenbergSync = exports.Barretenberg = exports.GrumpkinCrs = exports.Crs = void 0;
4
4
  var index_js_1 = require("./crs/index.js");
5
5
  Object.defineProperty(exports, "Crs", { enumerable: true, get: function () { return index_js_1.Crs; } });
6
6
  Object.defineProperty(exports, "GrumpkinCrs", { enumerable: true, get: function () { return index_js_1.GrumpkinCrs; } });
7
7
  var index_js_2 = require("./barretenberg/index.js");
8
8
  Object.defineProperty(exports, "Barretenberg", { enumerable: true, get: function () { return index_js_2.Barretenberg; } });
9
9
  Object.defineProperty(exports, "BarretenbergSync", { enumerable: true, get: function () { return index_js_2.BarretenbergSync; } });
10
+ Object.defineProperty(exports, "BarretenbergLazy", { enumerable: true, get: function () { return index_js_2.BarretenbergLazy; } });
10
11
  Object.defineProperty(exports, "BarretenbergVerifier", { enumerable: true, get: function () { return index_js_2.BarretenbergVerifier; } });
11
12
  Object.defineProperty(exports, "UltraPlonkBackend", { enumerable: true, get: function () { return index_js_2.UltraPlonkBackend; } });
12
13
  Object.defineProperty(exports, "UltraHonkBackend", { enumerable: true, get: function () { return index_js_2.UltraHonkBackend; } });
@@ -17,4 +18,4 @@ Object.defineProperty(exports, "Fr", { enumerable: true, get: function () { retu
17
18
  var index_js_4 = require("./proof/index.js");
18
19
  Object.defineProperty(exports, "splitHonkProof", { enumerable: true, get: function () { return index_js_4.splitHonkProof; } });
19
20
  Object.defineProperty(exports, "reconstructHonkProof", { enumerable: true, get: function () { return index_js_4.reconstructHonkProof; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQWtEO0FBQXpDLCtGQUFBLEdBQUcsT0FBQTtBQUFFLHVHQUFBLFdBQVcsT0FBQTtBQUN6QixvREFRaUM7QUFOL0Isd0dBQUEsWUFBWSxPQUFBO0FBQ1osNEdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsZ0hBQUEsb0JBQW9CLE9BQUE7QUFDcEIsNkdBQUEsaUJBQWlCLE9BQUE7QUFDakIsNEdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsOEdBQUEsa0JBQWtCLE9BQUE7QUFFcEIsNkNBQWlEO0FBQXhDLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDhGQUFBLEVBQUUsT0FBQTtBQUN0Qiw2Q0FBbUY7QUFBMUUsMEdBQUEsY0FBYyxPQUFBO0FBQUUsZ0hBQUEsb0JBQW9CLE9BQUEifQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQWtEO0FBQXpDLCtGQUFBLEdBQUcsT0FBQTtBQUFFLHVHQUFBLFdBQVcsT0FBQTtBQUN6QixvREFTaUM7QUFQL0Isd0dBQUEsWUFBWSxPQUFBO0FBQ1osNEdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsNEdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsZ0hBQUEsb0JBQW9CLE9BQUE7QUFDcEIsNkdBQUEsaUJBQWlCLE9BQUE7QUFDakIsNEdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsOEdBQUEsa0JBQWtCLE9BQUE7QUFFcEIsNkNBQWlEO0FBQXhDLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDhGQUFBLEVBQUUsT0FBQTtBQUN0Qiw2Q0FBbUY7QUFBMUUsMEdBQUEsY0FBYyxPQUFBO0FBQUUsZ0hBQUEsb0JBQW9CLE9BQUEifQ==
@@ -8,6 +8,16 @@ export type ProofData = {
8
8
  /** @description An byte array representing the proof */
9
9
  proof: Uint8Array;
10
10
  };
11
+ /**
12
+ * @description
13
+ * The representation of a proof
14
+ * */
15
+ export type ProofDataForRecursion = {
16
+ /** @description Public inputs of a proof */
17
+ publicInputs: string[];
18
+ /** @description An byte array representing the proof */
19
+ proof: string[];
20
+ };
11
21
  export declare function splitHonkProof(proofWithPublicInputs: Uint8Array): {
12
22
  publicInputs: Uint8Array;
13
23
  proof: Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proof/index.ts"],"names":[],"mappings":"AAAA;;;KAGK;AACL,MAAM,MAAM,SAAS,GAAG;IACtB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wDAAwD;IACxD,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAQF,wBAAgB,cAAc,CAAC,qBAAqB,EAAE,UAAU,GAAG;IAAE,YAAY,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAqBjH;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAQ5F;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAQ3E;AAED,wBAAgB,eAAe,CAAC,eAAe,EAAE,UAAU,GAAG,MAAM,EAAE,CAUrE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAGjE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proof/index.ts"],"names":[],"mappings":"AAAA;;;KAGK;AACL,MAAM,MAAM,SAAS,GAAG;IACtB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wDAAwD;IACxD,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF;;;KAGK;AACL,MAAM,MAAM,qBAAqB,GAAG;IAClC,4CAA4C;IAC5C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wDAAwD;IACxD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAQF,wBAAgB,cAAc,CAAC,qBAAqB,EAAE,UAAU,GAAG;IAAE,YAAY,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAqBjH;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAQ5F;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAQ3E;AAED,wBAAgB,eAAe,CAAC,eAAe,EAAE,UAAU,GAAG,MAAM,EAAE,CAUrE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAGjE"}
@@ -90,4 +90,4 @@ function hexToUint8Array(hex) {
90
90
  }
91
91
  return u8;
92
92
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvb2YvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBV0EsaUVBQWlFO0FBQ2pFLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN6QixNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLHVCQUF1QixHQUFHLGlCQUFpQixHQUFHLGFBQWEsQ0FBQztBQUVsRSxTQUFnQixjQUFjLENBQUMscUJBQWlDO0lBQzlELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV2RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbEQsa0RBQWtEO0lBQ2xELE1BQU0sa0JBQWtCLEdBQUcsdUJBQXVCLEdBQUcsb0JBQW9CLENBQUM7SUFDMUUsa0RBQWtEO0lBQ2xELE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN0RSxNQUFNLHNCQUFzQixHQUFHLGVBQWUsR0FBRyxhQUFhLENBQUM7SUFDL0QsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixHQUFHLHNCQUFzQixDQUFDLENBQUM7SUFDMUYsZ0RBQWdEO0lBQ2hELE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRTNELDREQUE0RDtJQUM1RCxNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztJQUVsSCxPQUFPO1FBQ0wsS0FB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
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvb2YvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0JBLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQztBQUMvQixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDekIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFDNUIsTUFBTSx1QkFBdUIsR0FBRyxpQkFBaUIsR0FBRyxhQUFhLENBQUM7QUFFbEUsU0FBZ0IsY0FBYyxDQUFDLHFCQUFpQztJQUM5RCxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkUsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWxELGtEQUFrRDtJQUNsRCxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QixHQUFHLG9CQUFvQixDQUFDO0lBQzFFLGtEQUFrRDtJQUNsRCxNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDdEUsTUFBTSxzQkFBc0IsR0FBRyxlQUFlLEdBQUcsYUFBYSxDQUFDO0lBQy9ELE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFGLGdEQUFnRDtJQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUUzRCw0REFBNEQ7SUFDNUQsTUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixHQUFHLHNCQUFzQixDQUFDLENBQUM7SUFFbEgsT0FBTztRQUNMLEtB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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.71.0",
4
+ "version": "0.72.0",
5
5
  "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -5,6 +5,7 @@ import {
5
5
  deflattenFields,
6
6
  flattenFieldsAsArray,
7
7
  ProofData,
8
+ ProofDataForRecursion,
8
9
  reconstructHonkProof,
9
10
  reconstructUltraPlonkProof,
10
11
  } from '../proof/index.js';
@@ -216,6 +217,7 @@ export class UltraHonkBackend {
216
217
  const proofStart = proofWithPublicInputs.slice(0, publicInputsOffset);
217
218
  const publicInputsSplitIndex = numPublicInputs * fieldByteSize;
218
219
  const proofEnd = proofWithPublicInputs.slice(publicInputsOffset + publicInputsSplitIndex);
220
+
219
221
  // Construct the proof without the public inputs
220
222
  const proof = new Uint8Array([...proofStart, ...proofEnd]);
221
223
 
@@ -229,6 +231,61 @@ export class UltraHonkBackend {
229
231
  return { proof, publicInputs };
230
232
  }
231
233
 
234
+ async generateProofForRecursiveAggregation(
235
+ compressedWitness: Uint8Array,
236
+ options?: UltraHonkBackendOptions,
237
+ ): Promise<ProofDataForRecursion> {
238
+ await this.instantiate();
239
+
240
+ const proveUltraHonk = options?.keccak
241
+ ? this.api.acirProveUltraKeccakHonk.bind(this.api)
242
+ : this.api.acirProveUltraHonk.bind(this.api);
243
+
244
+ const proofWithPublicInputs = await proveUltraHonk(
245
+ this.acirUncompressedBytecode,
246
+ this.circuitOptions.recursive,
247
+ gunzip(compressedWitness),
248
+ );
249
+
250
+ // proofWithPublicInputs starts with a four-byte size
251
+ const numSerdeHeaderBytes = 4;
252
+ // some public inputs are handled specially
253
+ const numKZGAccumulatorFieldElements = 16;
254
+ // proof begins with: size, num public inputs, public input offset
255
+ const numProofPreambleElements = 3;
256
+ const publicInputsSizeIndex = 1;
257
+
258
+ // Slice serde header and convert to fields
259
+ const proofAsStrings = deflattenFields(proofWithPublicInputs.slice(numSerdeHeaderBytes));
260
+ const numPublicInputs = Number(proofAsStrings[publicInputsSizeIndex]) - numKZGAccumulatorFieldElements;
261
+
262
+ // Account for the serialized buffer size at start
263
+ const publicInputsOffset = publicInputsOffsetBytes + serializedBufferSize;
264
+ const publicInputsSplitIndex = numPublicInputs * fieldByteSize;
265
+
266
+ // Construct the proof without the public inputs
267
+ const numPublicInputsBytes = numPublicInputs * fieldByteSize;
268
+ const numHeaderPlusPreambleBytes = numSerdeHeaderBytes + numProofPreambleElements * fieldByteSize;
269
+ const proofNoPIs = new Uint8Array(proofWithPublicInputs.length - numPublicInputsBytes);
270
+ // copy the elements before the public inputs
271
+ proofNoPIs.set(proofWithPublicInputs.subarray(0, numHeaderPlusPreambleBytes), 0);
272
+ // copy the elements after the public inputs
273
+ proofNoPIs.set(
274
+ proofWithPublicInputs.subarray(numHeaderPlusPreambleBytes + numPublicInputsBytes),
275
+ numHeaderPlusPreambleBytes,
276
+ );
277
+ const proof: string[] = deflattenFields(proofNoPIs.slice(numSerdeHeaderBytes));
278
+
279
+ // Fetch the number of public inputs out of the proof string
280
+ const publicInputsConcatenated = proofWithPublicInputs.slice(
281
+ publicInputsOffset,
282
+ publicInputsOffset + publicInputsSplitIndex,
283
+ );
284
+ const publicInputs = deflattenFields(publicInputsConcatenated);
285
+
286
+ return { proof, publicInputs };
287
+ }
288
+
232
289
  async verifyProof(proofData: ProofData, options?: UltraHonkBackendOptions): Promise<boolean> {
233
290
  await this.instantiate();
234
291
 
@@ -69,7 +69,7 @@ export class Barretenberg extends BarretenbergApi {
69
69
  async initSRSClientIVC(): Promise<void> {
70
70
  // crsPath can be undefined
71
71
  const crs = await Crs.new(2 ** 20 + 1, this.options.crsPath);
72
- const grumpkinCrs = await GrumpkinCrs.new(2 ** 15 + 1, this.options.crsPath);
72
+ const grumpkinCrs = await GrumpkinCrs.new(2 ** 16 + 1, this.options.crsPath);
73
73
 
74
74
  // Load CRS into wasm global CRS state.
75
75
  // TODO: Make RawBuffer be default behavior, and have a specific Vector type for when wanting length prefixed.
@@ -123,6 +123,32 @@ export class BarretenbergSync extends BarretenbergApiSync {
123
123
  }
124
124
  }
125
125
 
126
+ let barrentenbergLazySingleton: BarretenbergLazy;
127
+
128
+ export class BarretenbergLazy extends BarretenbergApi {
129
+ private constructor(wasm: BarretenbergWasmMain) {
130
+ super(wasm);
131
+ }
132
+
133
+ private static async new() {
134
+ const wasm = new BarretenbergWasmMain();
135
+ const { module, threads } = await fetchModuleAndThreads(1);
136
+ await wasm.init(module, threads);
137
+ return new BarretenbergLazy(wasm);
138
+ }
139
+
140
+ static async getSingleton() {
141
+ if (!barrentenbergLazySingleton) {
142
+ barrentenbergLazySingleton = await BarretenbergLazy.new();
143
+ }
144
+ return barrentenbergLazySingleton;
145
+ }
146
+
147
+ getWasm() {
148
+ return this.wasm;
149
+ }
150
+ }
151
+
126
152
  // If we're in ESM environment, use top level await. CJS users need to call it manually.
127
153
  // Need to ignore for cjs build.
128
154
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -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,
@@ -13,7 +14,7 @@ import {
13
14
  import { Fr, Fq, Point, Buffer32, Buffer128, Ptr } from '../types/index.js';
14
15
 
15
16
  export class BarretenbergApi {
16
- constructor(protected wasm: BarretenbergWasmWorker) {}
17
+ constructor(protected wasm: BarretenbergWasmWorker | BarretenbergWasmMain) {}
17
18
 
18
19
  async pedersenCommit(inputsBuffer: Fr[], ctxIndex: number): Promise<Point> {
19
20
  const inArgs = [inputsBuffer, ctxIndex].map(serializeBufferable);
@@ -15,17 +15,21 @@ export class HeapAllocator {
15
15
 
16
16
  constructor(private wasm: BarretenbergWasmMain) {}
17
17
 
18
- copyToMemory(buffers: Uint8Array[]) {
19
- return buffers.map(buf => {
20
- if (buf.length <= this.inScratchRemaining) {
21
- const ptr = (this.inScratchRemaining -= buf.length);
22
- this.wasm.writeMemory(ptr, buf);
23
- return ptr;
18
+ getInputs(buffers: (Uint8Array | number)[]) {
19
+ return buffers.map(bufOrNum => {
20
+ if (typeof bufOrNum === 'object') {
21
+ if (bufOrNum.length <= this.inScratchRemaining) {
22
+ const ptr = (this.inScratchRemaining -= bufOrNum.length);
23
+ this.wasm.writeMemory(ptr, bufOrNum);
24
+ return ptr;
25
+ } else {
26
+ const ptr = this.wasm.call('bbmalloc', bufOrNum.length);
27
+ this.wasm.writeMemory(ptr, bufOrNum);
28
+ this.allocs.push(ptr);
29
+ return ptr;
30
+ }
24
31
  } else {
25
- const ptr = this.wasm.call('bbmalloc', buf.length);
26
- this.wasm.writeMemory(ptr, buf);
27
- this.allocs.push(ptr);
28
- return ptr;
32
+ return bufOrNum;
29
33
  }
30
34
  });
31
35
  }
@@ -63,7 +63,6 @@ export class BarretenbergWasmMain extends BarretenbergWasmBase {
63
63
  this.remoteWasms = await Promise.all(this.workers.map(getRemoteBarretenbergWasm<BarretenbergWasmThreadWorker>));
64
64
  await Promise.all(this.remoteWasms.map(w => w.initThread(module, this.memory)));
65
65
  }
66
- this.logger('init complete.');
67
66
  }
68
67
 
69
68
  /**
@@ -102,9 +101,9 @@ export class BarretenbergWasmMain extends BarretenbergWasmBase {
102
101
  /* eslint-enable camelcase */
103
102
  }
104
103
 
105
- callWasmExport(funcName: string, inArgs: Uint8Array[], outLens: (number | undefined)[]) {
104
+ callWasmExport(funcName: string, inArgs: (Uint8Array | number)[], outLens: (number | undefined)[]) {
106
105
  const alloc = new HeapAllocator(this);
107
- const inPtrs = alloc.copyToMemory(inArgs);
106
+ const inPtrs = alloc.getInputs(inArgs);
108
107
  const outPtrs = alloc.getOutputPtrs(outLens);
109
108
  this.call(funcName, ...inPtrs, ...outPtrs);
110
109
  const outArgs = this.getOutputArgs(outLens, outPtrs, alloc);
package/src/index.ts CHANGED
@@ -3,6 +3,7 @@ export {
3
3
  BackendOptions,
4
4
  Barretenberg,
5
5
  BarretenbergSync,
6
+ BarretenbergLazy,
6
7
  BarretenbergVerifier,
7
8
  UltraPlonkBackend,
8
9
  UltraHonkBackend,
@@ -9,6 +9,17 @@ export type ProofData = {
9
9
  proof: Uint8Array;
10
10
  };
11
11
 
12
+ /**
13
+ * @description
14
+ * The representation of a proof
15
+ * */
16
+ export type ProofDataForRecursion = {
17
+ /** @description Public inputs of a proof */
18
+ publicInputs: string[];
19
+ /** @description An byte array representing the proof */
20
+ proof: string[];
21
+ };
22
+
12
23
  // Buffers are prepended with their size. The size takes 4 bytes.
13
24
  const serializedBufferSize = 4;
14
25
  const fieldByteSize = 32;