@aztec/bb.js 0.0.0-devnet
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 +149 -0
- package/dest/browser/522.index.js +10 -0
- package/dest/browser/barretenberg/backend.d.ts +85 -0
- package/dest/browser/barretenberg/backend.d.ts.map +1 -0
- package/dest/browser/barretenberg/index.d.ts +47 -0
- package/dest/browser/barretenberg/index.d.ts.map +1 -0
- package/dest/browser/barretenberg/verifier.d.ts +16 -0
- package/dest/browser/barretenberg/verifier.d.ts.map +1 -0
- package/dest/browser/barretenberg_api/index.d.ts +113 -0
- package/dest/browser/barretenberg_api/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +44 -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/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/index.d.ts +47 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -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/thread.worker.d.ts +3 -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/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/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/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 +2 -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/browser/barretenberg_wasm/helpers/node/index.d.ts +22 -0
- package/dest/browser/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/helpers/node/node_endpoint.d.ts +8 -0
- package/dest/browser/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/index.d.ts +18 -0
- package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -0
- package/dest/browser/bigint-array/index.d.ts +3 -0
- package/dest/browser/bigint-array/index.d.ts.map +1 -0
- package/dest/browser/crs/browser/cached_net_crs.d.ts +43 -0
- package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -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/index.d.ts +2 -0
- package/dest/browser/crs/index.d.ts.map +1 -0
- package/dest/browser/crs/net_crs.d.ts +61 -0
- package/dest/browser/crs/net_crs.d.ts.map +1 -0
- package/dest/browser/crs/node/index.d.ts +36 -0
- package/dest/browser/crs/node/index.d.ts.map +1 -0
- package/dest/browser/index.d.ts +5 -0
- package/dest/browser/index.d.ts.map +1 -0
- package/dest/browser/index.js +16205 -0
- package/dest/browser/proof/index.d.ts +19 -0
- package/dest/browser/proof/index.d.ts.map +1 -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/index.d.ts +2 -0
- package/dest/browser/random/index.d.ts.map +1 -0
- package/dest/browser/random/node/index.d.ts +2 -0
- package/dest/browser/random/node/index.d.ts.map +1 -0
- package/dest/browser/serialize/buffer_reader.d.ts +28 -0
- package/dest/browser/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/browser/serialize/index.d.ts +4 -0
- package/dest/browser/serialize/index.d.ts.map +1 -0
- package/dest/browser/serialize/output_type.d.ts +11 -0
- package/dest/browser/serialize/output_type.d.ts.map +1 -0
- package/dest/browser/serialize/serialize.d.ts +53 -0
- package/dest/browser/serialize/serialize.d.ts.map +1 -0
- package/dest/browser/types/fields.d.ts +43 -0
- package/dest/browser/types/fields.d.ts.map +1 -0
- package/dest/browser/types/fixed_size_buffer.d.ts +26 -0
- package/dest/browser/types/fixed_size_buffer.d.ts.map +1 -0
- package/dest/browser/types/index.d.ts +6 -0
- package/dest/browser/types/index.d.ts.map +1 -0
- package/dest/browser/types/point.d.ts +17 -0
- package/dest/browser/types/point.d.ts.map +1 -0
- package/dest/browser/types/ptr.d.ts +13 -0
- package/dest/browser/types/ptr.d.ts.map +1 -0
- package/dest/browser/types/raw_buffer.d.ts +3 -0
- package/dest/browser/types/raw_buffer.d.ts.map +1 -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/backend.d.ts +85 -0
- package/dest/node/barretenberg/backend.d.ts.map +1 -0
- package/dest/node/barretenberg/backend.js +247 -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 +54 -0
- package/dest/node/barretenberg/common.test.d.ts +2 -0
- package/dest/node/barretenberg/common.test.d.ts.map +1 -0
- package/dest/node/barretenberg/common.test.js +20 -0
- package/dest/node/barretenberg/index.d.ts +47 -0
- package/dest/node/barretenberg/index.d.ts.map +1 -0
- package/dest/node/barretenberg/index.js +97 -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 +55 -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/schnorr.test.d.ts +2 -0
- package/dest/node/barretenberg/schnorr.test.d.ts.map +1 -0
- package/dest/node/barretenberg/schnorr.test.js +113 -0
- package/dest/node/barretenberg/verifier.d.ts +16 -0
- package/dest/node/barretenberg/verifier.d.ts.map +1 -0
- package/dest/node/barretenberg/verifier.js +40 -0
- package/dest/node/barretenberg_api/index.d.ts +113 -0
- package/dest/node/barretenberg_api/index.d.ts.map +1 -0
- package/dest/node/barretenberg_api/index.js +728 -0
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +44 -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 +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 +18 -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/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 +57 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +47 -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 +107 -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 +18 -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 +12 -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 +22 -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/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 +39 -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 +18 -0
- package/dest/node/barretenberg_wasm/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/index.js +45 -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 +38 -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 +3 -0
- package/dest/node/bigint-array/index.d.ts.map +1 -0
- package/dest/node/bigint-array/index.js +21 -0
- package/dest/node/bindgen/function_declaration.d.ts +11 -0
- package/dest/node/bindgen/function_declaration.d.ts.map +1 -0
- package/dest/node/bindgen/function_declaration.js +2 -0
- package/dest/node/bindgen/index.d.ts +2 -0
- package/dest/node/bindgen/index.d.ts.map +1 -0
- package/dest/node/bindgen/index.js +15 -0
- package/dest/node/bindgen/mappings.d.ts +4 -0
- package/dest/node/bindgen/mappings.d.ts.map +1 -0
- package/dest/node/bindgen/mappings.js +63 -0
- package/dest/node/bindgen/rust.d.ts +2 -0
- package/dest/node/bindgen/rust.d.ts.map +1 -0
- package/dest/node/bindgen/rust.js +43 -0
- package/dest/node/bindgen/to_camel_case.d.ts +2 -0
- package/dest/node/bindgen/to_camel_case.d.ts.map +1 -0
- package/dest/node/bindgen/to_camel_case.js +11 -0
- package/dest/node/bindgen/typescript.d.ts +2 -0
- package/dest/node/bindgen/typescript.d.ts.map +1 -0
- package/dest/node/bindgen/typescript.js +100 -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 +61 -0
- package/dest/node/crs/net_crs.d.ts.map +1 -0
- package/dest/node/crs/net_crs.js +97 -0
- package/dest/node/crs/node/ignition_files_crs.d.ts +38 -0
- package/dest/node/crs/node/ignition_files_crs.d.ts.map +1 -0
- package/dest/node/crs/node/ignition_files_crs.js +65 -0
- package/dest/node/crs/node/index.d.ts +36 -0
- package/dest/node/crs/node/index.d.ts.map +1 -0
- package/dest/node/crs/node/index.js +93 -0
- 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 +30 -0
- package/dest/node/examples/simple.test.d.ts +2 -0
- package/dest/node/examples/simple.test.d.ts.map +1 -0
- package/dest/node/examples/simple.test.js +23 -0
- package/dest/node/index.d.ts +5 -0
- package/dest/node/index.d.ts.map +1 -0
- package/dest/node/index.js +5 -0
- package/dest/node/main.d.ts +23 -0
- package/dest/node/main.d.ts.map +1 -0
- package/dest/node/main.js +712 -0
- package/dest/node/proof/index.d.ts +19 -0
- package/dest/node/proof/index.d.ts.map +1 -0
- package/dest/node/proof/index.js +85 -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/node/random/index.js +2 -0
- 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/serialize/buffer_reader.d.ts +28 -0
- package/dest/node/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/node/serialize/buffer_reader.js +66 -0
- package/dest/node/serialize/index.d.ts +4 -0
- package/dest/node/serialize/index.d.ts.map +1 -0
- package/dest/node/serialize/index.js +4 -0
- package/dest/node/serialize/output_type.d.ts +11 -0
- package/dest/node/serialize/output_type.d.ts.map +1 -0
- package/dest/node/serialize/output_type.js +44 -0
- package/dest/node/serialize/serialize.d.ts +53 -0
- package/dest/node/serialize/serialize.d.ts.map +1 -0
- package/dest/node/serialize/serialize.js +139 -0
- package/dest/node/types/fields.d.ts +43 -0
- package/dest/node/types/fields.d.ts.map +1 -0
- package/dest/node/types/fields.js +97 -0
- package/dest/node/types/fixed_size_buffer.d.ts +26 -0
- package/dest/node/types/fixed_size_buffer.d.ts.map +1 -0
- package/dest/node/types/fixed_size_buffer.js +51 -0
- package/dest/node/types/index.d.ts +6 -0
- package/dest/node/types/index.d.ts.map +1 -0
- package/dest/node/types/index.js +6 -0
- package/dest/node/types/point.d.ts +17 -0
- package/dest/node/types/point.d.ts.map +1 -0
- package/dest/node/types/point.js +31 -0
- package/dest/node/types/ptr.d.ts +13 -0
- package/dest/node/types/ptr.d.ts.map +1 -0
- package/dest/node/types/ptr.js +19 -0
- package/dest/node/types/raw_buffer.d.ts +3 -0
- package/dest/node/types/raw_buffer.d.ts.map +1 -0
- package/dest/node/types/raw_buffer.js +5 -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 +20 -0
- package/dest/node-cjs/barretenberg/backend.d.ts +85 -0
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/backend.js +253 -0
- package/dest/node-cjs/barretenberg/blake2s.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/blake2s.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/blake2s.test.js +56 -0
- package/dest/node-cjs/barretenberg/common.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/common.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/common.test.js +22 -0
- package/dest/node-cjs/barretenberg/index.d.ts +47 -0
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/index.js +106 -0
- package/dest/node-cjs/barretenberg/pedersen.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/pedersen.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/pedersen.test.js +57 -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/schnorr.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/schnorr.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/schnorr.test.js +115 -0
- package/dest/node-cjs/barretenberg/verifier.d.ts +16 -0
- package/dest/node-cjs/barretenberg/verifier.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/verifier.js +44 -0
- package/dest/node-cjs/barretenberg_api/index.d.ts +113 -0
- package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_api/index.js +733 -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 +44 -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 +130 -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 +15 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +3 -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 +15 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +4 -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 +22 -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 +11 -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 +61 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +47 -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 +112 -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 +15 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +3 -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 +15 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +4 -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 +22 -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 +11 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +28 -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/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 +17 -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 +27 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +6 -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 +26 -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 +48 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts +8 -0
- 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 +32 -0
- package/dest/node-cjs/barretenberg_wasm/index.d.ts +18 -0
- package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/index.js +51 -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 +40 -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 +30 -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 +3 -0
- package/dest/node-cjs/bigint-array/index.d.ts.map +1 -0
- package/dest/node-cjs/bigint-array/index.js +26 -0
- package/dest/node-cjs/bindgen/function_declaration.d.ts +11 -0
- package/dest/node-cjs/bindgen/function_declaration.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/function_declaration.js +3 -0
- package/dest/node-cjs/bindgen/index.d.ts +2 -0
- package/dest/node-cjs/bindgen/index.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/index.js +17 -0
- package/dest/node-cjs/bindgen/mappings.d.ts +4 -0
- package/dest/node-cjs/bindgen/mappings.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/mappings.js +68 -0
- package/dest/node-cjs/bindgen/rust.d.ts +2 -0
- package/dest/node-cjs/bindgen/rust.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/rust.js +48 -0
- package/dest/node-cjs/bindgen/to_camel_case.d.ts +2 -0
- package/dest/node-cjs/bindgen/to_camel_case.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/to_camel_case.js +15 -0
- package/dest/node-cjs/bindgen/typescript.d.ts +2 -0
- package/dest/node-cjs/bindgen/typescript.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/typescript.js +105 -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 +61 -0
- package/dest/node-cjs/crs/net_crs.d.ts.map +1 -0
- package/dest/node-cjs/crs/net_crs.js +102 -0
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts +38 -0
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts.map +1 -0
- package/dest/node-cjs/crs/node/ignition_files_crs.js +69 -0
- package/dest/node-cjs/crs/node/index.d.ts +36 -0
- package/dest/node-cjs/crs/node/index.d.ts.map +1 -0
- package/dest/node-cjs/crs/node/index.js +99 -0
- package/dest/node-cjs/examples/simple.rawtest.d.ts +2 -0
- package/dest/node-cjs/examples/simple.rawtest.d.ts.map +1 -0
- package/dest/node-cjs/examples/simple.rawtest.js +33 -0
- package/dest/node-cjs/examples/simple.test.d.ts +2 -0
- package/dest/node-cjs/examples/simple.test.d.ts.map +1 -0
- package/dest/node-cjs/examples/simple.test.js +25 -0
- package/dest/node-cjs/index.d.ts +5 -0
- package/dest/node-cjs/index.d.ts.map +1 -0
- package/dest/node-cjs/index.js +20 -0
- package/dest/node-cjs/main.d.ts +23 -0
- package/dest/node-cjs/main.d.ts.map +1 -0
- package/dest/node-cjs/main.js +735 -0
- package/dest/node-cjs/package.json +3 -0
- package/dest/node-cjs/proof/index.d.ts +19 -0
- package/dest/node-cjs/proof/index.d.ts.map +1 -0
- package/dest/node-cjs/proof/index.js +93 -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 +9 -0
- package/dest/node-cjs/serialize/buffer_reader.d.ts +28 -0
- package/dest/node-cjs/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/node-cjs/serialize/buffer_reader.js +70 -0
- package/dest/node-cjs/serialize/index.d.ts +4 -0
- package/dest/node-cjs/serialize/index.d.ts.map +1 -0
- package/dest/node-cjs/serialize/index.js +7 -0
- package/dest/node-cjs/serialize/output_type.d.ts +11 -0
- package/dest/node-cjs/serialize/output_type.d.ts.map +1 -0
- package/dest/node-cjs/serialize/output_type.js +52 -0
- package/dest/node-cjs/serialize/serialize.d.ts +53 -0
- package/dest/node-cjs/serialize/serialize.d.ts.map +1 -0
- package/dest/node-cjs/serialize/serialize.js +161 -0
- package/dest/node-cjs/types/fields.d.ts +43 -0
- package/dest/node-cjs/types/fields.d.ts.map +1 -0
- package/dest/node-cjs/types/fields.js +102 -0
- package/dest/node-cjs/types/fixed_size_buffer.d.ts +26 -0
- package/dest/node-cjs/types/fixed_size_buffer.d.ts.map +1 -0
- package/dest/node-cjs/types/fixed_size_buffer.js +57 -0
- package/dest/node-cjs/types/index.d.ts +6 -0
- package/dest/node-cjs/types/index.d.ts.map +1 -0
- package/dest/node-cjs/types/index.js +9 -0
- package/dest/node-cjs/types/point.d.ts +17 -0
- package/dest/node-cjs/types/point.d.ts.map +1 -0
- package/dest/node-cjs/types/point.js +35 -0
- package/dest/node-cjs/types/ptr.d.ts +13 -0
- package/dest/node-cjs/types/ptr.d.ts.map +1 -0
- package/dest/node-cjs/types/ptr.js +23 -0
- package/dest/node-cjs/types/raw_buffer.d.ts +3 -0
- package/dest/node-cjs/types/raw_buffer.d.ts.map +1 -0
- package/dest/node-cjs/types/raw_buffer.js +9 -0
- package/package.json +105 -0
- package/src/async_map/index.ts +15 -0
- 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 +362 -0
- package/src/barretenberg/blake2s.test.ts +70 -0
- package/src/barretenberg/common.test.ts +23 -0
- package/src/barretenberg/index.ts +130 -0
- package/src/barretenberg/pedersen.test.ts +62 -0
- package/src/barretenberg/poseidon.test.ts +39 -0
- package/src/barretenberg/schnorr.test.ts +182 -0
- package/src/barretenberg/verifier.ts +55 -0
- package/src/barretenberg_api/index.ts +1305 -0
- package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +138 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +10 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +15 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +18 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +10 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +60 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +138 -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 +18 -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 +12 -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 +22 -0
- package/src/barretenberg_wasm/helpers/browser/index.ts +22 -0
- package/src/barretenberg_wasm/helpers/index.ts +1 -0
- package/src/barretenberg_wasm/helpers/node/index.ts +44 -0
- package/src/barretenberg_wasm/helpers/node/node_endpoint.ts +28 -0
- package/src/barretenberg_wasm/index.test.ts +45 -0
- package/src/barretenberg_wasm/index.ts +50 -0
- package/src/benchmark/index.ts +26 -0
- package/src/benchmark/timer.ts +45 -0
- package/src/bigint-array/index.ts +21 -0
- package/src/bindgen/function_declaration.ts +11 -0
- package/src/bindgen/index.ts +17 -0
- package/src/bindgen/mappings.ts +66 -0
- package/src/bindgen/rust.ts +52 -0
- package/src/bindgen/to_camel_case.ts +10 -0
- package/src/bindgen/typescript.ts +116 -0
- package/src/crs/browser/cached_net_crs.ts +99 -0
- package/src/crs/browser/index.ts +1 -0
- package/src/crs/index.ts +1 -0
- package/src/crs/net_crs.ts +115 -0
- package/src/crs/node/ignition_files_crs.ts +74 -0
- package/src/crs/node/index.ts +102 -0
- package/src/examples/simple.rawtest.ts +38 -0
- package/src/examples/simple.test.ts +28 -0
- package/src/index.html +9 -0
- package/src/index.ts +12 -0
- package/src/main.ts +834 -0
- package/src/proof/index.ts +120 -0
- package/src/random/browser/index.ts +32 -0
- package/src/random/index.ts +1 -0
- package/src/random/node/index.ts +5 -0
- package/src/serialize/buffer_reader.ts +82 -0
- package/src/serialize/index.ts +3 -0
- package/src/serialize/output_type.ts +53 -0
- package/src/serialize/serialize.ts +157 -0
- package/src/types/fields.ts +115 -0
- package/src/types/fixed_size_buffer.ts +59 -0
- package/src/types/index.ts +5 -0
- package/src/types/point.ts +35 -0
- package/src/types/ptr.ts +20 -0
- package/src/types/raw_buffer.ts +3 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description
|
|
3
|
+
* The representation of a proof
|
|
4
|
+
* */
|
|
5
|
+
export type ProofData = {
|
|
6
|
+
/** @description Public inputs of a proof */
|
|
7
|
+
publicInputs: string[];
|
|
8
|
+
/** @description An byte array representing the proof */
|
|
9
|
+
proof: Uint8Array;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// Buffers are prepended with their size. The size takes 4 bytes.
|
|
13
|
+
const serializedBufferSize = 4;
|
|
14
|
+
const fieldByteSize = 32;
|
|
15
|
+
const publicInputOffset = 3;
|
|
16
|
+
const publicInputsOffsetBytes = publicInputOffset * fieldByteSize;
|
|
17
|
+
|
|
18
|
+
export function splitHonkProof(proofWithPublicInputs: Uint8Array): { publicInputs: Uint8Array; proof: Uint8Array } {
|
|
19
|
+
const proofAsStrings = deflattenFields(proofWithPublicInputs.slice(4));
|
|
20
|
+
|
|
21
|
+
const numPublicInputs = Number(proofAsStrings[1]);
|
|
22
|
+
|
|
23
|
+
// Account for the serialized buffer size at start
|
|
24
|
+
const publicInputsOffset = publicInputsOffsetBytes + serializedBufferSize;
|
|
25
|
+
// Get the part before and after the public inputs
|
|
26
|
+
const proofStart = proofWithPublicInputs.slice(0, publicInputsOffset);
|
|
27
|
+
const publicInputsSplitIndex = numPublicInputs * fieldByteSize;
|
|
28
|
+
const proofEnd = proofWithPublicInputs.slice(publicInputsOffset + publicInputsSplitIndex);
|
|
29
|
+
// Construct the proof without the public inputs
|
|
30
|
+
const proof = new Uint8Array([...proofStart, ...proofEnd]);
|
|
31
|
+
|
|
32
|
+
// Fetch the number of public inputs out of the proof string
|
|
33
|
+
const publicInputs = proofWithPublicInputs.slice(publicInputsOffset, publicInputsOffset + publicInputsSplitIndex);
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
proof,
|
|
37
|
+
publicInputs,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function reconstructHonkProof(publicInputs: Uint8Array, proof: Uint8Array): Uint8Array {
|
|
42
|
+
const proofStart = proof.slice(0, publicInputsOffsetBytes + serializedBufferSize);
|
|
43
|
+
const proofEnd = proof.slice(publicInputsOffsetBytes + serializedBufferSize);
|
|
44
|
+
|
|
45
|
+
// Concatenate publicInputs and proof
|
|
46
|
+
const proofWithPublicInputs = Uint8Array.from([...proofStart, ...publicInputs, ...proofEnd]);
|
|
47
|
+
|
|
48
|
+
return proofWithPublicInputs;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function reconstructUltraPlonkProof(proofData: ProofData): Uint8Array {
|
|
52
|
+
// Flatten publicInputs
|
|
53
|
+
const publicInputsConcatenated = flattenFieldsAsArray(proofData.publicInputs);
|
|
54
|
+
|
|
55
|
+
// Concatenate publicInputs and proof
|
|
56
|
+
const proofWithPublicInputs = Uint8Array.from([...publicInputsConcatenated, ...proofData.proof]);
|
|
57
|
+
|
|
58
|
+
return proofWithPublicInputs;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function deflattenFields(flattenedFields: Uint8Array): string[] {
|
|
62
|
+
const publicInputSize = 32;
|
|
63
|
+
const chunkedFlattenedPublicInputs: Uint8Array[] = [];
|
|
64
|
+
|
|
65
|
+
for (let i = 0; i < flattenedFields.length; i += publicInputSize) {
|
|
66
|
+
const publicInput = flattenedFields.slice(i, i + publicInputSize);
|
|
67
|
+
chunkedFlattenedPublicInputs.push(publicInput);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return chunkedFlattenedPublicInputs.map(uint8ArrayToHex);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function flattenFieldsAsArray(fields: string[]): Uint8Array {
|
|
74
|
+
const flattenedPublicInputs = fields.map(hexToUint8Array);
|
|
75
|
+
return flattenUint8Arrays(flattenedPublicInputs);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function flattenUint8Arrays(arrays: Uint8Array[]): Uint8Array {
|
|
79
|
+
const totalLength = arrays.reduce((acc, val) => acc + val.length, 0);
|
|
80
|
+
const result = new Uint8Array(totalLength);
|
|
81
|
+
|
|
82
|
+
let offset = 0;
|
|
83
|
+
for (const arr of arrays) {
|
|
84
|
+
result.set(arr, offset);
|
|
85
|
+
offset += arr.length;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function uint8ArrayToHex(buffer: Uint8Array): string {
|
|
92
|
+
const hex: string[] = [];
|
|
93
|
+
|
|
94
|
+
buffer.forEach(function (i) {
|
|
95
|
+
let h = i.toString(16);
|
|
96
|
+
if (h.length % 2) {
|
|
97
|
+
h = '0' + h;
|
|
98
|
+
}
|
|
99
|
+
hex.push(h);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
return '0x' + hex.join('');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function hexToUint8Array(hex: string): Uint8Array {
|
|
106
|
+
const sanitisedHex = BigInt(hex).toString(16).padStart(64, '0');
|
|
107
|
+
|
|
108
|
+
const len = sanitisedHex.length / 2;
|
|
109
|
+
const u8 = new Uint8Array(len);
|
|
110
|
+
|
|
111
|
+
let i = 0;
|
|
112
|
+
let j = 0;
|
|
113
|
+
while (i < len) {
|
|
114
|
+
u8[i] = parseInt(sanitisedHex.slice(j, j + 2), 16);
|
|
115
|
+
i += 1;
|
|
116
|
+
j += 2;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return u8;
|
|
120
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const randomBytes = (len: number) => {
|
|
2
|
+
const getWebCrypto = () => {
|
|
3
|
+
if (typeof window !== 'undefined' && window.crypto) return window.crypto;
|
|
4
|
+
if (typeof globalThis !== 'undefined' && globalThis.crypto) return globalThis.crypto;
|
|
5
|
+
return undefined;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const crypto = getWebCrypto();
|
|
9
|
+
if (!crypto) {
|
|
10
|
+
throw new Error('randomBytes UnsupportedEnvironment');
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const buf = new Uint8Array(len);
|
|
14
|
+
|
|
15
|
+
// limit of Crypto.getRandomValues()
|
|
16
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues
|
|
17
|
+
const MAX_BYTES = 65536;
|
|
18
|
+
|
|
19
|
+
if (len > MAX_BYTES) {
|
|
20
|
+
// this is the max bytes crypto.getRandomValues
|
|
21
|
+
// can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
|
|
22
|
+
for (let generated = 0; generated < len; generated += MAX_BYTES) {
|
|
23
|
+
// buffer.slice automatically checks if the end is past the end of
|
|
24
|
+
// the buffer so we don't have to here
|
|
25
|
+
crypto.getRandomValues(buf.subarray(generated, generated + MAX_BYTES));
|
|
26
|
+
}
|
|
27
|
+
} else {
|
|
28
|
+
crypto.getRandomValues(buf);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return buf;
|
|
32
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './node/index.js';
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export class BufferReader {
|
|
2
|
+
private index: number;
|
|
3
|
+
constructor(private buffer: Uint8Array, offset = 0) {
|
|
4
|
+
this.index = offset;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
public static asReader(bufferOrReader: Uint8Array | BufferReader) {
|
|
8
|
+
return bufferOrReader instanceof BufferReader ? bufferOrReader : new BufferReader(bufferOrReader);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
public readNumber(): number {
|
|
12
|
+
const dataView = new DataView(this.buffer.buffer, this.buffer.byteOffset + this.index, 4);
|
|
13
|
+
this.index += 4;
|
|
14
|
+
return dataView.getUint32(0, false);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public readBoolean(): boolean {
|
|
18
|
+
this.index += 1;
|
|
19
|
+
return Boolean(this.buffer.at(this.index - 1));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public readBytes(n: number): Uint8Array {
|
|
23
|
+
this.index += n;
|
|
24
|
+
return this.buffer.slice(this.index - n, this.index);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public readNumberVector(): number[] {
|
|
28
|
+
return this.readVector({
|
|
29
|
+
fromBuffer: (reader: BufferReader) => reader.readNumber(),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public readVector<T>(itemDeserializer: { fromBuffer: (reader: BufferReader) => T }): T[] {
|
|
34
|
+
const size = this.readNumber();
|
|
35
|
+
const result = new Array<T>(size);
|
|
36
|
+
for (let i = 0; i < size; i++) {
|
|
37
|
+
result[i] = itemDeserializer.fromBuffer(this);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public readArray<T>(
|
|
43
|
+
size: number,
|
|
44
|
+
itemDeserializer: {
|
|
45
|
+
fromBuffer: (reader: BufferReader) => T;
|
|
46
|
+
},
|
|
47
|
+
): T[] {
|
|
48
|
+
const result = new Array<T>(size);
|
|
49
|
+
for (let i = 0; i < size; i++) {
|
|
50
|
+
result[i] = itemDeserializer.fromBuffer(this);
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public readObject<T>(deserializer: { fromBuffer: (reader: BufferReader) => T }): T {
|
|
56
|
+
return deserializer.fromBuffer(this);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public peekBytes(n?: number) {
|
|
60
|
+
return this.buffer.subarray(this.index, n ? this.index + n : undefined);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public readString(): string {
|
|
64
|
+
return new TextDecoder().decode(this.readBuffer());
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
public readBuffer(): Uint8Array {
|
|
68
|
+
const size = this.readNumber();
|
|
69
|
+
return this.readBytes(size);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public readMap<T>(deserializer: { fromBuffer: (reader: BufferReader) => T }): { [key: string]: T } {
|
|
73
|
+
const numEntries = this.readNumber();
|
|
74
|
+
const map: { [key: string]: T } = {};
|
|
75
|
+
for (let i = 0; i < numEntries; i++) {
|
|
76
|
+
const key = this.readString();
|
|
77
|
+
const value = this.readObject<T>(deserializer);
|
|
78
|
+
map[key] = value;
|
|
79
|
+
}
|
|
80
|
+
return map;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { BufferReader } from './buffer_reader.js';
|
|
2
|
+
|
|
3
|
+
export interface OutputType<T = any> {
|
|
4
|
+
SIZE_IN_BYTES?: number;
|
|
5
|
+
fromBuffer: (b: Uint8Array | BufferReader) => T;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function BoolDeserializer(): OutputType {
|
|
9
|
+
return {
|
|
10
|
+
SIZE_IN_BYTES: 1,
|
|
11
|
+
fromBuffer: (buf: Uint8Array | BufferReader) => {
|
|
12
|
+
const reader = BufferReader.asReader(buf);
|
|
13
|
+
return reader.readBoolean();
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function NumberDeserializer(): OutputType {
|
|
19
|
+
return {
|
|
20
|
+
SIZE_IN_BYTES: 4,
|
|
21
|
+
fromBuffer: (buf: Uint8Array | BufferReader) => {
|
|
22
|
+
const reader = BufferReader.asReader(buf);
|
|
23
|
+
return reader.readNumber();
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function VectorDeserializer<T>(t: OutputType<T>): OutputType {
|
|
29
|
+
return {
|
|
30
|
+
fromBuffer: (buf: Uint8Array | BufferReader) => {
|
|
31
|
+
const reader = BufferReader.asReader(buf);
|
|
32
|
+
return reader.readVector(t);
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function BufferDeserializer(): OutputType {
|
|
38
|
+
return {
|
|
39
|
+
fromBuffer: (buf: Uint8Array | BufferReader) => {
|
|
40
|
+
const reader = BufferReader.asReader(buf);
|
|
41
|
+
return reader.readBuffer();
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function StringDeserializer(): OutputType {
|
|
47
|
+
return {
|
|
48
|
+
fromBuffer: (buf: Uint8Array | BufferReader) => {
|
|
49
|
+
const reader = BufferReader.asReader(buf);
|
|
50
|
+
return reader.readString();
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { RawBuffer } from '../types/raw_buffer.js';
|
|
2
|
+
|
|
3
|
+
// For serializing bool.
|
|
4
|
+
export function boolToBuffer(b: boolean) {
|
|
5
|
+
const buf = new Uint8Array(1);
|
|
6
|
+
buf[0] = b ? 1 : 0;
|
|
7
|
+
return buf;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// For serializing numbers to 32 bit little-endian form.
|
|
11
|
+
export function numToUInt32LE(n: number, bufferSize = 4) {
|
|
12
|
+
const buf = new Uint8Array(bufferSize);
|
|
13
|
+
new DataView(buf.buffer).setUint32(buf.byteLength - 4, n, true);
|
|
14
|
+
return buf;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// For serializing numbers to 32 bit big-endian form.
|
|
18
|
+
export function numToUInt32BE(n: number, bufferSize = 4) {
|
|
19
|
+
const buf = new Uint8Array(bufferSize);
|
|
20
|
+
new DataView(buf.buffer).setUint32(buf.byteLength - 4, n, false);
|
|
21
|
+
return buf;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// For serializing signed numbers to 32 bit big-endian form.
|
|
25
|
+
export function numToInt32BE(n: number, bufferSize = 4) {
|
|
26
|
+
const buf = new Uint8Array(bufferSize);
|
|
27
|
+
new DataView(buf.buffer).setInt32(buf.byteLength - 4, n, false);
|
|
28
|
+
return buf;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// For serializing numbers to 8 bit form.
|
|
32
|
+
export function numToUInt8(n: number) {
|
|
33
|
+
const buf = new Uint8Array(1);
|
|
34
|
+
buf[0] = n;
|
|
35
|
+
return buf;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function concatenateUint8Arrays(arrayOfUint8Arrays: Uint8Array[]) {
|
|
39
|
+
const totalLength = arrayOfUint8Arrays.reduce((prev, curr) => prev + curr.length, 0);
|
|
40
|
+
const result = new Uint8Array(totalLength);
|
|
41
|
+
let length = 0;
|
|
42
|
+
for (const array of arrayOfUint8Arrays) {
|
|
43
|
+
result.set(array, length);
|
|
44
|
+
length += array.length;
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function uint8ArrayToHexString(uint8Array: Uint8Array) {
|
|
50
|
+
return uint8Array.reduce((accumulator, byte) => accumulator + byte.toString(16).padStart(2, '0'), '');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// For serializing a buffer as a vector.
|
|
54
|
+
export function serializeBufferToVector(buf: Uint8Array) {
|
|
55
|
+
return concatenateUint8Arrays([numToInt32BE(buf.length), buf]);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function serializeBigInt(n: bigint, width = 32) {
|
|
59
|
+
const buf = new Uint8Array(width);
|
|
60
|
+
for (let i = 0; i < width; i++) {
|
|
61
|
+
buf[width - i - 1] = Number((n >> BigInt(i * 8)) & 0xffn);
|
|
62
|
+
}
|
|
63
|
+
return buf;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function deserializeBigInt(buf: Uint8Array, offset = 0, width = 32) {
|
|
67
|
+
let result = 0n;
|
|
68
|
+
for (let i = 0; i < width; i++) {
|
|
69
|
+
result = (result << BigInt(8)) | BigInt(buf[offset + i]);
|
|
70
|
+
}
|
|
71
|
+
return { elem: result, adv: width };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function serializeDate(date: Date) {
|
|
75
|
+
return serializeBigInt(BigInt(date.getTime()), 8);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function deserializeBufferFromVector(vector: Uint8Array, offset = 0) {
|
|
79
|
+
const length = new DataView(vector.buffer, vector.byteOffset + offset, 4).getUint32(0, false);
|
|
80
|
+
const adv = 4 + length;
|
|
81
|
+
const elem = vector.slice(offset + 4, offset + adv);
|
|
82
|
+
return { elem, adv };
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function deserializeBool(buf: Uint8Array, offset = 0) {
|
|
86
|
+
const adv = 1;
|
|
87
|
+
const elem = buf[offset] !== 0;
|
|
88
|
+
return { elem, adv };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function deserializeUInt32(buf: Uint8Array, offset = 0) {
|
|
92
|
+
const adv = 4;
|
|
93
|
+
const elem = new DataView(buf.buffer, buf.byteOffset + offset, adv).getUint32(0, false);
|
|
94
|
+
return { elem, adv };
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function deserializeInt32(buf: Uint8Array, offset = 0) {
|
|
98
|
+
const adv = 4;
|
|
99
|
+
const elem = new DataView(buf.buffer, buf.byteOffset + offset, adv).getInt32(0, false);
|
|
100
|
+
return { elem, adv };
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export function deserializeField(buf: Uint8Array, offset = 0) {
|
|
104
|
+
const adv = 32;
|
|
105
|
+
const elem = buf.slice(offset, offset + adv);
|
|
106
|
+
return { elem, adv };
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// For serializing an array of fixed length elements.
|
|
110
|
+
export function serializeBufferArrayToVector(arr: Uint8Array[]) {
|
|
111
|
+
return concatenateUint8Arrays([numToUInt32BE(arr.length), ...arr.flat()]);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export function deserializeArrayFromVector<T>(
|
|
115
|
+
deserialize: (buf: Uint8Array, offset: number) => { elem: T; adv: number },
|
|
116
|
+
vector: Uint8Array,
|
|
117
|
+
offset = 0,
|
|
118
|
+
) {
|
|
119
|
+
let pos = offset;
|
|
120
|
+
const size = new DataView(vector.buffer, vector.byteOffset + pos, 4).getUint32(0, false);
|
|
121
|
+
pos += 4;
|
|
122
|
+
const arr = new Array<T>(size);
|
|
123
|
+
for (let i = 0; i < size; ++i) {
|
|
124
|
+
const { elem, adv } = deserialize(vector, pos);
|
|
125
|
+
pos += adv;
|
|
126
|
+
arr[i] = elem;
|
|
127
|
+
}
|
|
128
|
+
return { elem: arr, adv: pos - offset };
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** A type that can be written to a buffer. */
|
|
132
|
+
export type Bufferable = boolean | Uint8Array | number | string | { toBuffer: () => Uint8Array } | Bufferable[];
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Serializes a list of objects contiguously for calling into wasm.
|
|
136
|
+
* @param objs - Objects to serialize.
|
|
137
|
+
* @returns A buffer list with the concatenation of all fields.
|
|
138
|
+
*/
|
|
139
|
+
export function serializeBufferable(obj: Bufferable): Uint8Array {
|
|
140
|
+
if (Array.isArray(obj)) {
|
|
141
|
+
return serializeBufferArrayToVector(obj.map(serializeBufferable));
|
|
142
|
+
} else if (obj instanceof RawBuffer) {
|
|
143
|
+
return obj;
|
|
144
|
+
} else if (obj instanceof Uint8Array) {
|
|
145
|
+
return serializeBufferToVector(obj);
|
|
146
|
+
} else if (typeof obj === 'boolean') {
|
|
147
|
+
return boolToBuffer(obj);
|
|
148
|
+
} else if (typeof obj === 'number') {
|
|
149
|
+
return numToUInt32BE(obj);
|
|
150
|
+
} else if (typeof obj === 'bigint') {
|
|
151
|
+
return serializeBigInt(obj);
|
|
152
|
+
} else if (typeof obj === 'string') {
|
|
153
|
+
return serializeBufferToVector(new TextEncoder().encode(obj));
|
|
154
|
+
} else {
|
|
155
|
+
return obj.toBuffer();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { randomBytes } from '../random/index.js';
|
|
2
|
+
import { toBigIntBE, toBufferBE } from '../bigint-array/index.js';
|
|
3
|
+
import { BufferReader, uint8ArrayToHexString } from '../serialize/index.js';
|
|
4
|
+
|
|
5
|
+
// TODO(#4189): Replace with implementation in yarn-project/foundation/src/fields/fields.ts
|
|
6
|
+
/**
|
|
7
|
+
* Fr field class.
|
|
8
|
+
* @dev This class is used to represent elements of BN254 scalar field or elements in the base field of Grumpkin.
|
|
9
|
+
* (Grumpkin's scalar field corresponds to BN254's base field and vice versa.)
|
|
10
|
+
*/
|
|
11
|
+
export class Fr {
|
|
12
|
+
static ZERO = new Fr(0n);
|
|
13
|
+
static MODULUS = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n;
|
|
14
|
+
static MAX_VALUE = this.MODULUS - 1n;
|
|
15
|
+
static SIZE_IN_BYTES = 32;
|
|
16
|
+
value: Uint8Array;
|
|
17
|
+
|
|
18
|
+
constructor(value: Uint8Array | bigint) {
|
|
19
|
+
// We convert buffer value to bigint to be able to check it fits within modulus
|
|
20
|
+
const valueBigInt = typeof value === 'bigint' ? value : toBigIntBE(value);
|
|
21
|
+
|
|
22
|
+
if (valueBigInt > Fr.MAX_VALUE) {
|
|
23
|
+
throw new Error(`Value 0x${valueBigInt.toString(16)} is greater or equal to field modulus.`);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
this.value = typeof value === 'bigint' ? toBufferBE(value) : value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static random() {
|
|
30
|
+
const r = toBigIntBE(randomBytes(64)) % Fr.MODULUS;
|
|
31
|
+
return new this(r);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static fromBuffer(buffer: Uint8Array | BufferReader) {
|
|
35
|
+
const reader = BufferReader.asReader(buffer);
|
|
36
|
+
return new this(reader.readBytes(this.SIZE_IN_BYTES));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static fromBufferReduce(buffer: Uint8Array | BufferReader) {
|
|
40
|
+
const reader = BufferReader.asReader(buffer);
|
|
41
|
+
return new this(toBigIntBE(reader.readBytes(this.SIZE_IN_BYTES)) % Fr.MODULUS);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static fromString(str: string) {
|
|
45
|
+
return this.fromBuffer(Buffer.from(str.replace(/^0x/i, ''), 'hex'));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
toBuffer() {
|
|
49
|
+
return this.value;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
toString() {
|
|
53
|
+
return '0x' + uint8ArrayToHexString(this.toBuffer());
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
equals(rhs: Fr) {
|
|
57
|
+
return this.value.every((v, i) => v === rhs.value[i]);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
isZero() {
|
|
61
|
+
return this.value.every(v => v === 0);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Fq field class.
|
|
67
|
+
* @dev This class is used to represent elements of BN254 base field or elements in the scalar field of Grumpkin.
|
|
68
|
+
* (Grumpkin's scalar field corresponds to BN254's base field and vice versa.)
|
|
69
|
+
*/
|
|
70
|
+
export class Fq {
|
|
71
|
+
static MODULUS = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n;
|
|
72
|
+
static MAX_VALUE = this.MODULUS - 1n;
|
|
73
|
+
static SIZE_IN_BYTES = 32;
|
|
74
|
+
|
|
75
|
+
constructor(public readonly value: bigint) {
|
|
76
|
+
if (value > Fq.MAX_VALUE) {
|
|
77
|
+
throw new Error(`Fq out of range ${value}.`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
static random() {
|
|
82
|
+
const r = toBigIntBE(randomBytes(64)) % Fq.MODULUS;
|
|
83
|
+
return new this(r);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
static fromBuffer(buffer: Uint8Array | BufferReader) {
|
|
87
|
+
const reader = BufferReader.asReader(buffer);
|
|
88
|
+
return new this(toBigIntBE(reader.readBytes(this.SIZE_IN_BYTES)));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
static fromBufferReduce(buffer: Uint8Array | BufferReader) {
|
|
92
|
+
const reader = BufferReader.asReader(buffer);
|
|
93
|
+
return new this(toBigIntBE(reader.readBytes(this.SIZE_IN_BYTES)) % Fr.MODULUS);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static fromString(str: string) {
|
|
97
|
+
return this.fromBuffer(Buffer.from(str.replace(/^0x/i, ''), 'hex'));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
toBuffer() {
|
|
101
|
+
return toBufferBE(this.value, Fq.SIZE_IN_BYTES);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
toString() {
|
|
105
|
+
return '0x' + this.value.toString(16);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
equals(rhs: Fq) {
|
|
109
|
+
return this.value === rhs.value;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
isZero() {
|
|
113
|
+
return this.value === 0n;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { randomBytes } from '../random/index.js';
|
|
2
|
+
import { BufferReader } from '../serialize/index.js';
|
|
3
|
+
|
|
4
|
+
export class Buffer32 {
|
|
5
|
+
static SIZE_IN_BYTES = 32;
|
|
6
|
+
|
|
7
|
+
constructor(public readonly buffer: Uint8Array) {}
|
|
8
|
+
|
|
9
|
+
static fromBuffer(buffer: Uint8Array | BufferReader) {
|
|
10
|
+
const reader = BufferReader.asReader(buffer);
|
|
11
|
+
return new Buffer32(reader.readBytes(this.SIZE_IN_BYTES));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static random() {
|
|
15
|
+
return new Buffer32(randomBytes(this.SIZE_IN_BYTES));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
toBuffer() {
|
|
19
|
+
return this.buffer;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export class Buffer64 {
|
|
24
|
+
static SIZE_IN_BYTES = 64;
|
|
25
|
+
|
|
26
|
+
constructor(public readonly buffer: Uint8Array) {}
|
|
27
|
+
|
|
28
|
+
static fromBuffer(buffer: Uint8Array | BufferReader) {
|
|
29
|
+
const reader = BufferReader.asReader(buffer);
|
|
30
|
+
return new Buffer64(reader.readBytes(this.SIZE_IN_BYTES));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static random() {
|
|
34
|
+
return new Buffer64(randomBytes(this.SIZE_IN_BYTES));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
toBuffer() {
|
|
38
|
+
return this.buffer;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export class Buffer128 {
|
|
43
|
+
static SIZE_IN_BYTES = 128;
|
|
44
|
+
|
|
45
|
+
constructor(public readonly buffer: Uint8Array) {}
|
|
46
|
+
|
|
47
|
+
static fromBuffer(buffer: Uint8Array | BufferReader) {
|
|
48
|
+
const reader = BufferReader.asReader(buffer);
|
|
49
|
+
return new Buffer128(reader.readBytes(this.SIZE_IN_BYTES));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static random() {
|
|
53
|
+
return new Buffer128(randomBytes(this.SIZE_IN_BYTES));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
toBuffer() {
|
|
57
|
+
return this.buffer;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Fr } from './index.js';
|
|
2
|
+
import { BufferReader } from '../serialize/buffer_reader.js';
|
|
3
|
+
|
|
4
|
+
export class Point {
|
|
5
|
+
static SIZE_IN_BYTES = 64;
|
|
6
|
+
static EMPTY = new Point(Fr.ZERO, Fr.ZERO);
|
|
7
|
+
|
|
8
|
+
constructor(public readonly x: Fr, public readonly y: Fr) {}
|
|
9
|
+
|
|
10
|
+
static random() {
|
|
11
|
+
// TODO: This is not a point on the curve!
|
|
12
|
+
return new Point(Fr.random(), Fr.random());
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromBuffer(buffer: Uint8Array | BufferReader) {
|
|
16
|
+
const reader = BufferReader.asReader(buffer);
|
|
17
|
+
return new this(Fr.fromBuffer(reader), Fr.fromBuffer(reader));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromString(address: string) {
|
|
21
|
+
return Point.fromBuffer(Buffer.from(address.replace(/^0x/i, ''), 'hex'));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
toBuffer() {
|
|
25
|
+
return Buffer.concat([this.x.toBuffer(), this.y.toBuffer()]);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
toString() {
|
|
29
|
+
return '0x' + this.toBuffer().toString('hex');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
equals(rhs: Point) {
|
|
33
|
+
return this.x.equals(rhs.x) && this.y.equals(rhs.y);
|
|
34
|
+
}
|
|
35
|
+
}
|
package/src/types/ptr.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BufferReader } from '../serialize/index.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Holds an opaque pointer into WASM memory.
|
|
5
|
+
* Currently only 4 bytes, but could grow to 8 bytes with wasm64.
|
|
6
|
+
*/
|
|
7
|
+
export class Ptr {
|
|
8
|
+
static SIZE_IN_BYTES = 4;
|
|
9
|
+
|
|
10
|
+
constructor(public readonly value: Uint8Array) {}
|
|
11
|
+
|
|
12
|
+
static fromBuffer(buffer: Uint8Array | BufferReader) {
|
|
13
|
+
const reader = BufferReader.asReader(buffer);
|
|
14
|
+
return new this(reader.readBytes(this.SIZE_IN_BYTES));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
toBuffer() {
|
|
18
|
+
return this.value;
|
|
19
|
+
}
|
|
20
|
+
}
|