@aztec/bb.js 0.5.0 → 0.5.1
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 +29 -24
- package/dest/browser/barretenberg/index.d.ts +20 -0
- package/dest/browser/barretenberg/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_api/index.d.ts +1 -51
- package/dest/browser/barretenberg_api/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_binder/heap_allocator.d.ts +1 -1
- package/dest/browser/barretenberg_binder/heap_allocator.d.ts.map +1 -1
- package/dest/browser/barretenberg_binder/index.d.ts +1 -7
- package/dest/browser/barretenberg_binder/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +40 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -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/main.worker.d.ts +3 -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/node/index.d.ts +4 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +37 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +4 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +28 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/fetch_code/node/index.d.ts +3 -0
- package/dest/browser/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts +6 -0
- package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -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/{node/barretenberg_wasm → browser/barretenberg_wasm/helpers}/node/index.d.ts +7 -5
- package/dest/browser/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/{node → helpers/node}/node_endpoint.d.ts +2 -2
- package/dest/browser/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/index.d.ts +13 -1
- package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -1
- package/dest/browser/crs/browser/cached_net_crs.d.ts +1 -1
- package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -1
- package/dest/browser/crs/index.d.ts +1 -1
- package/dest/browser/crs/index.d.ts.map +1 -1
- package/dest/browser/index.d.ts +2 -4
- package/dest/browser/index.d.ts.map +1 -1
- package/dest/browser/index.js +2 -6
- package/dest/browser/index.js.LICENSE.txt +14 -0
- package/dest/browser/index.worker.js.LICENSE.txt +5 -0
- package/dest/browser/index.worker.worker.js.LICENSE.txt +5 -0
- package/dest/browser/random/index.d.ts +1 -1
- package/dest/browser/random/index.d.ts.map +1 -1
- package/dest/browser/types/index.d.ts +1 -1
- package/dest/browser/types/index.d.ts.map +1 -1
- package/dest/{node/types/node → browser/types}/point.d.ts +2 -2
- package/dest/browser/types/point.d.ts.map +1 -0
- package/dest/node/barretenberg/index.d.ts +20 -0
- package/dest/node/barretenberg/index.d.ts.map +1 -0
- package/dest/node/barretenberg/index.js +38 -0
- package/dest/node/barretenberg-threads.wasm +0 -0
- package/dest/node/barretenberg_api/blake2s.test.js +7 -7
- package/dest/node/barretenberg_api/common.test.js +3 -3
- package/dest/node/barretenberg_api/index.d.ts +1 -51
- package/dest/node/barretenberg_api/index.d.ts.map +1 -1
- package/dest/node/barretenberg_api/index.js +1 -189
- package/dest/node/barretenberg_api/pedersen.test.js +29 -29
- package/dest/node/barretenberg_api/schnorr.test.js +37 -36
- package/dest/node/barretenberg_binder/heap_allocator.d.ts +1 -1
- package/dest/node/barretenberg_binder/heap_allocator.d.ts.map +1 -1
- package/dest/node/barretenberg_binder/index.d.ts +1 -7
- package/dest/node/barretenberg_binder/index.d.ts.map +1 -1
- package/dest/node/barretenberg_binder/index.js +10 -30
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +40 -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 +123 -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 +10 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +3 -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 +4 -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 +8 -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 +9 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +37 -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 +83 -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 +10 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +3 -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 +4 -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 +8 -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 +9 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +28 -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/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 +9 -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 +3 -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 +9 -0
- package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts +6 -0
- package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/browser/index.js +18 -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/{browser/barretenberg_wasm → node/barretenberg_wasm/helpers}/node/index.d.ts +7 -5
- package/dest/node/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/node/index.js +36 -0
- package/dest/node/barretenberg_wasm/{node → helpers/node}/node_endpoint.d.ts +2 -2
- 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 +13 -1
- package/dest/node/barretenberg_wasm/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/index.js +19 -2
- 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 +38 -0
- package/dest/node/bindgen/typescript.d.ts.map +1 -1
- package/dest/node/bindgen/typescript.js +2 -35
- package/dest/node/crs/browser/cached_net_crs.d.ts +1 -1
- package/dest/node/crs/browser/cached_net_crs.d.ts.map +1 -1
- package/dest/node/crs/browser/cached_net_crs.js +2 -4
- package/dest/node/crs/index.d.ts.map +1 -1
- package/dest/node/crs/index.js +1 -1
- package/dest/node/examples/simple.rawtest.d.ts +2 -0
- package/dest/node/examples/simple.rawtest.d.ts.map +1 -0
- package/dest/node/examples/simple.rawtest.js +29 -0
- package/dest/node/examples/simple.test.js +5 -5
- package/dest/node/index.d.ts +2 -4
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +3 -5
- package/dest/node/info.json +22 -0
- package/dest/node/main.d.ts +2 -1
- package/dest/node/main.d.ts.map +1 -1
- package/dest/node/main.js +46 -26
- package/dest/node/random/index.d.ts.map +1 -1
- package/dest/node/random/index.js +1 -1
- package/dest/node/types/fields.js +5 -3
- package/dest/node/types/fixed_size_buffer.js +7 -4
- package/dest/node/types/index.d.ts +1 -1
- package/dest/node/types/index.d.ts.map +1 -1
- package/dest/node/types/index.js +2 -2
- package/dest/{browser/types/node → node/types}/point.d.ts +2 -2
- package/dest/node/types/point.d.ts.map +1 -0
- package/dest/node/types/point.js +32 -0
- package/dest/node/types/ptr.js +3 -2
- package/package.json +35 -27
- package/src/barretenberg/index.ts +42 -0
- package/src/barretenberg_api/blake2s.test.ts +7 -8
- package/src/barretenberg_api/common.test.ts +3 -3
- package/src/barretenberg_api/index.ts +1 -306
- package/src/barretenberg_api/pedersen.test.ts +31 -30
- package/src/barretenberg_api/schnorr.test.ts +73 -59
- package/src/barretenberg_binder/heap_allocator.ts +1 -1
- package/src/barretenberg_binder/index.ts +12 -29
- package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +136 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +10 -0
- package/src/barretenberg_wasm/{browser/worker.ts → barretenberg_wasm_main/factory/browser/main.worker.ts} +4 -2
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +8 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +10 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +105 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +10 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +15 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +8 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +10 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +47 -0
- package/src/barretenberg_wasm/fetch_code/browser/index.ts +9 -0
- package/src/barretenberg_wasm/fetch_code/browser/wasm-module.d.ts +4 -0
- package/src/barretenberg_wasm/fetch_code/index.ts +1 -0
- package/src/barretenberg_wasm/fetch_code/node/index.ts +9 -0
- package/src/barretenberg_wasm/helpers/browser/index.ts +22 -0
- package/src/barretenberg_wasm/helpers/index.ts +1 -0
- package/src/barretenberg_wasm/{node → helpers/node}/index.ts +9 -14
- package/src/barretenberg_wasm/{barretenberg_wasm.test.ts → index.test.ts} +15 -27
- package/src/barretenberg_wasm/index.ts +22 -1
- package/src/bindgen/typescript.ts +1 -38
- package/src/crs/browser/cached_net_crs.ts +1 -3
- package/src/crs/index.ts +1 -1
- package/src/examples/simple.rawtest.ts +37 -0
- package/src/examples/simple.test.ts +5 -5
- package/src/index.ts +2 -4
- package/src/info.json +22 -0
- package/src/main.ts +48 -28
- package/src/random/index.ts +1 -1
- package/src/types/index.ts +1 -1
- package/src/types/{node/point.ts → point.ts} +2 -2
- package/dest/barretenberg-threads.wasm +0 -0
- package/dest/barretenberg.wasm +0 -0
- package/dest/browser/539.js +0 -2014
- package/dest/browser/995.js +0 -578
- package/dest/browser/async_map/index.js +0 -16
- package/dest/browser/barretenberg_api/blake2s.test.d.ts +0 -2
- package/dest/browser/barretenberg_api/blake2s.test.d.ts.map +0 -1
- package/dest/browser/barretenberg_api/blake2s.test.js +0 -30
- package/dest/browser/barretenberg_api/common.test.d.ts +0 -2
- package/dest/browser/barretenberg_api/common.test.d.ts.map +0 -1
- package/dest/browser/barretenberg_api/common.test.js +0 -18
- package/dest/browser/barretenberg_api/index.js +0 -379
- package/dest/browser/barretenberg_api/pedersen.test.d.ts +0 -2
- package/dest/browser/barretenberg_api/pedersen.test.d.ts.map +0 -1
- package/dest/browser/barretenberg_api/pedersen.test.js +0 -69
- package/dest/browser/barretenberg_api/schnorr.test.d.ts +0 -2
- package/dest/browser/barretenberg_api/schnorr.test.d.ts.map +0 -1
- package/dest/browser/barretenberg_api/schnorr.test.js +0 -113
- package/dest/browser/barretenberg_binder/heap_allocator.js +0 -59
- package/dest/browser/barretenberg_binder/heap_allocator_sync.d.ts +0 -22
- package/dest/browser/barretenberg_binder/heap_allocator_sync.d.ts.map +0 -1
- package/dest/browser/barretenberg_binder/heap_allocator_sync.js +0 -58
- package/dest/browser/barretenberg_binder/index.js +0 -73
- package/dest/browser/barretenberg_wasm/barretenberg_wasm.d.ts +0 -48
- package/dest/browser/barretenberg_wasm/barretenberg_wasm.d.ts.map +0 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm.js +0 -208
- package/dest/browser/barretenberg_wasm/barretenberg_wasm.test.d.ts +0 -2
- package/dest/browser/barretenberg_wasm/barretenberg_wasm.test.d.ts.map +0 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm.test.js +0 -47
- package/dest/browser/barretenberg_wasm/browser/index.d.ts +0 -8
- package/dest/browser/barretenberg_wasm/browser/index.d.ts.map +0 -1
- package/dest/browser/barretenberg_wasm/browser/index.js +0 -29
- package/dest/browser/barretenberg_wasm/browser/worker.d.ts +0 -2
- package/dest/browser/barretenberg_wasm/browser/worker.d.ts.map +0 -1
- package/dest/browser/barretenberg_wasm/browser/worker.js +0 -11
- package/dest/browser/barretenberg_wasm/index.js +0 -2
- package/dest/browser/barretenberg_wasm/node/index.d.ts.map +0 -1
- package/dest/browser/barretenberg_wasm/node/index.js +0 -40
- package/dest/browser/barretenberg_wasm/node/node_endpoint.d.ts.map +0 -1
- package/dest/browser/barretenberg_wasm/node/node_endpoint.js +0 -28
- package/dest/browser/barretenberg_wasm/node/worker.d.ts +0 -2
- package/dest/browser/barretenberg_wasm/node/worker.d.ts.map +0 -1
- package/dest/browser/barretenberg_wasm/node/worker.js +0 -9
- package/dest/browser/bigint-array/index.js +0 -21
- package/dest/browser/bindgen/function_declaration.d.ts +0 -11
- package/dest/browser/bindgen/function_declaration.d.ts.map +0 -1
- package/dest/browser/bindgen/function_declaration.js +0 -2
- package/dest/browser/bindgen/index.d.ts +0 -2
- package/dest/browser/bindgen/index.d.ts.map +0 -1
- package/dest/browser/bindgen/index.js +0 -15
- package/dest/browser/bindgen/mappings.d.ts +0 -4
- package/dest/browser/bindgen/mappings.d.ts.map +0 -1
- package/dest/browser/bindgen/mappings.js +0 -63
- package/dest/browser/bindgen/rust.d.ts +0 -2
- package/dest/browser/bindgen/rust.d.ts.map +0 -1
- package/dest/browser/bindgen/rust.js +0 -43
- package/dest/browser/bindgen/to_camel_case.d.ts +0 -2
- package/dest/browser/bindgen/to_camel_case.d.ts.map +0 -1
- package/dest/browser/bindgen/to_camel_case.js +0 -11
- package/dest/browser/bindgen/typescript.d.ts +0 -2
- package/dest/browser/bindgen/typescript.d.ts.map +0 -1
- package/dest/browser/bindgen/typescript.js +0 -80
- package/dest/browser/crs/browser/cached_net_crs.js +0 -56
- package/dest/browser/crs/browser/index.js +0 -2
- package/dest/browser/crs/index.js +0 -2
- package/dest/browser/crs/net_crs.js +0 -59
- package/dest/browser/crs/node/ignition_files_crs.js +0 -51
- package/dest/browser/crs/node/index.js +0 -54
- package/dest/browser/examples/simple.test.d.ts +0 -2
- package/dest/browser/examples/simple.test.d.ts.map +0 -1
- package/dest/browser/examples/simple.test.js +0 -22
- package/dest/browser/factory/index.d.ts +0 -21
- package/dest/browser/factory/index.d.ts.map +0 -1
- package/dest/browser/factory/index.js +0 -34
- package/dest/browser/main.d.ts +0 -10
- package/dest/browser/main.d.ts.map +0 -1
- package/dest/browser/main.js +0 -6586
- package/dest/browser/random/browser/index.js +0 -31
- package/dest/browser/random/index.js +0 -2
- package/dest/browser/random/node/index.js +0 -5
- package/dest/browser/serialize/buffer_reader.js +0 -66
- package/dest/browser/serialize/index.js +0 -4
- package/dest/browser/serialize/output_type.js +0 -44
- package/dest/browser/serialize/serialize.js +0 -139
- package/dest/browser/types/browser/index.d.ts +0 -2
- package/dest/browser/types/browser/index.d.ts.map +0 -1
- package/dest/browser/types/browser/index.js +0 -2
- package/dest/browser/types/browser/point.d.ts +0 -16
- package/dest/browser/types/browser/point.d.ts.map +0 -1
- package/dest/browser/types/browser/point.js +0 -46
- package/dest/browser/types/fields.js +0 -84
- package/dest/browser/types/fixed_size_buffer.js +0 -51
- package/dest/browser/types/index.js +0 -6
- package/dest/browser/types/node/index.d.ts +0 -2
- package/dest/browser/types/node/index.d.ts.map +0 -1
- package/dest/browser/types/node/index.js +0 -2
- package/dest/browser/types/node/point.d.ts.map +0 -1
- package/dest/browser/types/node/point.js +0 -31
- package/dest/browser/types/ptr.js +0 -19
- package/dest/browser/types/raw_buffer.js +0 -5
- package/dest/node/barretenberg_binder/heap_allocator_sync.d.ts +0 -22
- package/dest/node/barretenberg_binder/heap_allocator_sync.d.ts.map +0 -1
- package/dest/node/barretenberg_binder/heap_allocator_sync.js +0 -58
- package/dest/node/barretenberg_wasm/barretenberg_wasm.d.ts +0 -50
- package/dest/node/barretenberg_wasm/barretenberg_wasm.d.ts.map +0 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm.js +0 -208
- package/dest/node/barretenberg_wasm/barretenberg_wasm.test.d.ts +0 -2
- package/dest/node/barretenberg_wasm/barretenberg_wasm.test.d.ts.map +0 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm.test.js +0 -47
- package/dest/node/barretenberg_wasm/browser/index.d.ts +0 -8
- package/dest/node/barretenberg_wasm/browser/index.d.ts.map +0 -1
- package/dest/node/barretenberg_wasm/browser/index.js +0 -29
- package/dest/node/barretenberg_wasm/browser/worker.d.ts +0 -2
- package/dest/node/barretenberg_wasm/browser/worker.d.ts.map +0 -1
- package/dest/node/barretenberg_wasm/browser/worker.js +0 -11
- package/dest/node/barretenberg_wasm/node/index.d.ts.map +0 -1
- package/dest/node/barretenberg_wasm/node/index.js +0 -40
- package/dest/node/barretenberg_wasm/node/node_endpoint.d.ts.map +0 -1
- package/dest/node/barretenberg_wasm/node/node_endpoint.js +0 -28
- package/dest/node/barretenberg_wasm/node/worker.d.ts +0 -2
- package/dest/node/barretenberg_wasm/node/worker.d.ts.map +0 -1
- package/dest/node/barretenberg_wasm/node/worker.js +0 -9
- package/dest/node/factory/index.d.ts +0 -21
- package/dest/node/factory/index.d.ts.map +0 -1
- package/dest/node/factory/index.js +0 -34
- package/dest/node/types/browser/index.d.ts +0 -2
- package/dest/node/types/browser/index.d.ts.map +0 -1
- package/dest/node/types/browser/index.js +0 -2
- package/dest/node/types/browser/point.d.ts +0 -16
- package/dest/node/types/browser/point.d.ts.map +0 -1
- package/dest/node/types/browser/point.js +0 -46
- package/dest/node/types/node/index.d.ts +0 -2
- package/dest/node/types/node/index.d.ts.map +0 -1
- package/dest/node/types/node/index.js +0 -2
- package/dest/node/types/node/point.d.ts.map +0 -1
- package/dest/node/types/node/point.js +0 -31
- package/src/barretenberg_binder/heap_allocator_sync.ts +0 -61
- package/src/barretenberg_wasm/barretenberg_wasm.ts +0 -250
- package/src/barretenberg_wasm/browser/index.ts +0 -35
- package/src/barretenberg_wasm/node/worker.ts +0 -10
- package/src/factory/index.ts +0 -36
- package/src/types/browser/index.ts +0 -1
- package/src/types/browser/point.ts +0 -50
- package/src/types/node/index.ts +0 -1
- /package/src/barretenberg_wasm/{node → helpers/node}/node_endpoint.ts +0 -0
|
@@ -1,76 +1,77 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Barretenberg } from '../barretenberg/index.js';
|
|
2
2
|
import { Fr } from '../types/index.js';
|
|
3
|
-
import { BarretenbergApiSync } from './index.js';
|
|
4
3
|
|
|
5
4
|
describe('pedersen', () => {
|
|
6
|
-
let api:
|
|
5
|
+
let api: Barretenberg;
|
|
7
6
|
|
|
8
7
|
beforeAll(async () => {
|
|
9
|
-
api = await
|
|
10
|
-
api.pedersenHashInit();
|
|
11
|
-
});
|
|
8
|
+
api = await Barretenberg.new(1);
|
|
9
|
+
await api.pedersenHashInit();
|
|
10
|
+
}, 30000);
|
|
12
11
|
|
|
13
12
|
afterAll(async () => {
|
|
14
13
|
await api.destroy();
|
|
15
14
|
});
|
|
16
15
|
|
|
17
|
-
it('pedersenCompressFields', () => {
|
|
18
|
-
const result = api.pedersenCompressFields(new Fr(4n), new Fr(8n));
|
|
16
|
+
it('pedersenCompressFields', async () => {
|
|
17
|
+
const result = await api.pedersenCompressFields(new Fr(4n), new Fr(8n));
|
|
19
18
|
expect(result).toEqual(new Fr(16672613430297770667465722499387909817686322516130512258122141976728892914370n));
|
|
20
19
|
});
|
|
21
20
|
|
|
22
|
-
it('pedersenPlookupCompressFields', () => {
|
|
23
|
-
const result = api.pedersenPlookupCompressFields(new Fr(4n), new Fr(8n));
|
|
21
|
+
it('pedersenPlookupCompressFields', async () => {
|
|
22
|
+
const result = await api.pedersenPlookupCompressFields(new Fr(4n), new Fr(8n));
|
|
24
23
|
expect(result).toEqual(new Fr(21568810706345846819294487214368613840251909831689369685420108292337497444070n));
|
|
25
24
|
});
|
|
26
25
|
|
|
27
|
-
it('pedersenCompress', () => {
|
|
28
|
-
const result = api.pedersenCompress([new Fr(4n), new Fr(8n), new Fr(12n)]);
|
|
26
|
+
it('pedersenCompress', async () => {
|
|
27
|
+
const result = await api.pedersenCompress([new Fr(4n), new Fr(8n), new Fr(12n)]);
|
|
29
28
|
expect(result).toEqual(new Fr(20749503715308760529311051818180468653739005441229560405092292242074298877245n));
|
|
30
29
|
});
|
|
31
30
|
|
|
32
|
-
it('pedersenPlookupCompress', () => {
|
|
33
|
-
const result = api.pedersenPlookupCompress([new Fr(4n), new Fr(8n), new Fr(12n)]);
|
|
31
|
+
it('pedersenPlookupCompress', async () => {
|
|
32
|
+
const result = await api.pedersenPlookupCompress([new Fr(4n), new Fr(8n), new Fr(12n)]);
|
|
34
33
|
expect(result).toEqual(new Fr(4213911891650716450883144878301329379460622830501147795631256054071351353887n));
|
|
35
34
|
});
|
|
36
35
|
|
|
37
|
-
it('pedersenCompressWithHashIndex', () => {
|
|
38
|
-
const result = api.pedersenCompressWithHashIndex([new Fr(4n), new Fr(8n)], 7);
|
|
36
|
+
it('pedersenCompressWithHashIndex', async () => {
|
|
37
|
+
const result = await api.pedersenCompressWithHashIndex([new Fr(4n), new Fr(8n)], 7);
|
|
39
38
|
expect(result).toEqual(new Fr(11068631634751286805527305272746775861010877976108429785597565355072506728435n));
|
|
40
39
|
});
|
|
41
40
|
|
|
42
|
-
it('pedersenCommit', () => {
|
|
43
|
-
const result = api.pedersenCommit([new Fr(4n), new Fr(8n), new Fr(12n)]);
|
|
41
|
+
it('pedersenCommit', async () => {
|
|
42
|
+
const result = await api.pedersenCommit([new Fr(4n), new Fr(8n), new Fr(12n)]);
|
|
44
43
|
expect(result).toEqual(new Fr(20749503715308760529311051818180468653739005441229560405092292242074298877245n));
|
|
45
44
|
});
|
|
46
45
|
|
|
47
|
-
it('pedersenPlookupCommit', () => {
|
|
48
|
-
const result = api.pedersenPlookupCommit([new Fr(4n), new Fr(8n)]);
|
|
46
|
+
it('pedersenPlookupCommit', async () => {
|
|
47
|
+
const result = await api.pedersenPlookupCommit([new Fr(4n), new Fr(8n)]);
|
|
49
48
|
expect(result).toEqual(new Fr(21568810706345846819294487214368613840251909831689369685420108292337497444070n));
|
|
50
49
|
});
|
|
51
50
|
|
|
52
|
-
it('pedersenBufferToField', () => {
|
|
53
|
-
const result = api.pedersenBufferToField(
|
|
51
|
+
it('pedersenBufferToField', async () => {
|
|
52
|
+
const result = await api.pedersenBufferToField(
|
|
53
|
+
Buffer.from('Hello world! I am a buffer to be converted to a field!'),
|
|
54
|
+
);
|
|
54
55
|
expect(result).toEqual(new Fr(4923399520610513632896240312051201308554838580477778325691012985962614653619n));
|
|
55
56
|
});
|
|
56
57
|
|
|
57
|
-
it('pedersenHashPair', () => {
|
|
58
|
-
const result = api.pedersenHashPair(new Fr(4n), new Fr(8n));
|
|
58
|
+
it('pedersenHashPair', async () => {
|
|
59
|
+
const result = await api.pedersenHashPair(new Fr(4n), new Fr(8n));
|
|
59
60
|
expect(result).toEqual(new Fr(7508407170365331152493586290597472346478280823936748458450026785528968221772n));
|
|
60
61
|
});
|
|
61
62
|
|
|
62
|
-
it('pedersenHashMultiple', () => {
|
|
63
|
-
const result = api.pedersenHashMultiple([new Fr(4n), new Fr(8n), new Fr(12n)]);
|
|
63
|
+
it('pedersenHashMultiple', async () => {
|
|
64
|
+
const result = await api.pedersenHashMultiple([new Fr(4n), new Fr(8n), new Fr(12n)]);
|
|
64
65
|
expect(result).toEqual(new Fr(641613987782189905475142047603559162464012327378197326488471789040703504911n));
|
|
65
66
|
});
|
|
66
67
|
|
|
67
|
-
it('pedersenHashMultipleWithHashIndex', () => {
|
|
68
|
-
const result = api.pedersenHashMultipleWithHashIndex([new Fr(4n), new Fr(8n)], 7);
|
|
68
|
+
it('pedersenHashMultipleWithHashIndex', async () => {
|
|
69
|
+
const result = await api.pedersenHashMultipleWithHashIndex([new Fr(4n), new Fr(8n)], 7);
|
|
69
70
|
expect(result).toEqual(new Fr(14181105996307540196932058280391669339364159586581375348016341320932872505408n));
|
|
70
71
|
});
|
|
71
72
|
|
|
72
|
-
it('pedersenHashToTree', () => {
|
|
73
|
-
const result = api.pedersenHashToTree([new Fr(4n), new Fr(8n), new Fr(12n), new Fr(16n)]);
|
|
73
|
+
it('pedersenHashToTree', async () => {
|
|
74
|
+
const result = await api.pedersenHashToTree([new Fr(4n), new Fr(8n), new Fr(12n), new Fr(16n)]);
|
|
74
75
|
expect(result).toEqual([
|
|
75
76
|
new Fr(4n),
|
|
76
77
|
new Fr(8n),
|
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
import { TextEncoder } from 'util';
|
|
2
2
|
import { Buffer128, Buffer32, Fr, Point } from '../types/index.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { Barretenberg } from '../barretenberg/index.js';
|
|
4
|
+
import { asyncMap } from '../async_map/index.js';
|
|
5
5
|
|
|
6
6
|
describe('schnorr', () => {
|
|
7
7
|
const msg = Buffer.from(new TextEncoder().encode('The quick brown dog jumped over the lazy fox.'));
|
|
8
|
-
let api:
|
|
8
|
+
let api: Barretenberg;
|
|
9
9
|
|
|
10
10
|
beforeAll(async () => {
|
|
11
|
-
api = await
|
|
12
|
-
api.pedersenInit();
|
|
13
|
-
});
|
|
11
|
+
api = await Barretenberg.new(1);
|
|
12
|
+
await api.pedersenInit();
|
|
13
|
+
}, 30000);
|
|
14
14
|
|
|
15
15
|
afterAll(async () => {
|
|
16
16
|
await api.destroy();
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
-
it('should verify signature', () => {
|
|
19
|
+
it('should verify signature', async () => {
|
|
20
20
|
const pk = Fr.fromBuffer(
|
|
21
21
|
new Uint8Array([
|
|
22
22
|
0x0b, 0x9b, 0x3a, 0xde, 0xe6, 0xb3, 0xd8, 0x1b, 0x28, 0xa0, 0x88, 0x6b, 0x2a, 0x84, 0x15, 0xc7, 0xda, 0x31,
|
|
23
23
|
0x29, 0x1a, 0x5e, 0x96, 0xbb, 0x7a, 0x56, 0x63, 0x9e, 0x17, 0x7d, 0x30, 0x1b, 0xeb,
|
|
24
24
|
]),
|
|
25
25
|
);
|
|
26
|
-
const pubKey = api.schnorrComputePublicKey(pk);
|
|
27
|
-
const [s, e] = api.schnorrConstructSignature(msg, pk);
|
|
28
|
-
const verified = api.schnorrVerifySignature(msg, pubKey, s, e);
|
|
26
|
+
const pubKey = await api.schnorrComputePublicKey(pk);
|
|
27
|
+
const [s, e] = await api.schnorrConstructSignature(msg, pk);
|
|
28
|
+
const verified = await api.schnorrVerifySignature(msg, pubKey, s, e);
|
|
29
29
|
|
|
30
30
|
expect(verified).toBe(true);
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
it('public key negation should work', () => {
|
|
33
|
+
it('public key negation should work', async () => {
|
|
34
34
|
const publicKeyStr =
|
|
35
35
|
'0x164f01b1011a1b292217acf53eef4d74f625f6e9bd5edfdb74c56fd81aafeebb21912735f9266a3719f61c1eb747ddee0cac9917f5c807485d356709b529b62c';
|
|
36
36
|
const publicKey = Point.fromString(publicKeyStr);
|
|
@@ -40,91 +40,99 @@ describe('schnorr', () => {
|
|
|
40
40
|
const expectedInverted = Point.fromString(expectedInvertedStr);
|
|
41
41
|
|
|
42
42
|
// negate - should match expected negated key
|
|
43
|
-
const negatedPublicKey = api.schnorrNegatePublicKey(publicKey);
|
|
43
|
+
const negatedPublicKey = await api.schnorrNegatePublicKey(publicKey);
|
|
44
44
|
expect(negatedPublicKey.equals(expectedInverted)).toEqual(true);
|
|
45
45
|
// negate again - should be original public key now
|
|
46
|
-
expect(api.schnorrNegatePublicKey(negatedPublicKey).equals(publicKey)).toEqual(true);
|
|
46
|
+
expect((await api.schnorrNegatePublicKey(negatedPublicKey)).equals(publicKey)).toEqual(true);
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
-
it('should create + verify multi signature', () => {
|
|
49
|
+
it('should create + verify multi signature', async () => {
|
|
50
50
|
// set up multisig accounts
|
|
51
51
|
const numSigners = 7;
|
|
52
52
|
const pks = [...Array(numSigners)].map(() => Fr.random());
|
|
53
|
-
const pubKeys = pks
|
|
53
|
+
const pubKeys = await asyncMap(pks, pk => api.schnorrMultisigCreateMultisigPublicKey(pk));
|
|
54
54
|
|
|
55
55
|
// round one
|
|
56
56
|
const roundOnePublicOutputs: Buffer128[] = [];
|
|
57
57
|
const roundOnePrivateOutputs: Buffer128[] = [];
|
|
58
58
|
for (let i = 0; i < numSigners; ++i) {
|
|
59
|
-
const [publicOutput, privateOutput] = api.schnorrMultisigConstructSignatureRound1();
|
|
59
|
+
const [publicOutput, privateOutput] = await api.schnorrMultisigConstructSignatureRound1();
|
|
60
60
|
roundOnePublicOutputs.push(publicOutput);
|
|
61
61
|
roundOnePrivateOutputs.push(privateOutput);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
// round two
|
|
65
|
-
const roundTwoOutputs =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
65
|
+
const roundTwoOutputs = await asyncMap(
|
|
66
|
+
pks,
|
|
67
|
+
async (pk, i) =>
|
|
68
|
+
(
|
|
69
|
+
await api.schnorrMultisigConstructSignatureRound2(
|
|
70
|
+
msg,
|
|
71
|
+
pk,
|
|
72
|
+
roundOnePrivateOutputs[i],
|
|
73
|
+
pubKeys,
|
|
74
|
+
roundOnePublicOutputs,
|
|
75
|
+
)
|
|
73
76
|
)[0],
|
|
74
77
|
);
|
|
75
78
|
|
|
76
79
|
// generate signature
|
|
77
|
-
const [s, e] = api.schnorrMultisigCombineSignatures(msg, pubKeys, roundOnePublicOutputs, roundTwoOutputs)!;
|
|
78
|
-
const [combinedKey] = api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys);
|
|
80
|
+
const [s, e] = await api.schnorrMultisigCombineSignatures(msg, pubKeys, roundOnePublicOutputs, roundTwoOutputs)!;
|
|
81
|
+
const [combinedKey] = await api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys);
|
|
79
82
|
expect(combinedKey).not.toEqual(Buffer.alloc(64));
|
|
80
|
-
const verified = api.schnorrVerifySignature(msg, combinedKey, s, e);
|
|
83
|
+
const verified = await api.schnorrVerifySignature(msg, combinedKey, s, e);
|
|
81
84
|
expect(verified).toBe(true);
|
|
82
85
|
});
|
|
83
86
|
|
|
84
|
-
it('should identify invalid multi signature', () => {
|
|
87
|
+
it('should identify invalid multi signature', async () => {
|
|
85
88
|
const pks = [...Array(3)].map(() => Fr.random());
|
|
86
|
-
const pubKeys = pks
|
|
87
|
-
const [combinedKey] = api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys);
|
|
89
|
+
const pubKeys = await asyncMap(pks, pk => api.schnorrMultisigCreateMultisigPublicKey(pk));
|
|
90
|
+
const [combinedKey] = await api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys);
|
|
88
91
|
|
|
89
|
-
const verified = api.schnorrVerifySignature(msg, combinedKey, Buffer32.random(), Buffer32.random());
|
|
92
|
+
const verified = await api.schnorrVerifySignature(msg, combinedKey, Buffer32.random(), Buffer32.random());
|
|
90
93
|
expect(verified).toBe(false);
|
|
91
94
|
});
|
|
92
95
|
|
|
93
|
-
it('should not construct invalid multi signature', () => {
|
|
96
|
+
it('should not construct invalid multi signature', async () => {
|
|
94
97
|
// set up multisig accounts
|
|
95
98
|
const numSigners = 7;
|
|
96
99
|
const pks = [...Array(numSigners)].map(() => Fr.random());
|
|
97
|
-
const pubKeys = pks
|
|
100
|
+
const pubKeys = await asyncMap(pks, pk => api.schnorrMultisigCreateMultisigPublicKey(pk));
|
|
98
101
|
|
|
99
102
|
// round one
|
|
100
103
|
const roundOnePublicOutputs: Buffer128[] = [];
|
|
101
104
|
const roundOnePrivateOutputs: Buffer128[] = [];
|
|
102
105
|
for (let i = 0; i < numSigners; ++i) {
|
|
103
|
-
const [publicOutput, privateOutput] = api.schnorrMultisigConstructSignatureRound1();
|
|
106
|
+
const [publicOutput, privateOutput] = await api.schnorrMultisigConstructSignatureRound1();
|
|
104
107
|
roundOnePublicOutputs.push(publicOutput);
|
|
105
108
|
roundOnePrivateOutputs.push(privateOutput);
|
|
106
109
|
}
|
|
107
110
|
|
|
108
111
|
// round two
|
|
109
|
-
const roundTwoOutputs =
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
const roundTwoOutputs = await asyncMap(
|
|
113
|
+
pks,
|
|
114
|
+
async (pk, i) =>
|
|
115
|
+
(
|
|
116
|
+
await api.schnorrMultisigConstructSignatureRound2(
|
|
117
|
+
msg,
|
|
118
|
+
pk,
|
|
119
|
+
roundOnePrivateOutputs[i],
|
|
120
|
+
pubKeys,
|
|
121
|
+
roundOnePublicOutputs,
|
|
122
|
+
)
|
|
117
123
|
)[0],
|
|
118
124
|
);
|
|
119
125
|
|
|
120
126
|
// wrong number of data
|
|
121
127
|
{
|
|
122
128
|
expect(
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
(
|
|
130
|
+
await api.schnorrMultisigCombineSignatures(
|
|
131
|
+
msg,
|
|
132
|
+
pubKeys.slice(0, -1),
|
|
133
|
+
roundOnePublicOutputs.slice(0, -1),
|
|
134
|
+
roundTwoOutputs.slice(0, -1),
|
|
135
|
+
)
|
|
128
136
|
)[2],
|
|
129
137
|
).toBe(false);
|
|
130
138
|
}
|
|
@@ -132,38 +140,44 @@ describe('schnorr', () => {
|
|
|
132
140
|
// invalid round two output
|
|
133
141
|
{
|
|
134
142
|
const invalidOutputs = [...roundTwoOutputs];
|
|
135
|
-
invalidOutputs[1] =
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
143
|
+
invalidOutputs[1] = (
|
|
144
|
+
await api.schnorrMultisigConstructSignatureRound2(
|
|
145
|
+
msg,
|
|
146
|
+
pks[2], // <- Wrong private key.
|
|
147
|
+
roundOnePrivateOutputs[1],
|
|
148
|
+
pubKeys,
|
|
149
|
+
roundOnePublicOutputs,
|
|
150
|
+
)
|
|
141
151
|
)[0];
|
|
142
|
-
expect(api.schnorrMultisigCombineSignatures(msg, pubKeys, roundOnePublicOutputs, invalidOutputs)[2]).toBe(
|
|
152
|
+
expect((await api.schnorrMultisigCombineSignatures(msg, pubKeys, roundOnePublicOutputs, invalidOutputs))[2]).toBe(
|
|
153
|
+
false,
|
|
154
|
+
);
|
|
143
155
|
}
|
|
144
156
|
|
|
145
157
|
// contains duplicates
|
|
146
158
|
{
|
|
147
159
|
const invalidOutputs = [...roundTwoOutputs];
|
|
148
160
|
invalidOutputs[1] = roundTwoOutputs[2];
|
|
149
|
-
expect(api.schnorrMultisigCombineSignatures(msg, pubKeys, roundOnePublicOutputs, invalidOutputs)[2]).toBe(
|
|
161
|
+
expect((await api.schnorrMultisigCombineSignatures(msg, pubKeys, roundOnePublicOutputs, invalidOutputs))[2]).toBe(
|
|
162
|
+
false,
|
|
163
|
+
);
|
|
150
164
|
}
|
|
151
165
|
});
|
|
152
166
|
|
|
153
|
-
it('should not create combined key from public keys containing invalid key', () => {
|
|
167
|
+
it('should not create combined key from public keys containing invalid key', async () => {
|
|
154
168
|
const pks = [...Array(5)].map(() => Fr.random());
|
|
155
|
-
const pubKeys = pks
|
|
169
|
+
const pubKeys = await asyncMap(pks, pk => api.schnorrMultisigCreateMultisigPublicKey(pk));
|
|
156
170
|
|
|
157
171
|
// not a valid point
|
|
158
172
|
{
|
|
159
173
|
pubKeys[1] = new Buffer128(Buffer.alloc(128));
|
|
160
|
-
expect(api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys)[1]).toBe(false);
|
|
174
|
+
expect((await api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys))[1]).toBe(false);
|
|
161
175
|
}
|
|
162
176
|
|
|
163
177
|
// contains duplicates
|
|
164
178
|
{
|
|
165
179
|
pubKeys[1] = pubKeys[2];
|
|
166
|
-
expect(api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys)[1]).toBe(false);
|
|
180
|
+
expect((await api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys))[1]).toBe(false);
|
|
167
181
|
}
|
|
168
182
|
});
|
|
169
183
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Bufferable, serializeBufferable, OutputType } from '../serialize/index.js';
|
|
2
|
-
import { BarretenbergWasm, BarretenbergWasmWorker } from '../barretenberg_wasm/
|
|
2
|
+
import { BarretenbergWasm, BarretenbergWasmWorker } from '../barretenberg_wasm/index.js';
|
|
3
3
|
import { asyncMap } from '../async_map/index.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { BarretenbergWasm, BarretenbergWasmWorker } from '../barretenberg_wasm/
|
|
1
|
+
import { BarretenbergWasm, BarretenbergWasmWorker } from '../barretenberg_wasm/index.js';
|
|
2
2
|
import { HeapAllocator } from './heap_allocator.js';
|
|
3
3
|
import { Bufferable, OutputType } from '../serialize/index.js';
|
|
4
4
|
import { asyncMap } from '../async_map/index.js';
|
|
5
|
-
import
|
|
5
|
+
// import createDebug from 'debug';
|
|
6
|
+
|
|
7
|
+
// const debug = createDebug('bb.js:barretenberg_binder');
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* Calls a WASM export function, handles allocating/freeing of memory, and serializing/deserializing to types.
|
|
@@ -29,7 +31,7 @@ export class BarretenbergBinder {
|
|
|
29
31
|
const inPtrs = await alloc.copyToMemory(inArgs);
|
|
30
32
|
const outPtrs = await alloc.getOutputPtrs(outTypes);
|
|
31
33
|
await this.wasm.call(funcName, ...inPtrs, ...outPtrs);
|
|
32
|
-
const outArgs = this.deserializeOutputArgs(outTypes, outPtrs, alloc);
|
|
34
|
+
const outArgs = await this.deserializeOutputArgs(outTypes, outPtrs, alloc);
|
|
33
35
|
await alloc.freeAll();
|
|
34
36
|
return outArgs;
|
|
35
37
|
}
|
|
@@ -42,35 +44,16 @@ export class BarretenbergBinder {
|
|
|
42
44
|
}
|
|
43
45
|
const slice = await this.wasm.getMemorySlice(outPtrs[i], outPtrs[i] + 4);
|
|
44
46
|
const ptr = new DataView(slice.buffer, slice.byteOffset, slice.byteLength).getUint32(0, true);
|
|
47
|
+
|
|
48
|
+
// Add our heap buffer to the dealloc list.
|
|
45
49
|
alloc.addOutputPtr(ptr);
|
|
46
|
-
return t.fromBuffer(await this.wasm.getMemorySlice(ptr));
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
// The length will be found in the first 4 bytes of the buffer, big endian. See to_heap_buffer.
|
|
52
|
+
const lslice = await this.wasm.getMemorySlice(ptr, ptr + 4);
|
|
53
|
+
const length = new DataView(lslice.buffer, lslice.byteOffset, lslice.byteLength).getUint32(0, false);
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const inPtrs = alloc.copyToMemory(inArgs);
|
|
57
|
-
const outPtrs = alloc.getOutputPtrs(outTypes);
|
|
58
|
-
this.wasm.call(funcName, ...inPtrs, ...outPtrs);
|
|
59
|
-
const outArgs = this.deserializeOutputArgs(outTypes, outPtrs, alloc);
|
|
60
|
-
alloc.freeAll();
|
|
61
|
-
return outArgs;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
private deserializeOutputArgs(outTypes: OutputType[], outPtrs: number[], alloc: HeapAllocatorSync) {
|
|
65
|
-
return outTypes.map((t, i) => {
|
|
66
|
-
if (t.SIZE_IN_BYTES) {
|
|
67
|
-
const slice = this.wasm.getMemorySlice(outPtrs[i], outPtrs[i] + t.SIZE_IN_BYTES);
|
|
68
|
-
return t.fromBuffer(slice);
|
|
69
|
-
}
|
|
70
|
-
const slice = this.wasm.getMemorySlice(outPtrs[i], outPtrs[i] + 4);
|
|
71
|
-
const ptr = new DataView(slice.buffer, slice.byteOffset, slice.byteLength).getUint32(0, true);
|
|
72
|
-
alloc.addOutputPtr(ptr);
|
|
73
|
-
return t.fromBuffer(this.wasm.getMemorySlice(ptr));
|
|
55
|
+
const buf = await this.wasm.getMemorySlice(ptr + 4, ptr + 4 + length);
|
|
56
|
+
return t.fromBuffer(buf);
|
|
74
57
|
});
|
|
75
58
|
}
|
|
76
59
|
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import createDebug from 'debug';
|
|
2
|
+
import { randomBytes } from '../../random/index.js';
|
|
3
|
+
import { killSelf } from '../helpers/index.js';
|
|
4
|
+
|
|
5
|
+
const debug = createDebug('bb.js:wasm');
|
|
6
|
+
|
|
7
|
+
export class BarretenbergWasmBase {
|
|
8
|
+
protected memStore: { [key: string]: Uint8Array } = {};
|
|
9
|
+
protected memory!: WebAssembly.Memory;
|
|
10
|
+
protected instance!: WebAssembly.Instance;
|
|
11
|
+
protected logger: (msg: string) => void = debug;
|
|
12
|
+
|
|
13
|
+
protected getImportObj(memory: WebAssembly.Memory) {
|
|
14
|
+
/* eslint-disable camelcase */
|
|
15
|
+
const importObj = {
|
|
16
|
+
// We need to implement a part of the wasi api:
|
|
17
|
+
// https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md
|
|
18
|
+
// We literally only need to support random_get, everything else is noop implementated in barretenberg.wasm.
|
|
19
|
+
wasi_snapshot_preview1: {
|
|
20
|
+
random_get: (out: any, length: number) => {
|
|
21
|
+
out = out >>> 0;
|
|
22
|
+
const randomData = randomBytes(length);
|
|
23
|
+
const mem = this.getMemory();
|
|
24
|
+
mem.set(randomData, out);
|
|
25
|
+
},
|
|
26
|
+
clock_time_get: (a1: number, a2: number, out: number) => {
|
|
27
|
+
out = out >>> 0;
|
|
28
|
+
const ts = BigInt(new Date().getTime()) * 1000000n;
|
|
29
|
+
const view = new DataView(this.getMemory().buffer);
|
|
30
|
+
view.setBigUint64(out, ts, true);
|
|
31
|
+
},
|
|
32
|
+
proc_exit: () => {
|
|
33
|
+
this.logger('PANIC: proc_exit was called. This is maybe caused by "joining" with unstable wasi pthreads.');
|
|
34
|
+
this.logger(new Error().stack!);
|
|
35
|
+
killSelf();
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
// These are functions implementations for imports we've defined are needed.
|
|
40
|
+
// The native C++ build defines these in a module called "env". We must implement TypeScript versions here.
|
|
41
|
+
env: {
|
|
42
|
+
/**
|
|
43
|
+
* The 'info' call we use for logging in C++, calls this under the hood.
|
|
44
|
+
* The native code will just print to std:err (to avoid std::cout which is used for IPC).
|
|
45
|
+
* Here we just emit the log line for the client to decide what to do with.
|
|
46
|
+
*/
|
|
47
|
+
logstr: (addr: number) => {
|
|
48
|
+
const str = this.stringFromAddress(addr);
|
|
49
|
+
const m = this.getMemory();
|
|
50
|
+
const str2 = `${str} (mem: ${(m.length / (1024 * 1024)).toFixed(2)}MiB)`;
|
|
51
|
+
this.logger(str2);
|
|
52
|
+
if (str2.startsWith('WARNING:')) {
|
|
53
|
+
this.logger(new Error().stack!);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
get_data: (keyAddr: number, outBufAddr: number) => {
|
|
58
|
+
const key = this.stringFromAddress(keyAddr);
|
|
59
|
+
outBufAddr = outBufAddr >>> 0;
|
|
60
|
+
const data = this.memStore[key];
|
|
61
|
+
if (!data) {
|
|
62
|
+
this.logger(`get_data miss ${key}`);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// this.logger(`get_data hit ${key} size: ${data.length} dest: ${outBufAddr}`);
|
|
66
|
+
// this.logger(Buffer.from(data.slice(0, 64)).toString('hex'));
|
|
67
|
+
this.writeMemory(outBufAddr, data);
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
set_data: (keyAddr: number, dataAddr: number, dataLength: number) => {
|
|
71
|
+
const key = this.stringFromAddress(keyAddr);
|
|
72
|
+
dataAddr = dataAddr >>> 0;
|
|
73
|
+
this.memStore[key] = this.getMemorySlice(dataAddr, dataAddr + dataLength);
|
|
74
|
+
// this.logger(`set_data: ${key} length: ${dataLength}`);
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
memory,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
/* eslint-enable camelcase */
|
|
81
|
+
|
|
82
|
+
return importObj;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public exports(): any {
|
|
86
|
+
return this.instance.exports;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* When returning values from the WASM, use >>> operator to convert signed representation to unsigned representation.
|
|
91
|
+
*/
|
|
92
|
+
public call(name: string, ...args: any) {
|
|
93
|
+
if (!this.exports()[name]) {
|
|
94
|
+
throw new Error(`WASM function ${name} not found.`);
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
return this.exports()[name](...args) >>> 0;
|
|
98
|
+
} catch (err: any) {
|
|
99
|
+
const message = `WASM function ${name} aborted, error: ${err}`;
|
|
100
|
+
this.logger(message);
|
|
101
|
+
this.logger(err.stack);
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
public memSize() {
|
|
107
|
+
return this.getMemory().length;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Returns a copy of the data, not a view.
|
|
112
|
+
*/
|
|
113
|
+
public getMemorySlice(start: number, end: number) {
|
|
114
|
+
return this.getMemory().subarray(start, end).slice();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
public writeMemory(offset: number, arr: Uint8Array) {
|
|
118
|
+
const mem = this.getMemory();
|
|
119
|
+
mem.set(arr, offset);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// PRIVATE METHODS
|
|
123
|
+
|
|
124
|
+
private getMemory() {
|
|
125
|
+
return new Uint8Array(this.memory.buffer);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
private stringFromAddress(addr: number) {
|
|
129
|
+
addr = addr >>> 0;
|
|
130
|
+
const m = this.getMemory();
|
|
131
|
+
let i = addr;
|
|
132
|
+
for (; m[i] !== 0; ++i);
|
|
133
|
+
const textDecoder = new TextDecoder('ascii');
|
|
134
|
+
return textDecoder.decode(m.slice(addr, i));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import MainWorker from './main.worker.js';
|
|
3
|
+
|
|
4
|
+
export function createMainWorker() {
|
|
5
|
+
const worker = new MainWorker();
|
|
6
|
+
const debugStr = debug.disable();
|
|
7
|
+
debug.enable(debugStr);
|
|
8
|
+
worker.postMessage({ debug: debugStr });
|
|
9
|
+
return worker;
|
|
10
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expose } from 'comlink';
|
|
2
|
-
import {
|
|
2
|
+
import { BarretenbergWasmMain } from '../../index.js';
|
|
3
3
|
import debug from 'debug';
|
|
4
4
|
|
|
5
5
|
self.onmessage = function (e) {
|
|
@@ -8,6 +8,8 @@ self.onmessage = function (e) {
|
|
|
8
8
|
}
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
expose(new
|
|
11
|
+
expose(new BarretenbergWasmMain());
|
|
12
12
|
|
|
13
13
|
self.postMessage({ ready: true });
|
|
14
|
+
|
|
15
|
+
export default null as any;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Worker } from 'worker_threads';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
|
|
5
|
+
export function createMainWorker() {
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
return new Worker(__dirname + `/main.worker.js`);
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { parentPort } from 'worker_threads';
|
|
2
|
+
import { expose } from 'comlink';
|
|
3
|
+
import { BarretenbergWasmMain } from '../../index.js';
|
|
4
|
+
import { nodeEndpoint } from '../../../helpers/node/node_endpoint.js';
|
|
5
|
+
|
|
6
|
+
if (!parentPort) {
|
|
7
|
+
throw new Error('No parentPort');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
expose(new BarretenbergWasmMain(), nodeEndpoint(parentPort));
|