@aztec/bb.js 3.0.0-canary.a9708bd → 3.0.0-manual.20251030
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -79
- package/dest/browser/barretenberg/backend.d.ts +2 -2
- package/dest/browser/barretenberg/backend.d.ts.map +1 -1
- package/dest/browser/barretenberg/backend.js +40 -25
- package/dest/browser/barretenberg/index.d.ts +45 -44
- package/dest/browser/barretenberg/index.d.ts.map +1 -1
- package/dest/browser/barretenberg/index.js +131 -80
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +55 -14
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
- package/dest/browser/bb_backends/browser/index.d.ts +11 -0
- package/dest/browser/bb_backends/browser/index.d.ts.map +1 -0
- package/dest/browser/bb_backends/browser/index.js +39 -0
- package/dest/browser/bb_backends/index.d.ts +45 -0
- package/dest/browser/bb_backends/index.d.ts.map +1 -0
- package/dest/browser/bb_backends/index.js +15 -0
- package/dest/browser/bb_backends/interface.d.ts +33 -0
- package/dest/browser/bb_backends/interface.d.ts.map +1 -0
- package/dest/browser/bb_backends/interface.js +2 -0
- package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +15 -0
- package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
- package/dest/browser/bb_backends/sync_to_async_adapter.js +20 -0
- package/dest/browser/bb_backends/wasm.d.ts +49 -0
- package/dest/browser/bb_backends/wasm.d.ts.map +1 -0
- package/dest/browser/bb_backends/wasm.js +83 -0
- package/dest/browser/bbapi_exception.d.ts +7 -0
- package/dest/browser/bbapi_exception.d.ts.map +1 -0
- package/dest/browser/bbapi_exception.js +14 -0
- package/dest/browser/cbind/generate.js +94 -7
- package/dest/browser/cbind/generated/api_types.d.ts +1640 -227
- package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/browser/cbind/generated/api_types.js +2366 -478
- package/dest/browser/cbind/generated/async.d.ts +52 -13
- package/dest/browser/cbind/generated/async.d.ts.map +1 -1
- package/dest/browser/cbind/generated/async.js +586 -72
- package/dest/browser/cbind/generated/curve_constants.d.ts +45 -0
- package/dest/browser/cbind/generated/curve_constants.d.ts.map +1 -0
- package/dest/browser/cbind/generated/curve_constants.js +45 -0
- package/dest/browser/cbind/generated/sync.d.ts +53 -14
- package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
- package/dest/browser/cbind/generated/sync.js +548 -72
- package/dest/browser/cbind/schema_compiler.d.ts +2 -4
- package/dest/browser/cbind/schema_compiler.d.ts.map +1 -1
- package/dest/browser/cbind/schema_compiler.js +97 -181
- package/dest/browser/index.d.ts +4 -2
- package/dest/browser/index.d.ts.map +1 -1
- package/dest/browser/index.js +5 -3
- package/dest/browser/serialize/index.d.ts +0 -2
- package/dest/browser/serialize/index.d.ts.map +1 -1
- package/dest/browser/serialize/index.js +1 -3
- package/dest/browser/serialize/serialize.d.ts +0 -35
- package/dest/browser/serialize/serialize.d.ts.map +1 -1
- package/dest/browser/serialize/serialize.js +1 -68
- package/dest/browser/types/fields.d.ts +6 -26
- package/dest/browser/types/fields.d.ts.map +1 -1
- package/dest/browser/types/fields.js +16 -57
- package/dest/browser/types/index.d.ts +0 -3
- package/dest/browser/types/index.d.ts.map +1 -1
- package/dest/browser/types/index.js +1 -4
- package/dest/browser/types/point.d.ts +8 -6
- package/dest/browser/types/point.d.ts.map +1 -1
- package/dest/browser/types/point.js +12 -15
- package/dest/node/barretenberg/__snapshots__/pedersen.test.js.snap +2 -2
- package/dest/node/barretenberg/__snapshots__/poseidon.test.js.snap +3 -3
- package/dest/node/barretenberg/backend.d.ts +2 -2
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +40 -25
- package/dest/node/barretenberg/blake2s.test.js +21 -18
- package/dest/node/barretenberg/index.d.ts +45 -44
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +131 -80
- package/dest/node/barretenberg/pedersen.test.js +24 -17
- package/dest/node/barretenberg/poseidon.bench.test.d.ts +2 -0
- package/dest/node/barretenberg/poseidon.bench.test.d.ts.map +1 -0
- package/dest/node/barretenberg/poseidon.bench.test.js +217 -0
- package/dest/node/barretenberg/poseidon.test.js +15 -15
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +55 -14
- package/dest/node/barretenberg_wasm/index.test.js +11 -10
- package/dest/node/bb_backends/browser/index.d.ts +11 -0
- package/dest/node/bb_backends/browser/index.d.ts.map +1 -0
- package/dest/node/bb_backends/browser/index.js +39 -0
- package/dest/node/bb_backends/index.d.ts +45 -0
- package/dest/node/bb_backends/index.d.ts.map +1 -0
- package/dest/node/bb_backends/index.js +15 -0
- package/dest/node/bb_backends/interface.d.ts +33 -0
- package/dest/node/bb_backends/interface.d.ts.map +1 -0
- package/dest/node/bb_backends/interface.js +2 -0
- package/dest/node/bb_backends/node/index.d.ts +11 -0
- package/dest/node/bb_backends/node/index.d.ts.map +1 -0
- package/dest/node/bb_backends/node/index.js +80 -0
- package/dest/node/bb_backends/node/native_pipe.d.ts +25 -0
- package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -0
- package/dest/node/bb_backends/node/native_pipe.js +113 -0
- package/dest/node/bb_backends/node/native_shm.d.ts +28 -0
- package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -0
- package/dest/node/bb_backends/node/native_shm.js +150 -0
- package/dest/node/bb_backends/node/native_socket.d.ts +34 -0
- package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -0
- package/dest/node/bb_backends/node/native_socket.js +269 -0
- package/dest/node/bb_backends/node/platform.d.ts +27 -0
- package/dest/node/bb_backends/node/platform.d.ts.map +1 -0
- package/dest/node/bb_backends/node/platform.js +124 -0
- package/dest/node/bb_backends/sync_to_async_adapter.d.ts +15 -0
- package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
- package/dest/node/bb_backends/sync_to_async_adapter.js +20 -0
- package/dest/node/bb_backends/wasm.d.ts +49 -0
- package/dest/node/bb_backends/wasm.d.ts.map +1 -0
- package/dest/node/bb_backends/wasm.js +83 -0
- package/dest/node/bbapi_exception.d.ts +7 -0
- package/dest/node/bbapi_exception.d.ts.map +1 -0
- package/dest/node/bbapi_exception.js +14 -0
- package/dest/node/cbind/generate.js +94 -7
- package/dest/node/cbind/generated/api_types.d.ts +1640 -227
- package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node/cbind/generated/api_types.js +2366 -478
- package/dest/node/cbind/generated/async.d.ts +52 -13
- package/dest/node/cbind/generated/async.d.ts.map +1 -1
- package/dest/node/cbind/generated/async.js +586 -72
- package/dest/node/cbind/generated/curve_constants.d.ts +45 -0
- package/dest/node/cbind/generated/curve_constants.d.ts.map +1 -0
- package/dest/node/cbind/generated/curve_constants.js +45 -0
- package/dest/node/cbind/generated/sync.d.ts +53 -14
- package/dest/node/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node/cbind/generated/sync.js +548 -72
- package/dest/node/cbind/schema_compiler.d.ts +2 -4
- package/dest/node/cbind/schema_compiler.d.ts.map +1 -1
- package/dest/node/cbind/schema_compiler.js +97 -181
- package/dest/node/index.d.ts +4 -2
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +5 -3
- package/dest/node/serialize/index.d.ts +0 -2
- package/dest/node/serialize/index.d.ts.map +1 -1
- package/dest/node/serialize/index.js +1 -3
- package/dest/node/serialize/serialize.d.ts +0 -35
- package/dest/node/serialize/serialize.d.ts.map +1 -1
- package/dest/node/serialize/serialize.js +1 -68
- package/dest/node/types/fields.d.ts +6 -26
- package/dest/node/types/fields.d.ts.map +1 -1
- package/dest/node/types/fields.js +16 -57
- package/dest/node/types/index.d.ts +0 -3
- package/dest/node/types/index.d.ts.map +1 -1
- package/dest/node/types/index.js +1 -4
- package/dest/node/types/point.d.ts +8 -6
- package/dest/node/types/point.d.ts.map +1 -1
- package/dest/node/types/point.js +12 -15
- package/dest/node-cjs/barretenberg/backend.d.ts +2 -2
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +38 -23
- package/dest/node-cjs/barretenberg/blake2s.test.js +19 -16
- package/dest/node-cjs/barretenberg/index.d.ts +45 -44
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +137 -85
- package/dest/node-cjs/barretenberg/pedersen.test.js +24 -17
- package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/poseidon.bench.test.js +219 -0
- package/dest/node-cjs/barretenberg/poseidon.test.js +15 -15
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +55 -14
- package/dest/node-cjs/barretenberg_wasm/index.test.js +11 -10
- package/dest/node-cjs/bb_backends/browser/index.d.ts +11 -0
- package/dest/node-cjs/bb_backends/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/browser/index.js +43 -0
- package/dest/node-cjs/bb_backends/index.d.ts +45 -0
- package/dest/node-cjs/bb_backends/index.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/index.js +18 -0
- package/dest/node-cjs/bb_backends/interface.d.ts +33 -0
- package/dest/node-cjs/bb_backends/interface.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/interface.js +3 -0
- package/dest/node-cjs/bb_backends/node/index.d.ts +11 -0
- package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/index.js +84 -0
- package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +25 -0
- package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/native_pipe.js +117 -0
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts +28 -0
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/native_shm.js +154 -0
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts +34 -0
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/native_socket.js +274 -0
- package/dest/node-cjs/bb_backends/node/platform.d.ts +27 -0
- package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/platform.js +131 -0
- package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +15 -0
- package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +24 -0
- package/dest/node-cjs/bb_backends/wasm.d.ts +49 -0
- package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/wasm.js +88 -0
- package/dest/node-cjs/bbapi_exception.d.ts +7 -0
- package/dest/node-cjs/bbapi_exception.d.ts.map +1 -0
- package/dest/node-cjs/bbapi_exception.js +18 -0
- package/dest/node-cjs/cbind/generate.js +93 -6
- package/dest/node-cjs/cbind/generated/api_types.d.ts +1640 -227
- package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/api_types.js +2572 -516
- package/dest/node-cjs/cbind/generated/async.d.ts +52 -13
- package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/async.js +585 -71
- package/dest/node-cjs/cbind/generated/curve_constants.d.ts +45 -0
- package/dest/node-cjs/cbind/generated/curve_constants.d.ts.map +1 -0
- package/dest/node-cjs/cbind/generated/curve_constants.js +48 -0
- package/dest/node-cjs/cbind/generated/sync.d.ts +53 -14
- package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/sync.js +547 -71
- package/dest/node-cjs/cbind/schema_compiler.d.ts +2 -4
- package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -1
- package/dest/node-cjs/cbind/schema_compiler.js +97 -182
- package/dest/node-cjs/index.d.ts +4 -2
- package/dest/node-cjs/index.d.ts.map +1 -1
- package/dest/node-cjs/index.js +24 -9
- package/dest/node-cjs/serialize/index.d.ts +0 -2
- package/dest/node-cjs/serialize/index.d.ts.map +1 -1
- package/dest/node-cjs/serialize/index.js +1 -3
- package/dest/node-cjs/serialize/serialize.d.ts +0 -35
- package/dest/node-cjs/serialize/serialize.d.ts.map +1 -1
- package/dest/node-cjs/serialize/serialize.js +1 -79
- package/dest/node-cjs/types/fields.d.ts +6 -26
- package/dest/node-cjs/types/fields.d.ts.map +1 -1
- package/dest/node-cjs/types/fields.js +16 -58
- package/dest/node-cjs/types/index.d.ts +0 -3
- package/dest/node-cjs/types/index.d.ts.map +1 -1
- package/dest/node-cjs/types/index.js +1 -4
- package/dest/node-cjs/types/point.d.ts +8 -6
- package/dest/node-cjs/types/point.d.ts.map +1 -1
- package/dest/node-cjs/types/point.js +13 -16
- package/package.json +6 -6
- package/src/barretenberg/__snapshots__/pedersen.test.ts.snap +2 -2
- package/src/barretenberg/__snapshots__/poseidon.test.ts.snap +3 -3
- package/src/barretenberg/backend.ts +54 -42
- package/src/barretenberg/blake2s.test.ts +20 -21
- package/src/barretenberg/index.ts +137 -118
- package/src/barretenberg/pedersen.test.ts +23 -16
- package/src/barretenberg/poseidon.bench.test.ts +268 -0
- package/src/barretenberg/poseidon.test.ts +14 -14
- package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +3 -3
- package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +17 -9
- package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +67 -16
- package/src/barretenberg_wasm/index.test.ts +12 -11
- package/src/bb_backends/browser/index.ts +50 -0
- package/src/bb_backends/index.ts +49 -0
- package/src/bb_backends/interface.ts +35 -0
- package/src/bb_backends/node/index.ts +94 -0
- package/src/bb_backends/node/native_pipe.ts +127 -0
- package/src/bb_backends/node/native_shm.ts +171 -0
- package/src/bb_backends/node/native_socket.ts +312 -0
- package/src/bb_backends/node/platform.ts +151 -0
- package/src/bb_backends/sync_to_async_adapter.ts +21 -0
- package/src/bb_backends/wasm.ts +103 -0
- package/src/bbapi_exception.ts +13 -0
- package/src/cbind/README.md +1 -1
- package/src/cbind/generate.ts +99 -6
- package/src/cbind/schema_compiler.ts +156 -244
- package/src/index.ts +29 -1
- package/src/serialize/index.ts +0 -2
- package/src/serialize/serialize.ts +0 -82
- package/src/types/fields.ts +15 -64
- package/src/types/index.ts +0 -3
- package/src/types/point.ts +13 -19
- package/dest/browser/barretenberg_api/index.d.ts +0 -109
- package/dest/browser/barretenberg_api/index.d.ts.map +0 -1
- package/dest/browser/barretenberg_api/index.js +0 -699
- package/dest/browser/cbind/generated/native.d.ts +0 -31
- package/dest/browser/cbind/generated/native.d.ts.map +0 -1
- package/dest/browser/cbind/generated/native.js +0 -234
- package/dest/browser/serialize/buffer_reader.d.ts +0 -28
- package/dest/browser/serialize/buffer_reader.d.ts.map +0 -1
- package/dest/browser/serialize/buffer_reader.js +0 -66
- package/dest/browser/serialize/output_type.d.ts +0 -11
- package/dest/browser/serialize/output_type.d.ts.map +0 -1
- package/dest/browser/serialize/output_type.js +0 -44
- package/dest/browser/types/fixed_size_buffer.d.ts +0 -26
- package/dest/browser/types/fixed_size_buffer.d.ts.map +0 -1
- package/dest/browser/types/fixed_size_buffer.js +0 -51
- package/dest/browser/types/ptr.d.ts +0 -13
- package/dest/browser/types/ptr.d.ts.map +0 -1
- package/dest/browser/types/ptr.js +0 -19
- package/dest/browser/types/raw_buffer.d.ts +0 -3
- package/dest/browser/types/raw_buffer.d.ts.map +0 -1
- package/dest/browser/types/raw_buffer.js +0 -5
- package/dest/node/barretenberg/common.test.d.ts +0 -2
- package/dest/node/barretenberg/common.test.d.ts.map +0 -1
- package/dest/node/barretenberg/common.test.js +0 -20
- package/dest/node/barretenberg_api/index.d.ts +0 -109
- package/dest/node/barretenberg_api/index.d.ts.map +0 -1
- package/dest/node/barretenberg_api/index.js +0 -699
- package/dest/node/bindgen/function_declaration.d.ts +0 -11
- package/dest/node/bindgen/function_declaration.d.ts.map +0 -1
- package/dest/node/bindgen/function_declaration.js +0 -2
- package/dest/node/bindgen/index.d.ts +0 -2
- package/dest/node/bindgen/index.d.ts.map +0 -1
- package/dest/node/bindgen/index.js +0 -15
- package/dest/node/bindgen/mappings.d.ts +0 -4
- package/dest/node/bindgen/mappings.d.ts.map +0 -1
- package/dest/node/bindgen/mappings.js +0 -64
- package/dest/node/bindgen/rust.d.ts +0 -2
- package/dest/node/bindgen/rust.d.ts.map +0 -1
- package/dest/node/bindgen/rust.js +0 -43
- package/dest/node/bindgen/to_camel_case.d.ts +0 -2
- package/dest/node/bindgen/to_camel_case.d.ts.map +0 -1
- package/dest/node/bindgen/to_camel_case.js +0 -11
- package/dest/node/bindgen/typescript.d.ts +0 -2
- package/dest/node/bindgen/typescript.d.ts.map +0 -1
- package/dest/node/bindgen/typescript.js +0 -100
- package/dest/node/cbind/generated/native.d.ts +0 -31
- package/dest/node/cbind/generated/native.d.ts.map +0 -1
- package/dest/node/cbind/generated/native.js +0 -234
- package/dest/node/main.d.ts +0 -13
- package/dest/node/main.d.ts.map +0 -1
- package/dest/node/main.js +0 -459
- package/dest/node/serialize/buffer_reader.d.ts +0 -28
- package/dest/node/serialize/buffer_reader.d.ts.map +0 -1
- package/dest/node/serialize/buffer_reader.js +0 -66
- package/dest/node/serialize/output_type.d.ts +0 -11
- package/dest/node/serialize/output_type.d.ts.map +0 -1
- package/dest/node/serialize/output_type.js +0 -44
- package/dest/node/types/fixed_size_buffer.d.ts +0 -26
- package/dest/node/types/fixed_size_buffer.d.ts.map +0 -1
- package/dest/node/types/fixed_size_buffer.js +0 -51
- package/dest/node/types/ptr.d.ts +0 -13
- package/dest/node/types/ptr.d.ts.map +0 -1
- package/dest/node/types/ptr.js +0 -19
- package/dest/node/types/raw_buffer.d.ts +0 -3
- package/dest/node/types/raw_buffer.d.ts.map +0 -1
- package/dest/node/types/raw_buffer.js +0 -5
- package/dest/node-cjs/barretenberg/common.test.d.ts +0 -2
- package/dest/node-cjs/barretenberg/common.test.d.ts.map +0 -1
- package/dest/node-cjs/barretenberg/common.test.js +0 -22
- package/dest/node-cjs/barretenberg_api/index.d.ts +0 -109
- package/dest/node-cjs/barretenberg_api/index.d.ts.map +0 -1
- package/dest/node-cjs/barretenberg_api/index.js +0 -704
- package/dest/node-cjs/bindgen/function_declaration.d.ts +0 -11
- package/dest/node-cjs/bindgen/function_declaration.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/function_declaration.js +0 -3
- package/dest/node-cjs/bindgen/index.d.ts +0 -2
- package/dest/node-cjs/bindgen/index.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/index.js +0 -17
- package/dest/node-cjs/bindgen/mappings.d.ts +0 -4
- package/dest/node-cjs/bindgen/mappings.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/mappings.js +0 -69
- package/dest/node-cjs/bindgen/rust.d.ts +0 -2
- package/dest/node-cjs/bindgen/rust.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/rust.js +0 -47
- package/dest/node-cjs/bindgen/to_camel_case.d.ts +0 -2
- package/dest/node-cjs/bindgen/to_camel_case.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/to_camel_case.js +0 -14
- package/dest/node-cjs/bindgen/typescript.d.ts +0 -2
- package/dest/node-cjs/bindgen/typescript.d.ts.map +0 -1
- package/dest/node-cjs/bindgen/typescript.js +0 -104
- package/dest/node-cjs/cbind/generated/native.d.ts +0 -31
- package/dest/node-cjs/cbind/generated/native.d.ts.map +0 -1
- package/dest/node-cjs/cbind/generated/native.js +0 -238
- package/dest/node-cjs/main.d.ts +0 -13
- package/dest/node-cjs/main.d.ts.map +0 -1
- package/dest/node-cjs/main.js +0 -470
- package/dest/node-cjs/serialize/buffer_reader.d.ts +0 -28
- package/dest/node-cjs/serialize/buffer_reader.d.ts.map +0 -1
- package/dest/node-cjs/serialize/buffer_reader.js +0 -70
- package/dest/node-cjs/serialize/output_type.d.ts +0 -11
- package/dest/node-cjs/serialize/output_type.d.ts.map +0 -1
- package/dest/node-cjs/serialize/output_type.js +0 -51
- package/dest/node-cjs/types/fixed_size_buffer.d.ts +0 -26
- package/dest/node-cjs/types/fixed_size_buffer.d.ts.map +0 -1
- package/dest/node-cjs/types/fixed_size_buffer.js +0 -57
- package/dest/node-cjs/types/ptr.d.ts +0 -13
- package/dest/node-cjs/types/ptr.d.ts.map +0 -1
- package/dest/node-cjs/types/ptr.js +0 -23
- package/dest/node-cjs/types/raw_buffer.d.ts +0 -3
- package/dest/node-cjs/types/raw_buffer.d.ts.map +0 -1
- package/dest/node-cjs/types/raw_buffer.js +0 -9
- package/src/barretenberg/common.test.ts +0 -23
- package/src/barretenberg_api/index.ts +0 -1216
- package/src/bindgen/function_declaration.ts +0 -11
- package/src/bindgen/index.ts +0 -17
- package/src/bindgen/mappings.ts +0 -67
- package/src/bindgen/rust.ts +0 -52
- package/src/bindgen/to_camel_case.ts +0 -10
- package/src/bindgen/typescript.ts +0 -116
- package/src/main.ts +0 -534
- package/src/serialize/buffer_reader.ts +0 -85
- package/src/serialize/output_type.ts +0 -53
- package/src/types/fixed_size_buffer.ts +0 -59
- package/src/types/ptr.ts +0 -20
- package/src/types/raw_buffer.ts +0 -3
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import { BackendOptions, Barretenberg, CircuitOptions } from './index.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
ProofData,
|
|
5
|
-
reconstructHonkProof,
|
|
6
|
-
splitHonkProof,
|
|
7
|
-
PAIRING_POINTS_SIZE,
|
|
8
|
-
uint8ArrayToHex,
|
|
9
|
-
hexToUint8Array,
|
|
10
|
-
} from '../proof/index.js';
|
|
11
|
-
import { fromClientIVCProof, toClientIVCProof } from '../cbind/generated/api_types.js';
|
|
2
|
+
import { ProofData, uint8ArrayToHex, hexToUint8Array } from '../proof/index.js';
|
|
3
|
+
import { fromChonkProof, toChonkProof } from '../cbind/generated/api_types.js';
|
|
12
4
|
import { ungzip } from 'pako';
|
|
13
5
|
import { Buffer } from 'buffer';
|
|
14
6
|
import { Decoder, Encoder } from 'msgpackr';
|
|
@@ -45,12 +37,20 @@ export type UltraHonkBackendOptions = {
|
|
|
45
37
|
starknetZK?: boolean;
|
|
46
38
|
};
|
|
47
39
|
|
|
48
|
-
function getProofSettingsFromOptions(
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
function getProofSettingsFromOptions(options?: UltraHonkBackendOptions): {
|
|
41
|
+
ipaAccumulation: boolean;
|
|
42
|
+
oracleHashType: string;
|
|
43
|
+
disableZk: boolean;
|
|
44
|
+
optimizedSolidityVerifier: boolean;
|
|
45
|
+
} {
|
|
51
46
|
return {
|
|
52
47
|
ipaAccumulation: false,
|
|
53
|
-
oracleHashType:
|
|
48
|
+
oracleHashType:
|
|
49
|
+
options?.keccak || options?.keccakZK
|
|
50
|
+
? 'keccak'
|
|
51
|
+
: options?.starknet || options?.starknetZK
|
|
52
|
+
? 'starknet'
|
|
53
|
+
: 'poseidon2',
|
|
54
54
|
// TODO no current way to target non-zk poseidon2 hash
|
|
55
55
|
disableZk: options?.keccak || options?.starknet ? true : false,
|
|
56
56
|
optimizedSolidityVerifier: false,
|
|
@@ -75,7 +75,10 @@ export class UltraHonkVerifierBackend {
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
async verifyProof(
|
|
78
|
+
async verifyProof(
|
|
79
|
+
proofData: ProofData & { verificationKey: Uint8Array },
|
|
80
|
+
options?: UltraHonkBackendOptions,
|
|
81
|
+
): Promise<boolean> {
|
|
79
82
|
await this.instantiate();
|
|
80
83
|
|
|
81
84
|
const proofFrs: Uint8Array[] = [];
|
|
@@ -136,7 +139,7 @@ export class UltraHonkBackend {
|
|
|
136
139
|
bytecode: Buffer.from(this.acirUncompressedBytecode),
|
|
137
140
|
verificationKey: Buffer.from([]), // Empty VK - lower performance.
|
|
138
141
|
},
|
|
139
|
-
settings: getProofSettingsFromOptions(options)
|
|
142
|
+
settings: getProofSettingsFromOptions(options),
|
|
140
143
|
});
|
|
141
144
|
console.log(`Generated proof for circuit with ${publicInputs.length} public inputs and ${proof.length} fields.`);
|
|
142
145
|
|
|
@@ -164,7 +167,7 @@ export class UltraHonkBackend {
|
|
|
164
167
|
},
|
|
165
168
|
settings: getProofSettingsFromOptions(options),
|
|
166
169
|
});
|
|
167
|
-
const {verified} = await this.api.circuitVerify({
|
|
170
|
+
const { verified } = await this.api.circuitVerify({
|
|
168
171
|
verificationKey: vkResult.bytes,
|
|
169
172
|
publicInputs: proofData.publicInputs.map(hexToUint8Array),
|
|
170
173
|
proof: proofFrs,
|
|
@@ -187,10 +190,13 @@ export class UltraHonkBackend {
|
|
|
187
190
|
}
|
|
188
191
|
|
|
189
192
|
/** @description Returns a solidity verifier */
|
|
190
|
-
async getSolidityVerifier(vk?:
|
|
193
|
+
async getSolidityVerifier(vk: Uint8Array, options?: UltraHonkBackendOptions): Promise<string> {
|
|
191
194
|
await this.instantiate();
|
|
192
|
-
const
|
|
193
|
-
|
|
195
|
+
const result = await this.api.circuitWriteSolidityVerifier({
|
|
196
|
+
verificationKey: vk,
|
|
197
|
+
settings: getProofSettingsFromOptions(options),
|
|
198
|
+
});
|
|
199
|
+
return result.solidityCode;
|
|
194
200
|
}
|
|
195
201
|
|
|
196
202
|
// TODO(https://github.com/noir-lang/noir/issues/5661): Update this to handle Honk recursive aggregation in the browser once it is ready in the backend itself
|
|
@@ -233,7 +239,7 @@ export class UltraHonkBackend {
|
|
|
233
239
|
// We use an empty string for the vk hash here as it is unneeded as part of the recursive artifacts
|
|
234
240
|
// The user can be expected to hash the vk inside their circuit to check whether the vk is the circuit
|
|
235
241
|
// they expect
|
|
236
|
-
vkHash: uint8ArrayToHex(vkResult.hash)
|
|
242
|
+
vkHash: uint8ArrayToHex(vkResult.hash),
|
|
237
243
|
};
|
|
238
244
|
}
|
|
239
245
|
|
|
@@ -262,12 +268,12 @@ export class AztecClientBackend {
|
|
|
262
268
|
private async instantiate(): Promise<void> {
|
|
263
269
|
if (!this.api) {
|
|
264
270
|
const api = await Barretenberg.new(this.options);
|
|
265
|
-
await api.
|
|
271
|
+
await api.initSRSChonk();
|
|
266
272
|
this.api = api;
|
|
267
273
|
}
|
|
268
274
|
}
|
|
269
275
|
|
|
270
|
-
async prove(witnessBuf: Uint8Array[], vksBuf: Uint8Array[] = []): Promise<[Uint8Array, Uint8Array]> {
|
|
276
|
+
async prove(witnessBuf: Uint8Array[], vksBuf: Uint8Array[] = []): Promise<[Uint8Array[], Uint8Array, Uint8Array]> {
|
|
271
277
|
if (vksBuf.length !== 0 && this.acirBuf.length !== witnessBuf.length) {
|
|
272
278
|
throw new AztecClientBackendError('Witness and bytecodes must have the same stack depth!');
|
|
273
279
|
}
|
|
@@ -278,7 +284,7 @@ export class AztecClientBackend {
|
|
|
278
284
|
await this.instantiate();
|
|
279
285
|
|
|
280
286
|
// Queue IVC start with the number of circuits
|
|
281
|
-
this.api.
|
|
287
|
+
this.api.chonkStart({ numCircuits: this.acirBuf.length });
|
|
282
288
|
|
|
283
289
|
// Queue load and accumulate for each circuit
|
|
284
290
|
for (let i = 0; i < this.acirBuf.length; i++) {
|
|
@@ -288,45 +294,51 @@ export class AztecClientBackend {
|
|
|
288
294
|
const functionName = `unknown_wasm_${i}`;
|
|
289
295
|
|
|
290
296
|
// Load the circuit
|
|
291
|
-
this.api.
|
|
297
|
+
this.api.chonkLoad({
|
|
292
298
|
circuit: {
|
|
293
299
|
name: functionName,
|
|
294
300
|
bytecode: Buffer.from(bytecode),
|
|
295
301
|
verificationKey: Buffer.from(vk),
|
|
296
|
-
}
|
|
302
|
+
},
|
|
297
303
|
});
|
|
298
304
|
|
|
299
305
|
// Accumulate with witness
|
|
300
|
-
this.api.
|
|
306
|
+
this.api.chonkAccumulate({
|
|
301
307
|
witness: Buffer.from(witness),
|
|
302
308
|
});
|
|
303
|
-
|
|
304
309
|
}
|
|
305
310
|
|
|
306
|
-
|
|
307
|
-
|
|
308
311
|
// Generate the proof (and wait for all previous steps to finish)
|
|
309
|
-
const proveResult = await this.api.
|
|
312
|
+
const proveResult = await this.api.chonkProve({});
|
|
310
313
|
// The API currently expects a msgpack-encoded API.
|
|
311
|
-
const proof = new Encoder({useRecords: false}).encode(
|
|
314
|
+
const proof = new Encoder({ useRecords: false }).encode(fromChonkProof(proveResult.proof));
|
|
312
315
|
// Generate the VK
|
|
313
|
-
const vkResult = await this.api.
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
316
|
+
const vkResult = await this.api.chonkComputeIvcVk({
|
|
317
|
+
circuit: {
|
|
318
|
+
name: 'hiding',
|
|
319
|
+
bytecode: this.acirBuf[this.acirBuf.length - 1],
|
|
320
|
+
},
|
|
321
|
+
});
|
|
317
322
|
|
|
323
|
+
const proofFields = [
|
|
324
|
+
proveResult.proof.megaProof,
|
|
325
|
+
proveResult.proof.goblinProof.mergeProof,
|
|
326
|
+
proveResult.proof.goblinProof.eccvmProof.preIpaProof,
|
|
327
|
+
proveResult.proof.goblinProof.eccvmProof.ipaProof,
|
|
328
|
+
proveResult.proof.goblinProof.translatorProof,
|
|
329
|
+
].flat();
|
|
318
330
|
|
|
319
331
|
// Note: Verification may not work correctly until we properly serialize the proof
|
|
320
332
|
if (!(await this.verify(proof, vkResult.bytes))) {
|
|
321
|
-
throw new AztecClientBackendError('Failed to verify the private (
|
|
333
|
+
throw new AztecClientBackendError('Failed to verify the private (Chonk) transaction proof!');
|
|
322
334
|
}
|
|
323
|
-
return [proof, vkResult.bytes];
|
|
335
|
+
return [proofFields, proof, vkResult.bytes];
|
|
324
336
|
}
|
|
325
337
|
|
|
326
338
|
async verify(proof: Uint8Array, vk: Uint8Array): Promise<boolean> {
|
|
327
339
|
await this.instantiate();
|
|
328
|
-
const result = await this.api.
|
|
329
|
-
proof:
|
|
340
|
+
const result = await this.api.chonkVerify({
|
|
341
|
+
proof: toChonkProof(new Decoder({ useRecords: false }).decode(proof)),
|
|
330
342
|
vk: Buffer.from(vk),
|
|
331
343
|
});
|
|
332
344
|
return result.valid;
|
|
@@ -336,12 +348,12 @@ export class AztecClientBackend {
|
|
|
336
348
|
await this.instantiate();
|
|
337
349
|
const circuitSizes: number[] = [];
|
|
338
350
|
for (const buf of this.acirBuf) {
|
|
339
|
-
const gates = await this.api.
|
|
351
|
+
const gates = await this.api.chonkStats({
|
|
340
352
|
circuit: {
|
|
341
353
|
name: 'circuit',
|
|
342
354
|
bytecode: buf,
|
|
343
355
|
},
|
|
344
|
-
includeGatesPerOpcode: false
|
|
356
|
+
includeGatesPerOpcode: false,
|
|
345
357
|
});
|
|
346
358
|
circuitSizes.push(gates.circuitSize);
|
|
347
359
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { Barretenberg, BarretenbergSync } from './index.js';
|
|
2
|
-
import {
|
|
1
|
+
import { BackendType, Barretenberg, BarretenbergSync } from './index.js';
|
|
2
|
+
import { Fr } from '../types/index.js';
|
|
3
3
|
|
|
4
4
|
describe('blake2s async', () => {
|
|
5
5
|
let api: Barretenberg;
|
|
6
6
|
|
|
7
7
|
beforeAll(async () => {
|
|
8
|
-
|
|
8
|
+
// We're going to test over a worker backend to cover more code paths.
|
|
9
|
+
api = await Barretenberg.new({ threads: 1, backend: BackendType.WasmWorker });
|
|
9
10
|
});
|
|
10
11
|
|
|
11
12
|
afterAll(async () => {
|
|
@@ -14,14 +15,12 @@ describe('blake2s async', () => {
|
|
|
14
15
|
|
|
15
16
|
it('blake2s', async () => {
|
|
16
17
|
const input = Buffer.from('abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789');
|
|
17
|
-
const expected =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
);
|
|
23
|
-
const result = await api.blake2s(input);
|
|
24
|
-
expect(result).toEqual(expected);
|
|
18
|
+
const expected = new Uint8Array([
|
|
19
|
+
0x44, 0xdd, 0xdb, 0x39, 0xbd, 0xb2, 0xaf, 0x80, 0xc1, 0x47, 0x89, 0x4c, 0x1d, 0x75, 0x6a, 0xda, 0x3d, 0x1c, 0x2a,
|
|
20
|
+
0xc2, 0xb1, 0x00, 0x54, 0x1e, 0x04, 0xfe, 0x87, 0xb4, 0xa5, 0x9e, 0x12, 0x43,
|
|
21
|
+
]);
|
|
22
|
+
const response = await api.blake2s({ data: input });
|
|
23
|
+
expect(response.hash).toEqual(expected);
|
|
25
24
|
});
|
|
26
25
|
|
|
27
26
|
it('blake2sToField', async () => {
|
|
@@ -32,7 +31,8 @@ describe('blake2s async', () => {
|
|
|
32
31
|
0x2a, 0xc2, 0xb1, 0x00, 0x54, 0x1e, 0x04, 0xfe, 0x87, 0xb4, 0xa5, 0x9e, 0x12, 0x43,
|
|
33
32
|
]),
|
|
34
33
|
);
|
|
35
|
-
const
|
|
34
|
+
const response = await api.blake2sToField({ data: input });
|
|
35
|
+
const result = Fr.fromBuffer(response.field);
|
|
36
36
|
expect(result).toEqual(expected);
|
|
37
37
|
});
|
|
38
38
|
});
|
|
@@ -46,14 +46,12 @@ describe('blake2s sync', () => {
|
|
|
46
46
|
|
|
47
47
|
it('blake2s', () => {
|
|
48
48
|
const input = Buffer.from('abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789');
|
|
49
|
-
const expected =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
);
|
|
55
|
-
const result = api.blake2s(input);
|
|
56
|
-
expect(result).toEqual(expected);
|
|
49
|
+
const expected = new Uint8Array([
|
|
50
|
+
0x44, 0xdd, 0xdb, 0x39, 0xbd, 0xb2, 0xaf, 0x80, 0xc1, 0x47, 0x89, 0x4c, 0x1d, 0x75, 0x6a, 0xda, 0x3d, 0x1c, 0x2a,
|
|
51
|
+
0xc2, 0xb1, 0x00, 0x54, 0x1e, 0x04, 0xfe, 0x87, 0xb4, 0xa5, 0x9e, 0x12, 0x43,
|
|
52
|
+
]);
|
|
53
|
+
const response = api.blake2s({ data: input });
|
|
54
|
+
expect(response.hash).toEqual(expected);
|
|
57
55
|
});
|
|
58
56
|
|
|
59
57
|
it('blake2sToField', () => {
|
|
@@ -64,7 +62,8 @@ describe('blake2s sync', () => {
|
|
|
64
62
|
0x2a, 0xc2, 0xb1, 0x00, 0x54, 0x1e, 0x04, 0xfe, 0x87, 0xb4, 0xa5, 0x9e, 0x12, 0x43,
|
|
65
63
|
]),
|
|
66
64
|
);
|
|
67
|
-
const
|
|
65
|
+
const response = api.blake2sToField({ data: input });
|
|
66
|
+
const result = Fr.fromBuffer(response.field);
|
|
68
67
|
expect(result).toEqual(expected);
|
|
69
68
|
});
|
|
70
69
|
});
|
|
@@ -1,33 +1,13 @@
|
|
|
1
|
-
import { proxy } from 'comlink';
|
|
2
|
-
import { BarretenbergApi, BarretenbergApiSync } from '../barretenberg_api/index.js';
|
|
3
|
-
import { createMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js';
|
|
4
|
-
import { BarretenbergWasmMain, BarretenbergWasmMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/index.js';
|
|
5
|
-
import { getRemoteBarretenbergWasm } from '../barretenberg_wasm/helpers/index.js';
|
|
6
1
|
import { Crs, GrumpkinCrs } from '../crs/index.js';
|
|
7
|
-
import { RawBuffer } from '../types/raw_buffer.js';
|
|
8
|
-
import { fetchModuleAndThreads } from '../barretenberg_wasm/index.js';
|
|
9
2
|
import { createDebugLogger } from '../log/index.js';
|
|
10
3
|
import { AsyncApi } from '../cbind/generated/async.js';
|
|
11
|
-
import {
|
|
4
|
+
import { SyncApi } from '../cbind/generated/sync.js';
|
|
5
|
+
import { IMsgpackBackendSync, IMsgpackBackendAsync } from '../bb_backends/interface.js';
|
|
6
|
+
import { BackendOptions, BackendType } from '../bb_backends/index.js';
|
|
7
|
+
import { createAsyncBackend, createSyncBackend } from '../bb_backends/node/index.js';
|
|
12
8
|
|
|
13
9
|
export { UltraHonkBackend, UltraHonkVerifierBackend, AztecClientBackend } from './backend.js';
|
|
14
|
-
|
|
15
|
-
export type BackendOptions = {
|
|
16
|
-
/** @description Number of threads to run the backend worker on */
|
|
17
|
-
threads?: number;
|
|
18
|
-
|
|
19
|
-
/** @description Initial and Maximum memory to be alloted to the backend worker */
|
|
20
|
-
memory?: { initial?: number; maximum?: number };
|
|
21
|
-
|
|
22
|
-
/** @description Path to download CRS files */
|
|
23
|
-
crsPath?: string;
|
|
24
|
-
|
|
25
|
-
/** @description Path to download WASM files */
|
|
26
|
-
wasmPath?: string;
|
|
27
|
-
|
|
28
|
-
/** @description Logging function */
|
|
29
|
-
logger?: (msg: string) => void;
|
|
30
|
-
};
|
|
10
|
+
export * from '../bb_backends/index.js';
|
|
31
11
|
|
|
32
12
|
export type CircuitOptions = {
|
|
33
13
|
/** @description Whether to produce SNARK friendly proofs */
|
|
@@ -38,42 +18,46 @@ export type CircuitOptions = {
|
|
|
38
18
|
* The main class library consumers interact with.
|
|
39
19
|
* It extends the generated api, and provides a static constructor "new" to compose components.
|
|
40
20
|
*/
|
|
41
|
-
export class Barretenberg extends
|
|
21
|
+
export class Barretenberg extends AsyncApi {
|
|
42
22
|
private options: BackendOptions;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
private worker: any,
|
|
47
|
-
wasm: BarretenbergWasmMainWorker,
|
|
48
|
-
options: BackendOptions,
|
|
49
|
-
) {
|
|
50
|
-
super(wasm);
|
|
23
|
+
|
|
24
|
+
constructor(backend: IMsgpackBackendAsync, options: BackendOptions) {
|
|
25
|
+
super(backend);
|
|
51
26
|
this.options = options;
|
|
52
|
-
this.bbApi = new AsyncApi(wasm);
|
|
53
27
|
}
|
|
54
28
|
|
|
55
29
|
/**
|
|
56
30
|
* Constructs an instance of Barretenberg.
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
31
|
+
*
|
|
32
|
+
* If options.backend is set: uses that specific backend (throws if unavailable)
|
|
33
|
+
* If options.backend is unset: tries backends in order with fallback:
|
|
34
|
+
* 1. NativeSharedMemory (if bb binary available)
|
|
35
|
+
* 2. WasmWorker (in browser) or Wasm (in Node.js)
|
|
60
36
|
*/
|
|
61
37
|
static async new(options: BackendOptions = {}) {
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
proxy(options.logger ?? createDebugLogger('bb_wasm_async')),
|
|
69
|
-
options.memory?.initial,
|
|
70
|
-
options.memory?.maximum,
|
|
71
|
-
);
|
|
72
|
-
return new Barretenberg(worker, wasm, options);
|
|
73
|
-
}
|
|
38
|
+
const logger = options.logger ?? createDebugLogger('bb_async');
|
|
39
|
+
|
|
40
|
+
if (options.backend) {
|
|
41
|
+
// Explicit backend required - no fallback
|
|
42
|
+
return await createAsyncBackend(options.backend, options, logger);
|
|
43
|
+
}
|
|
74
44
|
|
|
75
|
-
|
|
76
|
-
|
|
45
|
+
if (typeof window === 'undefined') {
|
|
46
|
+
try {
|
|
47
|
+
return await createAsyncBackend(BackendType.NativeSharedMemory, options, logger);
|
|
48
|
+
} catch (err: any) {
|
|
49
|
+
logger(`Shared memory unavailable (${err.message}), falling back to other backends`);
|
|
50
|
+
try {
|
|
51
|
+
return await createAsyncBackend(BackendType.NativeUnixSocket, options, logger);
|
|
52
|
+
} catch (err: any) {
|
|
53
|
+
logger(`Unix socket unavailable (${err.message}), falling back to WASM`);
|
|
54
|
+
return await createAsyncBackend(BackendType.Wasm, options, logger);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
logger(`In browser, using WASM over worker backend.`);
|
|
59
|
+
return await createAsyncBackend(BackendType.WasmWorker, options, logger);
|
|
60
|
+
}
|
|
77
61
|
}
|
|
78
62
|
|
|
79
63
|
async initSRSForCircuitSize(circuitSize: number): Promise<void> {
|
|
@@ -81,18 +65,18 @@ export class Barretenberg extends BarretenbergApi {
|
|
|
81
65
|
const crs = await Crs.new(Math.max(circuitSize, minSRSSize) + 1, this.options.crsPath, this.options.logger);
|
|
82
66
|
// TODO(https://github.com/AztecProtocol/barretenberg/issues/1129): Do slab allocator initialization?
|
|
83
67
|
// await this.commonInitSlabAllocator(circuitSize);
|
|
84
|
-
await this.srsInitSrs(
|
|
68
|
+
await this.srsInitSrs({ pointsBuf: crs.getG1Data(), numPoints: crs.numPoints, g2Point: crs.getG2Data() });
|
|
85
69
|
}
|
|
86
70
|
|
|
87
|
-
async
|
|
71
|
+
async initSRSChonk(srsSize = this.getDefaultSrsSize()): Promise<void> {
|
|
88
72
|
// crsPath can be undefined
|
|
89
73
|
const crs = await Crs.new(srsSize + 1, this.options.crsPath, this.options.logger);
|
|
90
74
|
const grumpkinCrs = await GrumpkinCrs.new(2 ** 16 + 1, this.options.crsPath, this.options.logger);
|
|
91
75
|
|
|
92
76
|
// Load CRS into wasm global CRS state.
|
|
93
77
|
// TODO: Make RawBuffer be default behavior, and have a specific Vector type for when wanting length prefixed.
|
|
94
|
-
await this.srsInitSrs(
|
|
95
|
-
await this.srsInitGrumpkinSrs(
|
|
78
|
+
await this.srsInitSrs({ pointsBuf: crs.getG1Data(), numPoints: crs.numPoints, g2Point: crs.getG2Data() });
|
|
79
|
+
await this.srsInitGrumpkinSrs({ pointsBuf: grumpkinCrs.getG1Data(), numPoints: grumpkinCrs.numPoints });
|
|
96
80
|
}
|
|
97
81
|
|
|
98
82
|
getDefaultSrsSize(): number {
|
|
@@ -104,101 +88,136 @@ export class Barretenberg extends BarretenbergApi {
|
|
|
104
88
|
return 2 ** 20;
|
|
105
89
|
}
|
|
106
90
|
|
|
91
|
+
async acirGetCircuitSizes(
|
|
92
|
+
bytecode: Uint8Array,
|
|
93
|
+
recursive: boolean,
|
|
94
|
+
honkRecursion: boolean,
|
|
95
|
+
): Promise<[number, number]> {
|
|
96
|
+
const response = await this.circuitStats({
|
|
97
|
+
circuit: { name: '', bytecode, verificationKey: new Uint8Array() },
|
|
98
|
+
includeGatesPerOpcode: false,
|
|
99
|
+
settings: {
|
|
100
|
+
ipaAccumulation: false,
|
|
101
|
+
oracleHashType: honkRecursion ? 'poseidon2' : 'keccak',
|
|
102
|
+
disableZk: !recursive,
|
|
103
|
+
optimizedSolidityVerifier: false,
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
return [response.numGates, response.numGatesDyadic];
|
|
107
|
+
}
|
|
108
|
+
|
|
107
109
|
async acirInitSRS(bytecode: Uint8Array, recursive: boolean, honkRecursion: boolean): Promise<void> {
|
|
108
|
-
|
|
109
|
-
const [_total, subgroupSize] = await this.acirGetCircuitSizes(bytecode, recursive, honkRecursion);
|
|
110
|
+
const [_, subgroupSize] = await this.acirGetCircuitSizes(bytecode, recursive, honkRecursion);
|
|
110
111
|
return this.initSRSForCircuitSize(subgroupSize);
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
async destroy() {
|
|
114
|
-
|
|
115
|
-
await this.worker.terminate();
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
getWasm() {
|
|
119
|
-
return this.wasm;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Wrap ClientIVC methods used by AztecClientBackend and UltraHonkBackend
|
|
123
|
-
async clientIvcStart(command: ClientIvcStart) {
|
|
124
|
-
return this.bbApi.clientIvcStart(command);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
async clientIvcLoad(command: ClientIvcLoad) {
|
|
128
|
-
return this.bbApi.clientIvcLoad(command);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
async clientIvcAccumulate(command: ClientIvcAccumulate) {
|
|
132
|
-
return this.bbApi.clientIvcAccumulate(command);
|
|
115
|
+
return super.destroy();
|
|
133
116
|
}
|
|
134
117
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
async
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Initialize the singleton instance of Barretenberg.
|
|
120
|
+
* @param options Backend configuration options
|
|
121
|
+
*/
|
|
122
|
+
static async initSingleton(options: BackendOptions = {}) {
|
|
123
|
+
if (!barretenbergSingletonPromise) {
|
|
124
|
+
barretenbergSingletonPromise = Barretenberg.new(options);
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
barretenbergSingleton = await barretenbergSingletonPromise;
|
|
128
|
+
return barretenbergSingleton;
|
|
129
|
+
} catch (error) {
|
|
130
|
+
// If initialization fails, clear the singleton so next call can retry
|
|
131
|
+
barretenbergSingleton = undefined!;
|
|
132
|
+
barretenbergSingletonPromise = undefined!;
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
145
135
|
}
|
|
146
136
|
|
|
147
|
-
async
|
|
148
|
-
|
|
137
|
+
static async destroySingleton() {
|
|
138
|
+
if (barretenbergSingleton) {
|
|
139
|
+
await barretenbergSingleton.destroy();
|
|
140
|
+
barretenbergSingleton = undefined!;
|
|
141
|
+
barretenbergSingletonPromise = undefined!;
|
|
142
|
+
}
|
|
149
143
|
}
|
|
150
144
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
145
|
+
/**
|
|
146
|
+
* Get the singleton instance of Barretenberg.
|
|
147
|
+
* Must call initSingleton() first.
|
|
148
|
+
*/
|
|
149
|
+
static getSingleton() {
|
|
150
|
+
if (!barretenbergSingleton) {
|
|
151
|
+
throw new Error('First call Barretenberg.initSingleton() on @aztec/bb.js module.');
|
|
152
|
+
}
|
|
153
|
+
return barretenbergSingleton;
|
|
154
154
|
}
|
|
155
|
+
}
|
|
155
156
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
157
|
+
let barretenbergSingletonPromise: Promise<Barretenberg>;
|
|
158
|
+
let barretenbergSingleton: Barretenberg;
|
|
159
159
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
160
|
+
let barretenbergSyncSingletonPromise: Promise<BarretenbergSync>;
|
|
161
|
+
let barretenbergSyncSingleton: BarretenbergSync;
|
|
163
162
|
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
export class BarretenbergSync extends SyncApi {
|
|
164
|
+
constructor(backend: IMsgpackBackendSync) {
|
|
165
|
+
super(backend);
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
/**
|
|
169
|
+
* Create a new BarretenbergSync instance.
|
|
170
|
+
*
|
|
171
|
+
* If options.backend is set: uses that specific backend (throws if unavailable)
|
|
172
|
+
* If options.backend is unset: tries backends in order with fallback:
|
|
173
|
+
* 1. NativeSharedMem (if bb binary + NAPI module available)
|
|
174
|
+
* 2. Wasm
|
|
175
|
+
*
|
|
176
|
+
* Supported backends: Wasm, NativeSharedMem
|
|
177
|
+
* Not supported: WasmWorker (no workers in sync), NativeUnixSocket (async only)
|
|
178
|
+
*/
|
|
179
|
+
static async new(options: BackendOptions = {}) {
|
|
180
|
+
const logger = options.logger ?? createDebugLogger('bb_sync');
|
|
169
181
|
|
|
170
|
-
|
|
171
|
-
|
|
182
|
+
if (options.backend) {
|
|
183
|
+
return await createSyncBackend(options.backend, options, logger);
|
|
184
|
+
}
|
|
172
185
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
186
|
+
// Try native, fallback to WASM.
|
|
187
|
+
try {
|
|
188
|
+
return await createSyncBackend(BackendType.NativeSharedMemory, options, logger);
|
|
189
|
+
} catch (err: any) {
|
|
190
|
+
logger(`Shared memory unavailable (${err.message}), falling back to WASM`);
|
|
191
|
+
}
|
|
177
192
|
|
|
178
|
-
|
|
179
|
-
const wasm = new BarretenbergWasmMain();
|
|
180
|
-
const { module, threads } = await fetchModuleAndThreads(1, wasmPath, logger);
|
|
181
|
-
await wasm.init(module, threads, logger);
|
|
182
|
-
return new BarretenbergSync(wasm);
|
|
193
|
+
return await createSyncBackend(BackendType.Wasm, options, logger);
|
|
183
194
|
}
|
|
184
195
|
|
|
185
|
-
|
|
196
|
+
/**
|
|
197
|
+
* Initialize the singleton instance.
|
|
198
|
+
* @param options Backend configuration options
|
|
199
|
+
*/
|
|
200
|
+
static async initSingleton(options: BackendOptions = {}) {
|
|
186
201
|
if (!barretenbergSyncSingletonPromise) {
|
|
187
|
-
barretenbergSyncSingletonPromise = BarretenbergSync.new(
|
|
202
|
+
barretenbergSyncSingletonPromise = BarretenbergSync.new(options);
|
|
188
203
|
}
|
|
189
204
|
|
|
190
205
|
barretenbergSyncSingleton = await barretenbergSyncSingletonPromise;
|
|
191
206
|
return barretenbergSyncSingleton;
|
|
192
207
|
}
|
|
193
208
|
|
|
209
|
+
static destroySingleton() {
|
|
210
|
+
if (barretenbergSyncSingleton) {
|
|
211
|
+
barretenbergSyncSingleton.destroy();
|
|
212
|
+
barretenbergSyncSingleton = undefined!;
|
|
213
|
+
barretenbergSyncSingletonPromise = undefined!;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
194
217
|
static getSingleton() {
|
|
195
218
|
if (!barretenbergSyncSingleton) {
|
|
196
219
|
throw new Error('First call BarretenbergSync.initSingleton() on @aztec/bb.js module.');
|
|
197
220
|
}
|
|
198
221
|
return barretenbergSyncSingleton;
|
|
199
222
|
}
|
|
200
|
-
|
|
201
|
-
getWasm() {
|
|
202
|
-
return this.wasm;
|
|
203
|
-
}
|
|
204
223
|
}
|