@aztec/bb.js 1.2.1 → 2.0.0-nightly.20250814

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 (135) hide show
  1. package/dest/browser/barretenberg/backend.d.ts +1 -0
  2. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  3. package/dest/browser/barretenberg/backend.js +116 -108
  4. package/dest/browser/barretenberg/index.d.ts +13 -0
  5. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  6. package/dest/browser/barretenberg/index.js +40 -2
  7. package/dest/browser/barretenberg/verifier.js +2 -2
  8. package/dest/browser/barretenberg_api/index.d.ts +2 -2
  9. package/dest/browser/barretenberg_api/index.d.ts.map +1 -1
  10. package/dest/browser/barretenberg_api/index.js +5 -5
  11. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -0
  12. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  13. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -4
  14. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +2 -0
  15. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  16. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +17 -1
  17. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +1 -0
  18. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  19. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  20. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  21. package/dest/browser/cbind/generate.d.ts +5 -0
  22. package/dest/browser/cbind/generate.d.ts.map +1 -0
  23. package/dest/browser/cbind/generate.js +64 -0
  24. package/dest/browser/cbind/generated/api_types.d.ts +634 -0
  25. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -0
  26. package/dest/browser/cbind/generated/api_types.js +851 -0
  27. package/dest/browser/cbind/generated/async.d.ts +23 -0
  28. package/dest/browser/cbind/generated/async.d.ts.map +1 -0
  29. package/dest/browser/cbind/generated/async.js +148 -0
  30. package/dest/browser/cbind/generated/native.d.ts +31 -0
  31. package/dest/browser/cbind/generated/native.d.ts.map +1 -0
  32. package/dest/browser/cbind/generated/native.js +234 -0
  33. package/dest/browser/cbind/generated/sync.d.ts +23 -0
  34. package/dest/browser/cbind/generated/sync.d.ts.map +1 -0
  35. package/dest/browser/cbind/generated/sync.js +133 -0
  36. package/dest/browser/cbind/schema_compiler.d.ts +70 -0
  37. package/dest/browser/cbind/schema_compiler.d.ts.map +1 -0
  38. package/dest/browser/cbind/schema_compiler.js +683 -0
  39. package/dest/browser/proof/index.d.ts +2 -0
  40. package/dest/browser/proof/index.d.ts.map +1 -1
  41. package/dest/browser/proof/index.js +3 -3
  42. package/dest/node/barretenberg/backend.d.ts +1 -0
  43. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  44. package/dest/node/barretenberg/backend.js +116 -108
  45. package/dest/node/barretenberg/index.d.ts +13 -0
  46. package/dest/node/barretenberg/index.d.ts.map +1 -1
  47. package/dest/node/barretenberg/index.js +40 -2
  48. package/dest/node/barretenberg/verifier.js +2 -2
  49. package/dest/node/barretenberg_api/index.d.ts +2 -2
  50. package/dest/node/barretenberg_api/index.d.ts.map +1 -1
  51. package/dest/node/barretenberg_api/index.js +5 -5
  52. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  53. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -0
  54. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  55. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -4
  56. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +2 -0
  57. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  58. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +17 -1
  59. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +1 -0
  60. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  61. package/dest/node/cbind/generate.d.ts +5 -0
  62. package/dest/node/cbind/generate.d.ts.map +1 -0
  63. package/dest/node/cbind/generate.js +64 -0
  64. package/dest/node/cbind/generated/api_types.d.ts +634 -0
  65. package/dest/node/cbind/generated/api_types.d.ts.map +1 -0
  66. package/dest/node/cbind/generated/api_types.js +851 -0
  67. package/dest/node/cbind/generated/async.d.ts +23 -0
  68. package/dest/node/cbind/generated/async.d.ts.map +1 -0
  69. package/dest/node/cbind/generated/async.js +148 -0
  70. package/dest/node/cbind/generated/native.d.ts +31 -0
  71. package/dest/node/cbind/generated/native.d.ts.map +1 -0
  72. package/dest/node/cbind/generated/native.js +234 -0
  73. package/dest/node/cbind/generated/sync.d.ts +23 -0
  74. package/dest/node/cbind/generated/sync.d.ts.map +1 -0
  75. package/dest/node/cbind/generated/sync.js +133 -0
  76. package/dest/node/cbind/schema_compiler.d.ts +70 -0
  77. package/dest/node/cbind/schema_compiler.d.ts.map +1 -0
  78. package/dest/node/cbind/schema_compiler.js +683 -0
  79. package/dest/node/main.js +3 -3
  80. package/dest/node/proof/index.d.ts +2 -0
  81. package/dest/node/proof/index.d.ts.map +1 -1
  82. package/dest/node/proof/index.js +3 -3
  83. package/dest/node-cjs/barretenberg/backend.d.ts +1 -0
  84. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  85. package/dest/node-cjs/barretenberg/backend.js +117 -109
  86. package/dest/node-cjs/barretenberg/index.d.ts +13 -0
  87. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  88. package/dest/node-cjs/barretenberg/index.js +40 -2
  89. package/dest/node-cjs/barretenberg/verifier.js +2 -2
  90. package/dest/node-cjs/barretenberg_api/index.d.ts +2 -2
  91. package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -1
  92. package/dest/node-cjs/barretenberg_api/index.js +5 -5
  93. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  94. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -0
  95. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  96. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -4
  97. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +2 -0
  98. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  99. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +17 -1
  100. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +1 -0
  101. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  102. package/dest/node-cjs/cbind/generate.d.ts +5 -0
  103. package/dest/node-cjs/cbind/generate.d.ts.map +1 -0
  104. package/dest/node-cjs/cbind/generate.js +66 -0
  105. package/dest/node-cjs/cbind/generated/api_types.d.ts +634 -0
  106. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -0
  107. package/dest/node-cjs/cbind/generated/api_types.js +925 -0
  108. package/dest/node-cjs/cbind/generated/async.d.ts +23 -0
  109. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -0
  110. package/dest/node-cjs/cbind/generated/async.js +152 -0
  111. package/dest/node-cjs/cbind/generated/native.d.ts +31 -0
  112. package/dest/node-cjs/cbind/generated/native.d.ts.map +1 -0
  113. package/dest/node-cjs/cbind/generated/native.js +238 -0
  114. package/dest/node-cjs/cbind/generated/sync.d.ts +23 -0
  115. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -0
  116. package/dest/node-cjs/cbind/generated/sync.js +137 -0
  117. package/dest/node-cjs/cbind/schema_compiler.d.ts +70 -0
  118. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -0
  119. package/dest/node-cjs/cbind/schema_compiler.js +691 -0
  120. package/dest/node-cjs/main.js +3 -3
  121. package/dest/node-cjs/proof/index.d.ts +2 -0
  122. package/dest/node-cjs/proof/index.d.ts.map +1 -1
  123. package/dest/node-cjs/proof/index.js +3 -1
  124. package/package.json +4 -3
  125. package/src/barretenberg/backend.ts +129 -137
  126. package/src/barretenberg/index.ts +52 -1
  127. package/src/barretenberg/verifier.ts +1 -1
  128. package/src/barretenberg_api/index.ts +4 -4
  129. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +5 -3
  130. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +23 -0
  131. package/src/cbind/README.md +1 -0
  132. package/src/cbind/generate.ts +89 -0
  133. package/src/cbind/schema_compiler.ts +833 -0
  134. package/src/main.ts +2 -2
  135. package/src/proof/index.ts +2 -2
