@aztec/bb.js 0.0.1-alpha.6 → 0.0.1-commit.24de95ac
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 +55 -85
- package/build/amd64-linux/bb +0 -0
- package/build/amd64-linux/nodejs_module.node +0 -0
- package/build/amd64-macos/bb +0 -0
- package/build/amd64-macos/nodejs_module.node +0 -0
- package/build/arm64-linux/bb +0 -0
- package/build/arm64-linux/nodejs_module.node +0 -0
- package/build/arm64-macos/bb +0 -0
- package/build/arm64-macos/nodejs_module.node +0 -0
- package/dest/browser/async_map/index.d.ts.map +1 -0
- package/dest/{async_map → browser/async_map}/index.js +1 -1
- package/dest/browser/barretenberg/backend.d.ts +75 -0
- package/dest/browser/barretenberg/backend.d.ts.map +1 -0
- package/dest/browser/barretenberg/backend.js +301 -0
- package/dest/browser/barretenberg/index.d.ts +67 -0
- package/dest/browser/barretenberg/index.d.ts.map +1 -0
- package/dest/browser/barretenberg/index.js +191 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +45 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +125 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +11 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +12 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +21 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +70 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +53 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +170 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +11 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +12 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +29 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.js +40 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +3 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +2 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +3 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +2 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/index.js +36 -0
- package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/fetch_code/index.js +2 -0
- package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts +13 -0
- package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/helpers/browser/index.js +40 -0
- package/dest/browser/barretenberg_wasm/helpers/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/helpers/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/helpers/index.js +2 -0
- package/dest/browser/barretenberg_wasm/index.d.ts +5 -0
- package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/index.js +16 -0
- 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/bigint-array/index.d.ts +17 -0
- package/dest/browser/bigint-array/index.d.ts.map +1 -0
- package/dest/browser/bigint-array/index.js +37 -0
- package/dest/browser/cbind/generate.d.ts +5 -0
- package/dest/browser/cbind/generate.d.ts.map +1 -0
- package/dest/browser/cbind/generate.js +151 -0
- package/dest/browser/cbind/generated/api_types.d.ts +2051 -0
- package/dest/browser/cbind/generated/api_types.d.ts.map +1 -0
- package/dest/browser/cbind/generated/api_types.js +2747 -0
- package/dest/browser/cbind/generated/async.d.ts +62 -0
- package/dest/browser/cbind/generated/async.d.ts.map +1 -0
- package/dest/browser/cbind/generated/async.js +662 -0
- 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 +62 -0
- package/dest/browser/cbind/generated/sync.d.ts.map +1 -0
- package/dest/browser/cbind/generated/sync.js +609 -0
- package/dest/browser/cbind/schema_compiler.d.ts +68 -0
- package/dest/browser/cbind/schema_compiler.d.ts.map +1 -0
- package/dest/browser/cbind/schema_compiler.js +599 -0
- package/dest/{crs → browser/crs}/browser/cached_net_crs.d.ts +18 -0
- package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -0
- package/dest/browser/crs/browser/cached_net_crs.js +90 -0
- package/dest/browser/crs/browser/index.d.ts +2 -0
- package/dest/browser/crs/browser/index.d.ts.map +1 -0
- package/dest/browser/crs/browser/index.js +2 -0
- package/dest/browser/crs/index.d.ts +2 -0
- package/dest/browser/crs/index.d.ts.map +1 -0
- package/dest/browser/crs/index.js +2 -0
- package/dest/browser/crs/net_crs.d.ts +85 -0
- package/dest/browser/crs/net_crs.d.ts.map +1 -0
- package/dest/browser/crs/net_crs.js +136 -0
- package/dest/browser/index.d.ts +8 -0
- package/dest/browser/index.d.ts.map +1 -0
- package/dest/browser/index.js +8 -0
- package/dest/browser/log/browser/index.d.ts +6 -0
- package/dest/browser/log/browser/index.d.ts.map +1 -0
- package/dest/browser/log/browser/index.js +28 -0
- package/dest/browser/log/index.d.ts +2 -0
- package/dest/browser/log/index.d.ts.map +1 -0
- package/dest/browser/log/index.js +2 -0
- package/dest/browser/log/types.d.ts +6 -0
- package/dest/browser/log/types.d.ts.map +1 -0
- package/dest/browser/log/types.js +2 -0
- package/dest/browser/proof/index.d.ts +21 -0
- package/dest/browser/proof/index.d.ts.map +1 -0
- package/dest/browser/proof/index.js +63 -0
- package/dest/browser/random/browser/index.d.ts +2 -0
- package/dest/browser/random/browser/index.d.ts.map +1 -0
- package/dest/browser/random/browser/index.js +31 -0
- package/dest/browser/random/index.d.ts +2 -0
- package/dest/browser/random/index.d.ts.map +1 -0
- package/dest/browser/random/index.js +2 -0
- package/dest/browser/retry/index.d.ts +26 -0
- package/dest/browser/retry/index.d.ts.map +1 -0
- package/dest/browser/retry/index.js +50 -0
- package/dest/browser/serialize/index.d.ts +2 -0
- package/dest/browser/serialize/index.d.ts.map +1 -0
- package/dest/browser/serialize/index.js +2 -0
- package/dest/browser/serialize/serialize.d.ts +18 -0
- package/dest/browser/serialize/serialize.d.ts.map +1 -0
- package/dest/browser/serialize/serialize.js +72 -0
- package/dest/browser/types/fields.d.ts +23 -0
- package/dest/browser/types/fields.d.ts.map +1 -0
- package/dest/browser/types/fields.js +61 -0
- package/dest/browser/types/index.d.ts +3 -0
- package/dest/browser/types/index.d.ts.map +1 -0
- package/dest/browser/types/index.js +3 -0
- package/dest/browser/types/point.d.ts +18 -0
- package/dest/browser/types/point.d.ts.map +1 -0
- package/dest/browser/types/point.js +28 -0
- package/dest/node/async_map/index.d.ts +10 -0
- package/dest/node/async_map/index.d.ts.map +1 -0
- package/dest/node/async_map/index.js +16 -0
- package/dest/node/barretenberg/__snapshots__/pedersen.test.js.snap +156 -0
- package/dest/node/barretenberg/__snapshots__/poseidon.test.js.snap +40 -0
- package/dest/node/barretenberg/backend.d.ts +75 -0
- package/dest/node/barretenberg/backend.d.ts.map +1 -0
- package/dest/node/barretenberg/backend.js +301 -0
- package/dest/node/barretenberg/blake2s.test.d.ts +2 -0
- package/dest/node/barretenberg/blake2s.test.d.ts.map +1 -0
- package/dest/node/barretenberg/blake2s.test.js +57 -0
- package/dest/node/barretenberg/index.d.ts +67 -0
- package/dest/node/barretenberg/index.d.ts.map +1 -0
- package/dest/node/barretenberg/index.js +191 -0
- package/dest/node/barretenberg/pedersen.test.d.ts +2 -0
- package/dest/node/barretenberg/pedersen.test.d.ts.map +1 -0
- package/dest/node/barretenberg/pedersen.test.js +62 -0
- 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.d.ts +2 -0
- package/dest/node/barretenberg/poseidon.test.d.ts.map +1 -0
- package/dest/node/barretenberg/poseidon.test.js +35 -0
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +45 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +125 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +11 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +12 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +3 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +21 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +16 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +21 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +70 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +53 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +170 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +11 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +12 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +3 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +21 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +16 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +29 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.js +40 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +3 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +3 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +3 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.js +3 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +36 -0
- package/dest/node/barretenberg_wasm/fetch_code/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/fetch_code/index.js +2 -0
- package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/fetch_code/node/index.js +35 -0
- package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts +13 -0
- package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/browser/index.js +40 -0
- package/dest/node/barretenberg_wasm/helpers/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/helpers/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/index.js +2 -0
- package/dest/node/barretenberg_wasm/helpers/node/index.d.ts +22 -0
- package/dest/node/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/node/index.js +48 -0
- package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts +8 -0
- package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.js +28 -0
- package/dest/node/barretenberg_wasm/index.d.ts +5 -0
- package/dest/node/barretenberg_wasm/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/index.js +16 -0
- package/dest/node/barretenberg_wasm/index.test.d.ts +2 -0
- package/dest/node/barretenberg_wasm/index.test.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/index.test.js +39 -0
- 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/benchmark/index.d.ts +3 -0
- package/dest/node/benchmark/index.d.ts.map +1 -0
- package/dest/node/benchmark/index.js +25 -0
- package/dest/node/benchmark/timer.d.ts +34 -0
- package/dest/node/benchmark/timer.d.ts.map +1 -0
- package/dest/node/benchmark/timer.js +41 -0
- package/dest/node/bigint-array/index.d.ts +17 -0
- package/dest/node/bigint-array/index.d.ts.map +1 -0
- package/dest/node/bigint-array/index.js +37 -0
- package/dest/node/cbind/generate.d.ts +5 -0
- package/dest/node/cbind/generate.d.ts.map +1 -0
- package/dest/node/cbind/generate.js +151 -0
- package/dest/node/cbind/generated/api_types.d.ts +2051 -0
- package/dest/node/cbind/generated/api_types.d.ts.map +1 -0
- package/dest/node/cbind/generated/api_types.js +2747 -0
- package/dest/node/cbind/generated/async.d.ts +62 -0
- package/dest/node/cbind/generated/async.d.ts.map +1 -0
- package/dest/node/cbind/generated/async.js +662 -0
- 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 +62 -0
- package/dest/node/cbind/generated/sync.d.ts.map +1 -0
- package/dest/node/cbind/generated/sync.js +609 -0
- package/dest/node/cbind/schema_compiler.d.ts +68 -0
- package/dest/node/cbind/schema_compiler.d.ts.map +1 -0
- package/dest/node/cbind/schema_compiler.js +599 -0
- package/dest/node/crs/browser/cached_net_crs.d.ts +43 -0
- package/dest/node/crs/browser/cached_net_crs.d.ts.map +1 -0
- package/dest/node/crs/browser/cached_net_crs.js +90 -0
- package/dest/node/crs/browser/index.d.ts +2 -0
- package/dest/node/crs/browser/index.d.ts.map +1 -0
- package/dest/node/crs/browser/index.js +2 -0
- package/dest/node/crs/index.d.ts +2 -0
- package/dest/node/crs/index.d.ts.map +1 -0
- package/dest/node/crs/index.js +2 -0
- package/dest/node/crs/net_crs.d.ts +85 -0
- package/dest/node/crs/net_crs.d.ts.map +1 -0
- package/dest/node/crs/net_crs.js +136 -0
- package/dest/node/crs/node/index.d.ts +38 -0
- package/dest/node/crs/node/index.d.ts.map +1 -0
- package/dest/node/crs/node/index.js +102 -0
- package/dest/node/index.d.ts +8 -0
- package/dest/node/index.d.ts.map +1 -0
- package/dest/node/index.js +8 -0
- package/dest/node/log/browser/index.d.ts +6 -0
- package/dest/node/log/browser/index.d.ts.map +1 -0
- package/dest/node/log/browser/index.js +28 -0
- package/dest/node/log/index.d.ts +2 -0
- package/dest/node/log/index.d.ts.map +1 -0
- package/dest/node/log/index.js +2 -0
- package/dest/node/log/node/index.d.ts +6 -0
- package/dest/node/log/node/index.d.ts.map +1 -0
- package/dest/node/log/node/index.js +40 -0
- package/dest/node/log/types.d.ts +6 -0
- package/dest/node/log/types.d.ts.map +1 -0
- package/dest/node/log/types.js +2 -0
- package/dest/node/proof/index.d.ts +21 -0
- package/dest/node/proof/index.d.ts.map +1 -0
- package/dest/node/proof/index.js +63 -0
- package/dest/node/random/browser/index.d.ts +2 -0
- package/dest/node/random/browser/index.d.ts.map +1 -0
- package/dest/node/random/browser/index.js +31 -0
- package/dest/node/random/index.d.ts +2 -0
- package/dest/node/random/index.d.ts.map +1 -0
- package/dest/{random → node/random}/index.js +1 -1
- package/dest/node/random/node/index.d.ts +2 -0
- package/dest/node/random/node/index.d.ts.map +1 -0
- package/dest/node/random/node/index.js +5 -0
- package/dest/node/retry/index.d.ts +26 -0
- package/dest/node/retry/index.d.ts.map +1 -0
- package/dest/node/retry/index.js +50 -0
- package/dest/node/serialize/index.d.ts +2 -0
- package/dest/node/serialize/index.d.ts.map +1 -0
- package/dest/node/serialize/index.js +2 -0
- package/dest/node/serialize/serialize.d.ts +18 -0
- package/dest/node/serialize/serialize.d.ts.map +1 -0
- package/dest/node/serialize/serialize.js +72 -0
- package/dest/node/types/fields.d.ts +23 -0
- package/dest/node/types/fields.d.ts.map +1 -0
- package/dest/node/types/fields.js +61 -0
- package/dest/node/types/index.d.ts +3 -0
- package/dest/node/types/index.d.ts.map +1 -0
- package/dest/node/types/index.js +3 -0
- package/dest/node/types/point.d.ts +18 -0
- package/dest/node/types/point.d.ts.map +1 -0
- package/dest/node/types/point.js +28 -0
- package/dest/node-cjs/async_map/index.d.ts +10 -0
- package/dest/node-cjs/async_map/index.d.ts.map +1 -0
- package/dest/node-cjs/async_map/index.js +19 -0
- package/dest/node-cjs/barretenberg/backend.d.ts +75 -0
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/backend.js +308 -0
- package/dest/node-cjs/barretenberg/blake2s.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/blake2s.test.js +59 -0
- package/dest/node-cjs/barretenberg/index.d.ts +67 -0
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/index.js +200 -0
- package/dest/node-cjs/barretenberg/pedersen.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/pedersen.test.js +64 -0
- 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.d.ts +2 -0
- package/dest/node-cjs/barretenberg/poseidon.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/poseidon.test.js +37 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +45 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +129 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +14 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +14 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +3 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +24 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +18 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +21 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +74 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +53 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +174 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +14 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +14 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +3 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +24 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +18 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +29 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.js +44 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +3 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +6 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +3 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.js +6 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +40 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/index.js +5 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +39 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +13 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.js +50 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/index.js +5 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts +22 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/index.js +57 -0
- package/dest/{barretenberg_wasm → node-cjs/barretenberg_wasm/helpers}/node/node_endpoint.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.js +31 -0
- package/dest/node-cjs/barretenberg_wasm/index.d.ts +5 -0
- package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/index.js +19 -0
- package/dest/node-cjs/barretenberg_wasm/index.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/index.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/index.test.js +41 -0
- 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/benchmark/index.d.ts +3 -0
- package/dest/node-cjs/benchmark/index.d.ts.map +1 -0
- package/dest/node-cjs/benchmark/index.js +29 -0
- package/dest/node-cjs/benchmark/timer.d.ts +34 -0
- package/dest/node-cjs/benchmark/timer.d.ts.map +1 -0
- package/dest/node-cjs/benchmark/timer.js +45 -0
- package/dest/node-cjs/bigint-array/index.d.ts +17 -0
- package/dest/node-cjs/bigint-array/index.d.ts.map +1 -0
- package/dest/node-cjs/bigint-array/index.js +43 -0
- package/dest/node-cjs/cbind/generate.d.ts +5 -0
- package/dest/node-cjs/cbind/generate.d.ts.map +1 -0
- package/dest/node-cjs/cbind/generate.js +153 -0
- package/dest/node-cjs/cbind/generated/api_types.d.ts +2051 -0
- package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -0
- package/dest/node-cjs/cbind/generated/api_types.js +2989 -0
- package/dest/node-cjs/cbind/generated/async.d.ts +62 -0
- package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -0
- package/dest/node-cjs/cbind/generated/async.js +666 -0
- 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 +62 -0
- package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -0
- package/dest/node-cjs/cbind/generated/sync.js +613 -0
- package/dest/node-cjs/cbind/schema_compiler.d.ts +68 -0
- package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -0
- package/dest/node-cjs/cbind/schema_compiler.js +606 -0
- package/dest/node-cjs/crs/browser/cached_net_crs.d.ts +43 -0
- package/dest/node-cjs/crs/browser/cached_net_crs.d.ts.map +1 -0
- package/dest/node-cjs/crs/browser/cached_net_crs.js +95 -0
- package/dest/node-cjs/crs/browser/index.d.ts +2 -0
- package/dest/node-cjs/crs/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/crs/browser/index.js +7 -0
- package/dest/node-cjs/crs/index.d.ts +2 -0
- package/dest/node-cjs/crs/index.d.ts.map +1 -0
- package/dest/node-cjs/crs/index.js +7 -0
- package/dest/node-cjs/crs/net_crs.d.ts +85 -0
- package/dest/node-cjs/crs/net_crs.d.ts.map +1 -0
- package/dest/node-cjs/crs/net_crs.js +141 -0
- package/dest/node-cjs/crs/node/index.d.ts +38 -0
- package/dest/node-cjs/crs/node/index.d.ts.map +1 -0
- package/dest/node-cjs/crs/node/index.js +107 -0
- package/dest/node-cjs/index.d.ts +8 -0
- package/dest/node-cjs/index.d.ts.map +1 -0
- package/dest/node-cjs/index.js +37 -0
- package/dest/node-cjs/log/browser/index.d.ts +6 -0
- package/dest/node-cjs/log/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/log/browser/index.js +30 -0
- package/dest/node-cjs/log/index.d.ts +2 -0
- package/dest/node-cjs/log/index.d.ts.map +1 -0
- package/dest/node-cjs/log/index.js +8 -0
- package/dest/node-cjs/log/node/index.d.ts +6 -0
- package/dest/node-cjs/log/node/index.d.ts.map +1 -0
- package/dest/node-cjs/log/node/index.js +42 -0
- package/dest/node-cjs/log/types.d.ts +6 -0
- package/dest/node-cjs/log/types.d.ts.map +1 -0
- package/dest/node-cjs/log/types.js +3 -0
- package/dest/node-cjs/package.json +3 -0
- package/dest/node-cjs/proof/index.d.ts +21 -0
- package/dest/node-cjs/proof/index.d.ts.map +1 -0
- package/dest/node-cjs/proof/index.js +72 -0
- package/dest/node-cjs/random/browser/index.d.ts +2 -0
- package/dest/node-cjs/random/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/random/browser/index.js +35 -0
- package/dest/node-cjs/random/index.d.ts +2 -0
- package/dest/node-cjs/random/index.d.ts.map +1 -0
- package/dest/node-cjs/random/index.js +5 -0
- package/dest/node-cjs/random/node/index.d.ts +2 -0
- package/dest/node-cjs/random/node/index.d.ts.map +1 -0
- package/dest/node-cjs/random/node/index.js +8 -0
- package/dest/node-cjs/retry/index.d.ts +26 -0
- package/dest/node-cjs/retry/index.d.ts.map +1 -0
- package/dest/node-cjs/retry/index.js +55 -0
- package/dest/node-cjs/serialize/index.d.ts +2 -0
- package/dest/node-cjs/serialize/index.d.ts.map +1 -0
- package/dest/node-cjs/serialize/index.js +5 -0
- package/dest/node-cjs/serialize/serialize.d.ts +18 -0
- package/dest/node-cjs/serialize/serialize.d.ts.map +1 -0
- package/dest/node-cjs/serialize/serialize.js +82 -0
- package/dest/node-cjs/types/fields.d.ts +23 -0
- package/dest/node-cjs/types/fields.d.ts.map +1 -0
- package/dest/node-cjs/types/fields.js +65 -0
- package/dest/node-cjs/types/index.d.ts +3 -0
- package/dest/node-cjs/types/index.d.ts.map +1 -0
- package/dest/node-cjs/types/index.js +6 -0
- package/dest/node-cjs/types/point.d.ts +18 -0
- package/dest/node-cjs/types/point.d.ts.map +1 -0
- package/dest/node-cjs/types/point.js +32 -0
- package/package.json +57 -42
- package/src/barretenberg/__snapshots__/pedersen.test.ts.snap +156 -0
- package/src/barretenberg/__snapshots__/poseidon.test.ts.snap +40 -0
- package/src/barretenberg/backend.ts +390 -0
- package/src/barretenberg/blake2s.test.ts +69 -0
- package/src/barretenberg/index.ts +223 -0
- package/src/barretenberg/pedersen.test.ts +69 -0
- package/src/barretenberg/poseidon.bench.test.ts +268 -0
- package/src/barretenberg/poseidon.test.ts +39 -0
- package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +138 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +11 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +13 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +21 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +19 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +72 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +218 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +11 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +13 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +21 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +19 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +47 -0
- package/src/barretenberg_wasm/fetch_code/browser/barretenberg-threads.ts +3 -0
- package/src/barretenberg_wasm/fetch_code/browser/barretenberg.ts +3 -0
- package/src/barretenberg_wasm/fetch_code/browser/index.ts +34 -0
- package/src/barretenberg_wasm/fetch_code/index.ts +1 -0
- package/src/barretenberg_wasm/fetch_code/node/index.ts +34 -0
- package/src/barretenberg_wasm/fetch_code/wasm-module.d.ts +4 -0
- package/src/barretenberg_wasm/helpers/browser/index.ts +47 -0
- package/src/barretenberg_wasm/helpers/index.ts +1 -0
- package/src/barretenberg_wasm/{node → helpers/node}/index.ts +24 -15
- package/src/barretenberg_wasm/index.test.ts +46 -0
- package/src/barretenberg_wasm/index.ts +22 -1
- 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/benchmark/index.ts +26 -0
- package/src/benchmark/timer.ts +45 -0
- package/src/bigint-array/index.ts +39 -17
- package/src/cbind/README.md +1 -0
- package/src/cbind/generate.ts +182 -0
- package/src/cbind/generated/api_types.ts +4271 -0
- package/src/cbind/generated/async.ts +717 -0
- package/src/cbind/generated/curve_constants.ts +53 -0
- package/src/cbind/generated/sync.ts +663 -0
- package/src/cbind/schema_compiler.ts +745 -0
- package/src/crs/browser/cached_net_crs.ts +41 -2
- package/src/crs/browser/index.ts +1 -1
- package/src/crs/index.ts +1 -1
- package/src/crs/net_crs.ts +114 -19
- package/src/crs/node/index.ts +98 -20
- package/src/index.html +1 -1
- package/src/index.ts +41 -5
- package/src/log/browser/index.ts +35 -0
- package/src/log/index.ts +1 -0
- package/src/log/node/index.ts +52 -0
- package/src/log/types.ts +6 -0
- package/src/proof/index.ts +94 -0
- package/src/random/browser/index.ts +1 -1
- package/src/retry/index.ts +50 -0
- package/src/serialize/index.ts +0 -2
- package/src/serialize/serialize.ts +0 -82
- package/src/types/fields.ts +44 -65
- package/src/types/index.ts +0 -3
- package/src/types/point.ts +17 -20
- package/dest/async_map/index.d.ts.map +0 -1
- package/dest/barretenberg-threads.wasm +0 -0
- package/dest/barretenberg.wasm +0 -0
- package/dest/barretenberg_api/blake2s.test.d.ts.map +0 -1
- package/dest/barretenberg_api/blake2s.test.js +0 -30
- package/dest/barretenberg_api/common.test.d.ts +0 -2
- package/dest/barretenberg_api/common.test.d.ts.map +0 -1
- package/dest/barretenberg_api/common.test.js +0 -18
- package/dest/barretenberg_api/index.d.ts +0 -103
- package/dest/barretenberg_api/index.d.ts.map +0 -1
- package/dest/barretenberg_api/index.js +0 -379
- package/dest/barretenberg_api/pedersen.test.d.ts.map +0 -1
- package/dest/barretenberg_api/pedersen.test.js +0 -69
- package/dest/barretenberg_api/schnorr.test.d.ts +0 -2
- package/dest/barretenberg_api/schnorr.test.d.ts.map +0 -1
- package/dest/barretenberg_api/schnorr.test.js +0 -113
- package/dest/barretenberg_binder/heap_allocator.d.ts +0 -22
- package/dest/barretenberg_binder/heap_allocator.d.ts.map +0 -1
- package/dest/barretenberg_binder/heap_allocator.js +0 -59
- package/dest/barretenberg_binder/heap_allocator_sync.d.ts +0 -22
- package/dest/barretenberg_binder/heap_allocator_sync.d.ts.map +0 -1
- package/dest/barretenberg_binder/heap_allocator_sync.js +0 -58
- package/dest/barretenberg_binder/index.d.ts +0 -32
- package/dest/barretenberg_binder/index.d.ts.map +0 -1
- package/dest/barretenberg_binder/index.js +0 -73
- package/dest/barretenberg_wasm/barretenberg_wasm.d.ts +0 -50
- package/dest/barretenberg_wasm/barretenberg_wasm.d.ts.map +0 -1
- package/dest/barretenberg_wasm/barretenberg_wasm.js +0 -212
- package/dest/barretenberg_wasm/barretenberg_wasm.test.d.ts +0 -2
- package/dest/barretenberg_wasm/barretenberg_wasm.test.d.ts.map +0 -1
- package/dest/barretenberg_wasm/barretenberg_wasm.test.js +0 -43
- package/dest/barretenberg_wasm/browser/index.d.ts +0 -8
- package/dest/barretenberg_wasm/browser/index.d.ts.map +0 -1
- package/dest/barretenberg_wasm/browser/index.js +0 -26
- package/dest/barretenberg_wasm/browser/worker.d.ts +0 -2
- package/dest/barretenberg_wasm/browser/worker.d.ts.map +0 -1
- package/dest/barretenberg_wasm/browser/worker.js +0 -11
- package/dest/barretenberg_wasm/index.d.ts +0 -2
- package/dest/barretenberg_wasm/index.d.ts.map +0 -1
- package/dest/barretenberg_wasm/index.js +0 -2
- package/dest/barretenberg_wasm/node/index.d.ts +0 -17
- package/dest/barretenberg_wasm/node/index.d.ts.map +0 -1
- package/dest/barretenberg_wasm/node/index.js +0 -40
- package/dest/barretenberg_wasm/node/node_endpoint.d.ts.map +0 -1
- package/dest/barretenberg_wasm/node/node_endpoint.js +0 -28
- package/dest/barretenberg_wasm/node/worker.d.ts +0 -2
- package/dest/barretenberg_wasm/node/worker.d.ts.map +0 -1
- package/dest/barretenberg_wasm/node/worker.js +0 -9
- package/dest/barretenberg_wasm.js +0 -2
- package/dest/barretenberg_wasm.js.LICENSE.txt +0 -5
- package/dest/bigint-array/index.d.ts +0 -3
- package/dest/bigint-array/index.d.ts.map +0 -1
- package/dest/bigint-array/index.js +0 -21
- package/dest/bindgen/function_declaration.d.ts +0 -11
- package/dest/bindgen/function_declaration.d.ts.map +0 -1
- package/dest/bindgen/function_declaration.js +0 -2
- package/dest/bindgen/index.d.ts +0 -2
- package/dest/bindgen/index.d.ts.map +0 -1
- package/dest/bindgen/index.js +0 -15
- package/dest/bindgen/mappings.d.ts +0 -4
- package/dest/bindgen/mappings.d.ts.map +0 -1
- package/dest/bindgen/mappings.js +0 -63
- package/dest/bindgen/rust.d.ts +0 -2
- package/dest/bindgen/rust.d.ts.map +0 -1
- package/dest/bindgen/rust.js +0 -43
- package/dest/bindgen/to_camel_case.d.ts +0 -2
- package/dest/bindgen/to_camel_case.d.ts.map +0 -1
- package/dest/bindgen/to_camel_case.js +0 -11
- package/dest/bindgen/typescript.d.ts +0 -2
- package/dest/bindgen/typescript.d.ts.map +0 -1
- package/dest/bindgen/typescript.js +0 -80
- package/dest/crs/browser/cached_net_crs.d.ts.map +0 -1
- package/dest/crs/browser/cached_net_crs.js +0 -54
- package/dest/crs/browser/index.d.ts +0 -2
- package/dest/crs/browser/index.d.ts.map +0 -1
- package/dest/crs/browser/index.js +0 -2
- package/dest/crs/index.d.ts +0 -2
- package/dest/crs/index.d.ts.map +0 -1
- package/dest/crs/index.js +0 -2
- package/dest/crs/net_crs.d.ts +0 -36
- package/dest/crs/net_crs.d.ts.map +0 -1
- package/dest/crs/net_crs.js +0 -59
- package/dest/crs/node/file_crs.d.ts +0 -37
- package/dest/crs/node/file_crs.d.ts.map +0 -1
- package/dest/crs/node/file_crs.js +0 -51
- package/dest/crs/node/index.d.ts +0 -31
- package/dest/crs/node/index.d.ts.map +0 -1
- package/dest/crs/node/index.js +0 -41
- package/dest/examples/simple.rawtest.d.ts +0 -2
- package/dest/examples/simple.rawtest.d.ts.map +0 -1
- package/dest/examples/simple.rawtest.js +0 -29
- package/dest/examples/simple.test.d.ts +0 -2
- package/dest/examples/simple.test.d.ts.map +0 -1
- package/dest/examples/simple.test.js +0 -22
- package/dest/factory/index.d.ts +0 -21
- package/dest/factory/index.d.ts.map +0 -1
- package/dest/factory/index.js +0 -34
- package/dest/index.d.ts +0 -6
- package/dest/index.d.ts.map +0 -1
- package/dest/index.html +0 -1
- package/dest/index.js +0 -6
- package/dest/main.d.ts +0 -10
- package/dest/main.d.ts.map +0 -1
- package/dest/main.js +0 -280
- package/dest/random/browser/index.d.ts +0 -2
- package/dest/random/browser/index.d.ts.map +0 -1
- package/dest/random/browser/index.js +0 -31
- package/dest/random/index.d.ts.map +0 -1
- package/dest/random/node/index.d.ts +0 -2
- package/dest/random/node/index.d.ts.map +0 -1
- package/dest/random/node/index.js +0 -5
- package/dest/serialize/buffer_reader.d.ts +0 -28
- package/dest/serialize/buffer_reader.d.ts.map +0 -1
- package/dest/serialize/buffer_reader.js +0 -66
- package/dest/serialize/index.d.ts +0 -4
- package/dest/serialize/index.d.ts.map +0 -1
- package/dest/serialize/index.js +0 -4
- package/dest/serialize/output_type.d.ts +0 -11
- package/dest/serialize/output_type.d.ts.map +0 -1
- package/dest/serialize/output_type.js +0 -44
- package/dest/serialize/serialize.d.ts +0 -53
- package/dest/serialize/serialize.d.ts.map +0 -1
- package/dest/serialize/serialize.js +0 -139
- package/dest/simple_test.js +0 -2
- package/dest/simple_test.js.LICENSE.txt +0 -14
- package/dest/types/fields.d.ts +0 -33
- package/dest/types/fields.d.ts.map +0 -1
- package/dest/types/fields.js +0 -86
- package/dest/types/fixed_size_buffer.d.ts +0 -26
- package/dest/types/fixed_size_buffer.d.ts.map +0 -1
- package/dest/types/fixed_size_buffer.js +0 -54
- package/dest/types/index.d.ts +0 -6
- package/dest/types/index.d.ts.map +0 -1
- package/dest/types/index.js +0 -6
- package/dest/types/point.d.ts +0 -17
- package/dest/types/point.d.ts.map +0 -1
- package/dest/types/point.js +0 -32
- package/dest/types/ptr.d.ts +0 -13
- package/dest/types/ptr.d.ts.map +0 -1
- package/dest/types/ptr.js +0 -20
- package/dest/types/raw_buffer.d.ts +0 -3
- package/dest/types/raw_buffer.d.ts.map +0 -1
- package/dest/types/raw_buffer.js +0 -5
- package/src/barretenberg_api/blake2s.test.ts +0 -39
- package/src/barretenberg_api/common.test.ts +0 -21
- package/src/barretenberg_api/index.ts +0 -471
- package/src/barretenberg_api/pedersen.test.ts +0 -84
- package/src/barretenberg_api/schnorr.test.ts +0 -169
- package/src/barretenberg_binder/heap_allocator.ts +0 -62
- package/src/barretenberg_binder/heap_allocator_sync.ts +0 -61
- package/src/barretenberg_binder/index.ts +0 -76
- package/src/barretenberg_wasm/barretenberg_wasm.test.ts +0 -52
- package/src/barretenberg_wasm/barretenberg_wasm.ts +0 -246
- package/src/barretenberg_wasm/browser/index.ts +0 -32
- package/src/barretenberg_wasm/browser/worker.ts +0 -13
- package/src/barretenberg_wasm/node/worker.ts +0 -10
- package/src/bindgen/function_declaration.ts +0 -11
- package/src/bindgen/index.ts +0 -17
- package/src/bindgen/mappings.ts +0 -66
- package/src/bindgen/rust.ts +0 -52
- package/src/bindgen/to_camel_case.ts +0 -10
- package/src/bindgen/typescript.ts +0 -91
- package/src/crs/node/file_crs.ts +0 -60
- package/src/examples/simple.rawtest.ts +0 -37
- package/src/examples/simple.test.ts +0 -27
- package/src/factory/index.ts +0 -36
- package/src/main.ts +0 -324
- package/src/serialize/buffer_reader.ts +0 -82
- 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
- /package/dest/{async_map → browser/async_map}/index.d.ts +0 -0
- /package/dest/{random → browser/barretenberg_wasm/fetch_code}/index.d.ts +0 -0
- /package/dest/{barretenberg_api → node-cjs/barretenberg}/blake2s.test.d.ts +0 -0
- /package/dest/{barretenberg_api → node-cjs/barretenberg}/pedersen.test.d.ts +0 -0
- /package/src/barretenberg_wasm/{node → helpers/node}/node_endpoint.ts +0 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import { BackendOptions, Barretenberg, CircuitOptions } from './index.js';
|
|
2
|
+
import { ProofData, uint8ArrayToHex, hexToUint8Array } from '../proof/index.js';
|
|
3
|
+
import { fromChonkProof, toChonkProof } from '../cbind/generated/api_types.js';
|
|
4
|
+
import { ungzip } from 'pako';
|
|
5
|
+
import { Buffer } from 'buffer';
|
|
6
|
+
import { Decoder, Encoder } from 'msgpackr';
|
|
7
|
+
|
|
8
|
+
export class AztecClientBackendError extends Error {
|
|
9
|
+
constructor(message: string) {
|
|
10
|
+
super(message);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Options for the UltraHonkBackend.
|
|
16
|
+
*/
|
|
17
|
+
export type UltraHonkBackendOptions = {
|
|
18
|
+
/** Selecting this option will use the keccak hash function instead of poseidon
|
|
19
|
+
* when generating challenges in the proof.
|
|
20
|
+
* Use this when you want to verify the created proof on an EVM chain.
|
|
21
|
+
*/
|
|
22
|
+
keccak?: boolean;
|
|
23
|
+
/** Selecting this option will use the keccak hash function instead of poseidon
|
|
24
|
+
* when generating challenges in the proof.
|
|
25
|
+
* Use this when you want to verify the created proof on an EVM chain.
|
|
26
|
+
*/
|
|
27
|
+
keccakZK?: boolean;
|
|
28
|
+
/** Selecting this option will use the poseidon/stark252 hash function instead of poseidon
|
|
29
|
+
* when generating challenges in the proof.
|
|
30
|
+
* Use this when you want to verify the created proof on an Starknet chain with Garaga.
|
|
31
|
+
*/
|
|
32
|
+
starknet?: boolean;
|
|
33
|
+
/** Selecting this option will use the poseidon/stark252 hash function instead of poseidon
|
|
34
|
+
* when generating challenges in the proof.
|
|
35
|
+
* Use this when you want to verify the created proof on an Starknet chain with Garaga.
|
|
36
|
+
*/
|
|
37
|
+
starknetZK?: boolean;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
function getProofSettingsFromOptions(options?: UltraHonkBackendOptions): {
|
|
41
|
+
ipaAccumulation: boolean;
|
|
42
|
+
oracleHashType: string;
|
|
43
|
+
disableZk: boolean;
|
|
44
|
+
optimizedSolidityVerifier: boolean;
|
|
45
|
+
} {
|
|
46
|
+
return {
|
|
47
|
+
ipaAccumulation: false,
|
|
48
|
+
oracleHashType:
|
|
49
|
+
options?.keccak || options?.keccakZK
|
|
50
|
+
? 'keccak'
|
|
51
|
+
: options?.starknet || options?.starknetZK
|
|
52
|
+
? 'starknet'
|
|
53
|
+
: 'poseidon2',
|
|
54
|
+
// TODO no current way to target non-zk poseidon2 hash
|
|
55
|
+
disableZk: options?.keccak || options?.starknet ? true : false,
|
|
56
|
+
optimizedSolidityVerifier: false,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export class UltraHonkVerifierBackend {
|
|
61
|
+
protected api!: Barretenberg;
|
|
62
|
+
|
|
63
|
+
constructor(
|
|
64
|
+
protected backendOptions: BackendOptions = { threads: 1 },
|
|
65
|
+
protected circuitOptions: CircuitOptions = { recursive: false },
|
|
66
|
+
) {}
|
|
67
|
+
/** @ignore */
|
|
68
|
+
private async instantiate(): Promise<void> {
|
|
69
|
+
if (!this.api) {
|
|
70
|
+
const api = await Barretenberg.new(this.backendOptions);
|
|
71
|
+
const honkRecursion = true;
|
|
72
|
+
await api.initSRSForCircuitSize(0);
|
|
73
|
+
|
|
74
|
+
this.api = api;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async verifyProof(
|
|
79
|
+
proofData: ProofData & { verificationKey: Uint8Array },
|
|
80
|
+
options?: UltraHonkBackendOptions,
|
|
81
|
+
): Promise<boolean> {
|
|
82
|
+
await this.instantiate();
|
|
83
|
+
|
|
84
|
+
const proofFrs: Uint8Array[] = [];
|
|
85
|
+
for (let i = 0; i < proofData.proof.length; i += 32) {
|
|
86
|
+
proofFrs.push(proofData.proof.slice(i, i + 32));
|
|
87
|
+
}
|
|
88
|
+
const { verified } = await this.api.circuitVerify({
|
|
89
|
+
verificationKey: proofData.verificationKey,
|
|
90
|
+
publicInputs: proofData.publicInputs.map(hexToUint8Array),
|
|
91
|
+
proof: proofFrs,
|
|
92
|
+
settings: getProofSettingsFromOptions(options),
|
|
93
|
+
});
|
|
94
|
+
return verified;
|
|
95
|
+
}
|
|
96
|
+
destroy(): Promise<void> {
|
|
97
|
+
if (!this.api) {
|
|
98
|
+
return Promise.resolve();
|
|
99
|
+
}
|
|
100
|
+
return this.api.destroy();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export class UltraHonkBackend {
|
|
105
|
+
// These type assertions are used so that we don't
|
|
106
|
+
// have to initialize `api` in the constructor.
|
|
107
|
+
// These are initialized asynchronously in the `init` function,
|
|
108
|
+
// constructors cannot be asynchronous which is why we do this.
|
|
109
|
+
|
|
110
|
+
protected api!: Barretenberg;
|
|
111
|
+
protected acirUncompressedBytecode: Uint8Array;
|
|
112
|
+
|
|
113
|
+
constructor(
|
|
114
|
+
acirBytecode: string,
|
|
115
|
+
protected backendOptions: BackendOptions = { threads: 1 },
|
|
116
|
+
protected circuitOptions: CircuitOptions = { recursive: false },
|
|
117
|
+
) {
|
|
118
|
+
this.acirUncompressedBytecode = acirToUint8Array(acirBytecode);
|
|
119
|
+
}
|
|
120
|
+
/** @ignore */
|
|
121
|
+
private async instantiate(): Promise<void> {
|
|
122
|
+
if (!this.api) {
|
|
123
|
+
const api = await Barretenberg.new(this.backendOptions);
|
|
124
|
+
const honkRecursion = true;
|
|
125
|
+
await api.acirInitSRS(this.acirUncompressedBytecode, this.circuitOptions.recursive, honkRecursion);
|
|
126
|
+
|
|
127
|
+
this.api = api;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
async generateProof(compressedWitness: Uint8Array, options?: UltraHonkBackendOptions): Promise<ProofData> {
|
|
132
|
+
await this.instantiate();
|
|
133
|
+
|
|
134
|
+
const witness = ungzip(compressedWitness);
|
|
135
|
+
const { proof, publicInputs } = await this.api.circuitProve({
|
|
136
|
+
witness,
|
|
137
|
+
circuit: {
|
|
138
|
+
name: 'circuit',
|
|
139
|
+
bytecode: Buffer.from(this.acirUncompressedBytecode),
|
|
140
|
+
verificationKey: Buffer.from([]), // Empty VK - lower performance.
|
|
141
|
+
},
|
|
142
|
+
settings: getProofSettingsFromOptions(options),
|
|
143
|
+
});
|
|
144
|
+
console.log(`Generated proof for circuit with ${publicInputs.length} public inputs and ${proof.length} fields.`);
|
|
145
|
+
|
|
146
|
+
// We return ProofData as a flat buffer and an array of strings to match the current ProofData class.
|
|
147
|
+
const flatProof = new Uint8Array(proof.length * 32);
|
|
148
|
+
proof.forEach((fr, i) => {
|
|
149
|
+
flatProof.set(fr, i * 32);
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
return { proof: flatProof, publicInputs: publicInputs.map(uint8ArrayToHex) };
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
async verifyProof(proofData: ProofData, options?: UltraHonkBackendOptions): Promise<boolean> {
|
|
156
|
+
await this.instantiate();
|
|
157
|
+
|
|
158
|
+
const proofFrs: Uint8Array[] = [];
|
|
159
|
+
for (let i = 0; i < proofData.proof.length; i += 32) {
|
|
160
|
+
proofFrs.push(proofData.proof.slice(i, i + 32));
|
|
161
|
+
}
|
|
162
|
+
// TODO reconsider API - computing the VK at this point is not optimal
|
|
163
|
+
const vkResult = await this.api.circuitComputeVk({
|
|
164
|
+
circuit: {
|
|
165
|
+
name: 'circuit',
|
|
166
|
+
bytecode: this.acirUncompressedBytecode,
|
|
167
|
+
},
|
|
168
|
+
settings: getProofSettingsFromOptions(options),
|
|
169
|
+
});
|
|
170
|
+
const { verified } = await this.api.circuitVerify({
|
|
171
|
+
verificationKey: vkResult.bytes,
|
|
172
|
+
publicInputs: proofData.publicInputs.map(hexToUint8Array),
|
|
173
|
+
proof: proofFrs,
|
|
174
|
+
settings: getProofSettingsFromOptions(options),
|
|
175
|
+
});
|
|
176
|
+
return verified;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
async getVerificationKey(options?: UltraHonkBackendOptions): Promise<Uint8Array> {
|
|
180
|
+
await this.instantiate();
|
|
181
|
+
|
|
182
|
+
const vkResult = await this.api.circuitComputeVk({
|
|
183
|
+
circuit: {
|
|
184
|
+
name: 'circuit',
|
|
185
|
+
bytecode: Buffer.from(this.acirUncompressedBytecode),
|
|
186
|
+
},
|
|
187
|
+
settings: getProofSettingsFromOptions(options),
|
|
188
|
+
});
|
|
189
|
+
return vkResult.bytes;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** @description Returns a solidity verifier */
|
|
193
|
+
async getSolidityVerifier(vk: Uint8Array, options?: UltraHonkBackendOptions): Promise<string> {
|
|
194
|
+
await this.instantiate();
|
|
195
|
+
const result = await this.api.circuitWriteSolidityVerifier({
|
|
196
|
+
verificationKey: vk,
|
|
197
|
+
settings: getProofSettingsFromOptions(options),
|
|
198
|
+
});
|
|
199
|
+
return result.solidityCode;
|
|
200
|
+
}
|
|
201
|
+
|
|
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
|
|
203
|
+
async generateRecursiveProofArtifacts(
|
|
204
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
205
|
+
_proof: Uint8Array,
|
|
206
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
207
|
+
_numOfPublicInputs: number,
|
|
208
|
+
): Promise<{ proofAsFields: string[]; vkAsFields: string[]; vkHash: string }> {
|
|
209
|
+
await this.instantiate();
|
|
210
|
+
// TODO(https://github.com/noir-lang/noir/issues/5661): This needs to be updated to handle recursive aggregation.
|
|
211
|
+
// There is still a proofAsFields method but we could consider getting rid of it as the proof itself
|
|
212
|
+
// is a list of field elements.
|
|
213
|
+
// UltraHonk also does not have public inputs directly prepended to the proof and they are still instead
|
|
214
|
+
// inserted at an offset.
|
|
215
|
+
// const proof = reconstructProofWithPublicInputs(proofData);
|
|
216
|
+
// const proofAsFields = (await this.api.acirProofAsFieldsUltraHonk(proof)).slice(numOfPublicInputs);
|
|
217
|
+
|
|
218
|
+
// TODO: perhaps we should put this in the init function. Need to benchmark
|
|
219
|
+
// TODO how long it takes.
|
|
220
|
+
const vkResult = await this.api.circuitComputeVk({
|
|
221
|
+
circuit: {
|
|
222
|
+
name: 'circuit',
|
|
223
|
+
bytecode: Buffer.from(this.acirUncompressedBytecode),
|
|
224
|
+
},
|
|
225
|
+
settings: getProofSettingsFromOptions({}),
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
// Convert VK bytes to field elements (32-byte chunks)
|
|
229
|
+
const vkAsFields: string[] = [];
|
|
230
|
+
for (let i = 0; i < vkResult.bytes.length; i += 32) {
|
|
231
|
+
const chunk = vkResult.bytes.slice(i, i + 32);
|
|
232
|
+
vkAsFields.push(uint8ArrayToHex(chunk));
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
return {
|
|
236
|
+
// TODO(https://github.com/noir-lang/noir/issues/5661)
|
|
237
|
+
proofAsFields: [],
|
|
238
|
+
vkAsFields,
|
|
239
|
+
// We use an empty string for the vk hash here as it is unneeded as part of the recursive artifacts
|
|
240
|
+
// The user can be expected to hash the vk inside their circuit to check whether the vk is the circuit
|
|
241
|
+
// they expect
|
|
242
|
+
vkHash: uint8ArrayToHex(vkResult.hash),
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
async destroy(): Promise<void> {
|
|
247
|
+
if (!this.api) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
await this.api.destroy();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export class AztecClientBackend {
|
|
255
|
+
// These type assertions are used so that we don't
|
|
256
|
+
// have to initialize `api` in the constructor.
|
|
257
|
+
// These are initialized asynchronously in the `init` function,
|
|
258
|
+
// constructors cannot be asynchronous which is why we do this.
|
|
259
|
+
|
|
260
|
+
protected api!: Barretenberg;
|
|
261
|
+
|
|
262
|
+
constructor(
|
|
263
|
+
protected acirBuf: Uint8Array[],
|
|
264
|
+
protected options: BackendOptions = { threads: 1 },
|
|
265
|
+
) {}
|
|
266
|
+
|
|
267
|
+
/** @ignore */
|
|
268
|
+
private async instantiate(): Promise<void> {
|
|
269
|
+
if (!this.api) {
|
|
270
|
+
const api = await Barretenberg.new(this.options);
|
|
271
|
+
await api.initSRSChonk();
|
|
272
|
+
this.api = api;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
async prove(witnessBuf: Uint8Array[], vksBuf: Uint8Array[] = []): Promise<[Uint8Array[], Uint8Array, Uint8Array]> {
|
|
277
|
+
if (vksBuf.length !== 0 && this.acirBuf.length !== witnessBuf.length) {
|
|
278
|
+
throw new AztecClientBackendError('Witness and bytecodes must have the same stack depth!');
|
|
279
|
+
}
|
|
280
|
+
if (vksBuf.length !== 0 && vksBuf.length !== witnessBuf.length) {
|
|
281
|
+
// NOTE: we allow 0 as an explicit 'I have no VKs'. This is a deprecated feature.
|
|
282
|
+
throw new AztecClientBackendError('Witness and VKs must have the same stack depth!');
|
|
283
|
+
}
|
|
284
|
+
await this.instantiate();
|
|
285
|
+
|
|
286
|
+
// Queue IVC start with the number of circuits
|
|
287
|
+
this.api.chonkStart({ numCircuits: this.acirBuf.length });
|
|
288
|
+
|
|
289
|
+
// Queue load and accumulate for each circuit
|
|
290
|
+
for (let i = 0; i < this.acirBuf.length; i++) {
|
|
291
|
+
const bytecode = this.acirBuf[i];
|
|
292
|
+
const witness = witnessBuf[i] || Buffer.from([]);
|
|
293
|
+
const vk = vksBuf[i] || Buffer.from([]);
|
|
294
|
+
const functionName = `unknown_wasm_${i}`;
|
|
295
|
+
|
|
296
|
+
// Load the circuit
|
|
297
|
+
this.api.chonkLoad({
|
|
298
|
+
circuit: {
|
|
299
|
+
name: functionName,
|
|
300
|
+
bytecode: Buffer.from(bytecode),
|
|
301
|
+
verificationKey: Buffer.from(vk),
|
|
302
|
+
},
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
// Accumulate with witness
|
|
306
|
+
this.api.chonkAccumulate({
|
|
307
|
+
witness: Buffer.from(witness),
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Generate the proof (and wait for all previous steps to finish)
|
|
312
|
+
const proveResult = await this.api.chonkProve({});
|
|
313
|
+
// The API currently expects a msgpack-encoded API.
|
|
314
|
+
const proof = new Encoder({ useRecords: false }).encode(fromChonkProof(proveResult.proof));
|
|
315
|
+
// Generate the VK
|
|
316
|
+
const vkResult = await this.api.chonkComputeIvcVk({
|
|
317
|
+
circuit: {
|
|
318
|
+
name: 'hiding',
|
|
319
|
+
bytecode: this.acirBuf[this.acirBuf.length - 1],
|
|
320
|
+
},
|
|
321
|
+
});
|
|
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();
|
|
330
|
+
|
|
331
|
+
// Note: Verification may not work correctly until we properly serialize the proof
|
|
332
|
+
if (!(await this.verify(proof, vkResult.bytes))) {
|
|
333
|
+
throw new AztecClientBackendError('Failed to verify the private (Chonk) transaction proof!');
|
|
334
|
+
}
|
|
335
|
+
return [proofFields, proof, vkResult.bytes];
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
async verify(proof: Uint8Array, vk: Uint8Array): Promise<boolean> {
|
|
339
|
+
await this.instantiate();
|
|
340
|
+
const result = await this.api.chonkVerify({
|
|
341
|
+
proof: toChonkProof(new Decoder({ useRecords: false }).decode(proof)),
|
|
342
|
+
vk: Buffer.from(vk),
|
|
343
|
+
});
|
|
344
|
+
return result.valid;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
async gates(): Promise<number[]> {
|
|
348
|
+
await this.instantiate();
|
|
349
|
+
const circuitSizes: number[] = [];
|
|
350
|
+
for (const buf of this.acirBuf) {
|
|
351
|
+
const gates = await this.api.chonkStats({
|
|
352
|
+
circuit: {
|
|
353
|
+
name: 'circuit',
|
|
354
|
+
bytecode: buf,
|
|
355
|
+
},
|
|
356
|
+
includeGatesPerOpcode: false,
|
|
357
|
+
});
|
|
358
|
+
circuitSizes.push(gates.circuitSize);
|
|
359
|
+
}
|
|
360
|
+
return circuitSizes;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
async destroy(): Promise<void> {
|
|
364
|
+
if (!this.api) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
await this.api.destroy();
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// Converts bytecode from a base64 string to a Uint8Array
|
|
372
|
+
function acirToUint8Array(base64EncodedBytecode: string): Uint8Array {
|
|
373
|
+
const compressedByteCode = base64Decode(base64EncodedBytecode);
|
|
374
|
+
return ungzip(compressedByteCode);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// Since this is a simple function, we can use feature detection to
|
|
378
|
+
// see if we are in the nodeJs environment or the browser environment.
|
|
379
|
+
function base64Decode(input: string): Uint8Array {
|
|
380
|
+
if (typeof Buffer !== 'undefined') {
|
|
381
|
+
// Node.js environment
|
|
382
|
+
const b = Buffer.from(input, 'base64');
|
|
383
|
+
return new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
|
|
384
|
+
} else if (typeof atob === 'function') {
|
|
385
|
+
// Browser environment
|
|
386
|
+
return Uint8Array.from(atob(input), c => c.charCodeAt(0));
|
|
387
|
+
} else {
|
|
388
|
+
throw new Error('No implementation found for base64 decoding.');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { BackendType, Barretenberg, BarretenbergSync } from './index.js';
|
|
2
|
+
import { Fr } from '../types/index.js';
|
|
3
|
+
|
|
4
|
+
describe('blake2s async', () => {
|
|
5
|
+
let api: Barretenberg;
|
|
6
|
+
|
|
7
|
+
beforeAll(async () => {
|
|
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 });
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
afterAll(async () => {
|
|
13
|
+
await api.destroy();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('blake2s', async () => {
|
|
17
|
+
const input = Buffer.from('abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789');
|
|
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);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('blake2sToField', async () => {
|
|
27
|
+
const input = Buffer.from('abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789');
|
|
28
|
+
const expected = Fr.fromBufferReduce(
|
|
29
|
+
new Uint8Array([
|
|
30
|
+
0x44, 0xdd, 0xdb, 0x39, 0xbd, 0xb2, 0xaf, 0x80, 0xc1, 0x47, 0x89, 0x4c, 0x1d, 0x75, 0x6a, 0xda, 0x3d, 0x1c,
|
|
31
|
+
0x2a, 0xc2, 0xb1, 0x00, 0x54, 0x1e, 0x04, 0xfe, 0x87, 0xb4, 0xa5, 0x9e, 0x12, 0x43,
|
|
32
|
+
]),
|
|
33
|
+
);
|
|
34
|
+
const response = await api.blake2sToField({ data: input });
|
|
35
|
+
const result = Fr.fromBuffer(response.field);
|
|
36
|
+
expect(result).toEqual(expected);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe('blake2s sync', () => {
|
|
41
|
+
let api: BarretenbergSync;
|
|
42
|
+
|
|
43
|
+
beforeAll(async () => {
|
|
44
|
+
api = await BarretenbergSync.initSingleton();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('blake2s', () => {
|
|
48
|
+
const input = Buffer.from('abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789');
|
|
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);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('blake2sToField', () => {
|
|
58
|
+
const input = Buffer.from('abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789');
|
|
59
|
+
const expected = Fr.fromBufferReduce(
|
|
60
|
+
new Uint8Array([
|
|
61
|
+
0x44, 0xdd, 0xdb, 0x39, 0xbd, 0xb2, 0xaf, 0x80, 0xc1, 0x47, 0x89, 0x4c, 0x1d, 0x75, 0x6a, 0xda, 0x3d, 0x1c,
|
|
62
|
+
0x2a, 0xc2, 0xb1, 0x00, 0x54, 0x1e, 0x04, 0xfe, 0x87, 0xb4, 0xa5, 0x9e, 0x12, 0x43,
|
|
63
|
+
]),
|
|
64
|
+
);
|
|
65
|
+
const response = api.blake2sToField({ data: input });
|
|
66
|
+
const result = Fr.fromBuffer(response.field);
|
|
67
|
+
expect(result).toEqual(expected);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { Crs, GrumpkinCrs } from '../crs/index.js';
|
|
2
|
+
import { createDebugLogger } from '../log/index.js';
|
|
3
|
+
import { AsyncApi } from '../cbind/generated/async.js';
|
|
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';
|
|
8
|
+
|
|
9
|
+
export { UltraHonkBackend, UltraHonkVerifierBackend, AztecClientBackend } from './backend.js';
|
|
10
|
+
export * from '../bb_backends/index.js';
|
|
11
|
+
|
|
12
|
+
export type CircuitOptions = {
|
|
13
|
+
/** @description Whether to produce SNARK friendly proofs */
|
|
14
|
+
recursive: boolean;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The main class library consumers interact with.
|
|
19
|
+
* It extends the generated api, and provides a static constructor "new" to compose components.
|
|
20
|
+
*/
|
|
21
|
+
export class Barretenberg extends AsyncApi {
|
|
22
|
+
private options: BackendOptions;
|
|
23
|
+
|
|
24
|
+
constructor(backend: IMsgpackBackendAsync, options: BackendOptions) {
|
|
25
|
+
super(backend);
|
|
26
|
+
this.options = options;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Constructs an instance of Barretenberg.
|
|
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)
|
|
36
|
+
*/
|
|
37
|
+
static async new(options: BackendOptions = {}) {
|
|
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
|
+
}
|
|
44
|
+
|
|
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
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async initSRSForCircuitSize(circuitSize: number): Promise<void> {
|
|
64
|
+
const minSRSSize = 2 ** 9; // 2**9 is the dyadic size for the SmallSubgroupIPA MSM.
|
|
65
|
+
const crs = await Crs.new(Math.max(circuitSize, minSRSSize) + 1, this.options.crsPath, this.options.logger);
|
|
66
|
+
// TODO(https://github.com/AztecProtocol/barretenberg/issues/1129): Do slab allocator initialization?
|
|
67
|
+
// await this.commonInitSlabAllocator(circuitSize);
|
|
68
|
+
await this.srsInitSrs({ pointsBuf: crs.getG1Data(), numPoints: crs.numPoints, g2Point: crs.getG2Data() });
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async initSRSChonk(srsSize = this.getDefaultSrsSize()): Promise<void> {
|
|
72
|
+
// crsPath can be undefined
|
|
73
|
+
const crs = await Crs.new(srsSize + 1, this.options.crsPath, this.options.logger);
|
|
74
|
+
const grumpkinCrs = await GrumpkinCrs.new(2 ** 16 + 1, this.options.crsPath, this.options.logger);
|
|
75
|
+
|
|
76
|
+
// Load CRS into wasm global CRS state.
|
|
77
|
+
// TODO: Make RawBuffer be default behavior, and have a specific Vector type for when wanting length prefixed.
|
|
78
|
+
await this.srsInitSrs({ pointsBuf: crs.getG1Data(), numPoints: crs.numPoints, g2Point: crs.getG2Data() });
|
|
79
|
+
await this.srsInitGrumpkinSrs({ pointsBuf: grumpkinCrs.getG1Data(), numPoints: grumpkinCrs.numPoints });
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
getDefaultSrsSize(): number {
|
|
83
|
+
// iOS browser is very aggressive with memory. Check if running in browser and on iOS
|
|
84
|
+
// We expect the mobile iOS browser to kill us >=1GB, so no real use in using a larger SRS.
|
|
85
|
+
if (typeof window !== 'undefined' && /iPad|iPhone/.test(navigator.userAgent)) {
|
|
86
|
+
return 2 ** 18;
|
|
87
|
+
}
|
|
88
|
+
return 2 ** 20;
|
|
89
|
+
}
|
|
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
|
+
|
|
109
|
+
async acirInitSRS(bytecode: Uint8Array, recursive: boolean, honkRecursion: boolean): Promise<void> {
|
|
110
|
+
const [_, subgroupSize] = await this.acirGetCircuitSizes(bytecode, recursive, honkRecursion);
|
|
111
|
+
return this.initSRSForCircuitSize(subgroupSize);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
async destroy() {
|
|
115
|
+
return super.destroy();
|
|
116
|
+
}
|
|
117
|
+
|
|
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
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
static async destroySingleton() {
|
|
138
|
+
if (barretenbergSingleton) {
|
|
139
|
+
await barretenbergSingleton.destroy();
|
|
140
|
+
barretenbergSingleton = undefined!;
|
|
141
|
+
barretenbergSingletonPromise = undefined!;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
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
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
let barretenbergSingletonPromise: Promise<Barretenberg>;
|
|
158
|
+
let barretenbergSingleton: Barretenberg;
|
|
159
|
+
|
|
160
|
+
let barretenbergSyncSingletonPromise: Promise<BarretenbergSync>;
|
|
161
|
+
let barretenbergSyncSingleton: BarretenbergSync;
|
|
162
|
+
|
|
163
|
+
export class BarretenbergSync extends SyncApi {
|
|
164
|
+
constructor(backend: IMsgpackBackendSync) {
|
|
165
|
+
super(backend);
|
|
166
|
+
}
|
|
167
|
+
|
|
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');
|
|
181
|
+
|
|
182
|
+
if (options.backend) {
|
|
183
|
+
return await createSyncBackend(options.backend, options, logger);
|
|
184
|
+
}
|
|
185
|
+
|
|
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
|
+
}
|
|
192
|
+
|
|
193
|
+
return await createSyncBackend(BackendType.Wasm, options, logger);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Initialize the singleton instance.
|
|
198
|
+
* @param options Backend configuration options
|
|
199
|
+
*/
|
|
200
|
+
static async initSingleton(options: BackendOptions = {}) {
|
|
201
|
+
if (!barretenbergSyncSingletonPromise) {
|
|
202
|
+
barretenbergSyncSingletonPromise = BarretenbergSync.new(options);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
barretenbergSyncSingleton = await barretenbergSyncSingletonPromise;
|
|
206
|
+
return barretenbergSyncSingleton;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
static destroySingleton() {
|
|
210
|
+
if (barretenbergSyncSingleton) {
|
|
211
|
+
barretenbergSyncSingleton.destroy();
|
|
212
|
+
barretenbergSyncSingleton = undefined!;
|
|
213
|
+
barretenbergSyncSingletonPromise = undefined!;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
static getSingleton() {
|
|
218
|
+
if (!barretenbergSyncSingleton) {
|
|
219
|
+
throw new Error('First call BarretenbergSync.initSingleton() on @aztec/bb.js module.');
|
|
220
|
+
}
|
|
221
|
+
return barretenbergSyncSingleton;
|
|
222
|
+
}
|
|
223
|
+
}
|