@@ -383,11 +383,11 @@ export class BarretenbergApi {
383
383
  return out as any;
384
384
  }
385
385
 
386
- async acirProveUltraHonk(acirVec: Uint8Array, witnessVec: Uint8Array, vkBuf: Uint8Array): Promise<Uint8Array> {
386
+ async acirProveUltraZKHonk(acirVec: Uint8Array, witnessVec: Uint8Array, vkBuf: Uint8Array): Promise<Uint8Array> {
387
387
  const inArgs = [acirVec, witnessVec, vkBuf].map(serializeBufferable);
388
388
  const outTypes: OutputType[] = [BufferDeserializer()];
389
389
  const result = await this.wasm.callWasmExport(
390
- 'acir_prove_ultra_honk',
390
+ 'acir_prove_ultra_zk_honk',
391
391
  inArgs,
392
392
  outTypes.map(t => t.SIZE_IN_BYTES),
393
393
  );
@@ -455,11 +455,11 @@ export class BarretenbergApi {
455
455
  return out[0];
456
456
  }
457
457
 
458
- async acirVerifyUltraHonk(proofBuf: Uint8Array, vkBuf: Uint8Array): Promise<boolean> {
458
+ async acirVerifyUltraZKHonk(proofBuf: Uint8Array, vkBuf: Uint8Array): Promise<boolean> {
459
459
  const inArgs = [proofBuf, vkBuf].map(serializeBufferable);
460
460
  const outTypes: OutputType[] = [BoolDeserializer()];
461
461
  const result = await this.wasm.callWasmExport(
462
- 'acir_verify_ultra_honk',
462
+ 'acir_verify_ultra_zk_honk',
463
463
  inArgs,
464
464
  outTypes.map(t => t.SIZE_IN_BYTES),
465
465
  );
@@ -49,9 +49,11 @@ export class BarretenbergWasmBase {
49
49
  const m = this.getMemory();
50
50
  const str2 = `${str} (mem: ${(m.length / (1024 * 1024)).toFixed(2)}MiB)`;
51
51
  this.logger(str2);
52
- // if (str2.startsWith('WARNING:')) {
53
- // this.logger(new Error().stack!);
54
- // }
52
+ },
53
+
54
+ throw_or_abort_impl: (addr: number) => {
55
+ const str = this.stringFromAddress(addr);
56
+ throw new Error(str);
55
57
  },
56
58
 
57
59
  get_data: (keyAddr: number, outBufAddr: number) => {
@@ -136,6 +136,29 @@ export class BarretenbergWasmMain extends BarretenbergWasmBase {
136
136
  return this.getMemorySlice(ptr + 4, ptr + 4 + length);
137
137
  });
138
138
  }
139
+
140
+ cbindCall(cbind: string, inputBuffer: Uint8Array): any {
141
+ const outputSizePtr = this.call('bbmalloc', 4);
142
+ const outputMsgpackPtr = this.call('bbmalloc', 4);
143
+
144
+ const inputPtr = this.call('bbmalloc', inputBuffer.length);
145
+ this.writeMemory(inputPtr, inputBuffer);
146
+ this.call(cbind, inputPtr, inputBuffer.length, outputMsgpackPtr, outputSizePtr);
147
+
148
+ const readPtr32 = (ptr32: number) => {
149
+ const dataView = new DataView(this.getMemorySlice(ptr32, ptr32 + 4).buffer);
150
+ return dataView.getUint32(0, true);
151
+ };
152
+
153
+ const encodedResult = this.getMemorySlice(
154
+ readPtr32(outputMsgpackPtr),
155
+ readPtr32(outputMsgpackPtr) + readPtr32(outputSizePtr),
156
+ );
157
+ this.call('bbfree', inputPtr);
158
+ this.call('bbfree', outputSizePtr);
159
+ this.call('bbfree', outputMsgpackPtr);
160
+ return encodedResult;
161
+ }
139
162
  }
140
163
 
141
164
  /**
@@ -0,0 +1 @@
1
+ Derive bindings from the reported scheme of msgpack from bb. Currently redundant with bindgen, until that is supplanted.
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Generate TypeScript bindings from msgpack schema
3
+ */
4
+
5
+ import { writeFileSync, mkdirSync } from 'fs';
6
+ import { dirname, join } from 'path';
7
+ import { exec } from 'child_process';
8
+ import { promisify } from 'util';
9
+ import { fileURLToPath } from 'url';
10
+ import {
11
+ createSharedTypesCompiler,
12
+ createSyncApiCompiler,
13
+ createAsyncApiCompiler,
14
+ createNativeApiCompiler,
15
+ type SchemaCompiler,
16
+ } from './schema_compiler.js';
17
+
18
+ const execAsync = promisify(exec);
19
+
20
+ interface GeneratorConfig {
21
+ name: string;
22
+ outputFile: string;
23
+ createCompiler: () => SchemaCompiler;
24
+ }
25
+
26
+ const GENERATORS: GeneratorConfig[] = [
27
+ {
28
+ name: 'Shared types',
29
+ outputFile: 'generated/api_types.ts',
30
+ createCompiler: createSharedTypesCompiler,
31
+ },
32
+ {
33
+ name: 'Sync API',
34
+ outputFile: 'generated/sync.ts',
35
+ createCompiler: createSyncApiCompiler,
36
+ },
37
+ {
38
+ name: 'Async API',
39
+ outputFile: 'generated/async.ts',
40
+ createCompiler: createAsyncApiCompiler,
41
+ },
42
+ {
43
+ name: 'Native API',
44
+ outputFile: 'generated/native.ts',
45
+ createCompiler: createNativeApiCompiler,
46
+ },
47
+ ];
48
+
49
+ // @ts-ignore
50
+ const __dirname = dirname(fileURLToPath(import.meta.url));
51
+
52
+ async function generate() {
53
+ const bbBuildPath = process.env.BB_BINARY_PATH || join(__dirname, '../../../cpp/build/bin/bb');
54
+
55
+ // Get schema from bb
56
+ console.log('Fetching msgpack schema from bb...');
57
+ const { stdout } = await execAsync(`${bbBuildPath} msgpack schema`);
58
+ const schema = JSON.parse(stdout.trim());
59
+
60
+ if (!schema.commands || !schema.responses) {
61
+ throw new Error('Invalid schema: missing commands or responses');
62
+ }
63
+
64
+ console.log('Generating TypeScript bindings...\n');
65
+
66
+ // Ensure output directory exists
67
+ const outputDir = join(__dirname, 'generated');
68
+ mkdirSync(outputDir, { recursive: true });
69
+
70
+ // Generate each output file
71
+ for (const config of GENERATORS) {
72
+ const compiler = config.createCompiler();
73
+ compiler.processApiSchema(schema.commands, schema.responses);
74
+
75
+ const outputPath = join(__dirname, config.outputFile);
76
+ const content = compiler.compile();
77
+ writeFileSync(outputPath, content);
78
+
79
+ console.log(`✓ ${config.name}: ${outputPath}`);
80
+ }
81
+
82
+ console.log('\nGeneration complete!');
83
+ }
84
+
85
+ // Run the generator
86
+ generate().catch(error => {
87
+ console.error('Generation failed:', error);
88
+ process.exit(1);
89
+ });