@aztec/foundation 0.0.0-test.0
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 +1 -0
- package/dest/array/array.d.ts +71 -0
- package/dest/array/array.d.ts.map +1 -0
- package/dest/array/array.js +100 -0
- package/dest/array/index.d.ts +2 -0
- package/dest/array/index.d.ts.map +1 -0
- package/dest/array/index.js +1 -0
- package/dest/async-map/index.d.ts +13 -0
- package/dest/async-map/index.d.ts.map +1 -0
- package/dest/async-map/index.js +17 -0
- package/dest/async-pool/index.d.ts +3 -0
- package/dest/async-pool/index.d.ts.map +1 -0
- package/dest/async-pool/index.js +47 -0
- package/dest/bigint-buffer/index.d.ts +42 -0
- package/dest/bigint-buffer/index.d.ts.map +1 -0
- package/dest/bigint-buffer/index.js +76 -0
- package/dest/buffer/buffer32.d.ts +91 -0
- package/dest/buffer/buffer32.d.ts.map +1 -0
- package/dest/buffer/buffer32.js +115 -0
- package/dest/buffer/index.d.ts +2 -0
- package/dest/buffer/index.d.ts.map +1 -0
- package/dest/buffer/index.js +1 -0
- package/dest/collection/array.d.ts +101 -0
- package/dest/collection/array.d.ts.map +1 -0
- package/dest/collection/array.js +164 -0
- package/dest/collection/index.d.ts +3 -0
- package/dest/collection/index.d.ts.map +1 -0
- package/dest/collection/index.js +2 -0
- package/dest/collection/object.d.ts +14 -0
- package/dest/collection/object.d.ts.map +1 -0
- package/dest/collection/object.js +32 -0
- package/dest/committable/committable.d.ts +28 -0
- package/dest/committable/committable.d.ts.map +1 -0
- package/dest/committable/committable.js +36 -0
- package/dest/committable/index.d.ts +2 -0
- package/dest/committable/index.d.ts.map +1 -0
- package/dest/committable/index.js +1 -0
- package/dest/config/env_var.d.ts +2 -0
- package/dest/config/env_var.d.ts.map +1 -0
- package/dest/config/env_var.js +1 -0
- package/dest/config/index.d.ts +66 -0
- package/dest/config/index.d.ts.map +1 -0
- package/dest/config/index.js +125 -0
- package/dest/crypto/aes128/index.d.ts +34 -0
- package/dest/crypto/aes128/index.d.ts.map +1 -0
- package/dest/crypto/aes128/index.js +49 -0
- package/dest/crypto/ecdsa/index.d.ts +39 -0
- package/dest/crypto/ecdsa/index.d.ts.map +1 -0
- package/dest/crypto/ecdsa/index.js +88 -0
- package/dest/crypto/ecdsa/signature.d.ts +71 -0
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
- package/dest/crypto/ecdsa/signature.js +92 -0
- package/dest/crypto/grumpkin/index.d.ts +47 -0
- package/dest/crypto/grumpkin/index.d.ts.map +1 -0
- package/dest/crypto/grumpkin/index.js +154 -0
- package/dest/crypto/index.d.ts +15 -0
- package/dest/crypto/index.d.ts.map +1 -0
- package/dest/crypto/index.js +14 -0
- package/dest/crypto/keccak/index.d.ts +28 -0
- package/dest/crypto/keccak/index.d.ts.map +1 -0
- package/dest/crypto/keccak/index.js +248 -0
- package/dest/crypto/keys/index.d.ts +5 -0
- package/dest/crypto/keys/index.d.ts.map +1 -0
- package/dest/crypto/keys/index.js +7 -0
- package/dest/crypto/pedersen/index.d.ts +2 -0
- package/dest/crypto/pedersen/index.d.ts.map +1 -0
- package/dest/crypto/pedersen/index.js +1 -0
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts +13 -0
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.elliptic.js +582 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts +11 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.noble.js +558 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +21 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.wasm.js +41 -0
- package/dest/crypto/poseidon/index.d.ts +26 -0
- package/dest/crypto/poseidon/index.d.ts.map +1 -0
- package/dest/crypto/poseidon/index.js +58 -0
- package/dest/crypto/random/index.d.ts +25 -0
- package/dest/crypto/random/index.d.ts.map +1 -0
- package/dest/crypto/random/index.js +70 -0
- package/dest/crypto/random/randomness_singleton.d.ts +25 -0
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
- package/dest/crypto/random/randomness_singleton.js +55 -0
- package/dest/crypto/schnorr/index.d.ts +30 -0
- package/dest/crypto/schnorr/index.d.ts.map +1 -0
- package/dest/crypto/schnorr/index.js +68 -0
- package/dest/crypto/schnorr/signature.d.ts +70 -0
- package/dest/crypto/schnorr/signature.d.ts.map +1 -0
- package/dest/crypto/schnorr/signature.js +93 -0
- package/dest/crypto/secp256k1/index.d.ts +32 -0
- package/dest/crypto/secp256k1/index.d.ts.map +1 -0
- package/dest/crypto/secp256k1/index.js +116 -0
- package/dest/crypto/secp256k1-signer/index.d.ts +3 -0
- package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/index.js +2 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
- package/dest/crypto/secp256k1-signer/utils.d.ts +40 -0
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
- package/dest/crypto/secp256k1-signer/utils.js +84 -0
- package/dest/crypto/serialize.d.ts +53 -0
- package/dest/crypto/serialize.d.ts.map +1 -0
- package/dest/crypto/serialize.js +68 -0
- package/dest/crypto/sha256/index.d.ts +20 -0
- package/dest/crypto/sha256/index.d.ts.map +1 -0
- package/dest/crypto/sha256/index.js +166 -0
- package/dest/crypto/sha512/index.d.ts +11 -0
- package/dest/crypto/sha512/index.d.ts.map +1 -0
- package/dest/crypto/sha512/index.js +12 -0
- package/dest/crypto/signature/index.d.ts +19 -0
- package/dest/crypto/signature/index.d.ts.map +1 -0
- package/dest/crypto/signature/index.js +3 -0
- package/dest/crypto/sync/index.d.ts +3 -0
- package/dest/crypto/sync/index.d.ts.map +1 -0
- package/dest/crypto/sync/index.js +4 -0
- package/dest/crypto/sync/pedersen/index.d.ts +21 -0
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
- package/dest/crypto/sync/pedersen/index.js +38 -0
- package/dest/crypto/sync/poseidon/index.d.ts +26 -0
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
- package/dest/crypto/sync/poseidon/index.js +53 -0
- package/dest/decorators/index.d.ts +2 -0
- package/dest/decorators/index.d.ts.map +1 -0
- package/dest/decorators/index.js +1 -0
- package/dest/decorators/memoize.d.ts +2 -0
- package/dest/decorators/memoize.d.ts.map +1 -0
- package/dest/decorators/memoize.js +11 -0
- package/dest/error/index.d.ts +21 -0
- package/dest/error/index.d.ts.map +1 -0
- package/dest/error/index.js +17 -0
- package/dest/eth-address/index.d.ts +134 -0
- package/dest/eth-address/index.d.ts.map +1 -0
- package/dest/eth-address/index.js +198 -0
- package/dest/eth-signature/eth_signature.d.ts +62 -0
- package/dest/eth-signature/eth_signature.d.ts.map +1 -0
- package/dest/eth-signature/eth_signature.js +91 -0
- package/dest/eth-signature/index.d.ts +2 -0
- package/dest/eth-signature/index.d.ts.map +1 -0
- package/dest/eth-signature/index.js +1 -0
- package/dest/fields/coordinate.d.ts +68 -0
- package/dest/fields/coordinate.d.ts.map +1 -0
- package/dest/fields/coordinate.js +96 -0
- package/dest/fields/fields.d.ts +176 -0
- package/dest/fields/fields.d.ts.map +1 -0
- package/dest/fields/fields.js +383 -0
- package/dest/fields/index.d.ts +4 -0
- package/dest/fields/index.d.ts.map +1 -0
- package/dest/fields/index.js +3 -0
- package/dest/fields/point.d.ts +175 -0
- package/dest/fields/point.d.ts.map +1 -0
- package/dest/fields/point.js +260 -0
- package/dest/fs/index.d.ts +2 -0
- package/dest/fs/index.d.ts.map +1 -0
- package/dest/fs/index.js +1 -0
- package/dest/fs/run_in_dir.d.ts +2 -0
- package/dest/fs/run_in_dir.d.ts.map +1 -0
- package/dest/fs/run_in_dir.js +31 -0
- package/dest/index.d.ts +31 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +31 -0
- package/dest/iterable/all.d.ts +9 -0
- package/dest/iterable/all.d.ts.map +1 -0
- package/dest/iterable/all.js +18 -0
- package/dest/iterable/filter.d.ts +10 -0
- package/dest/iterable/filter.d.ts.map +1 -0
- package/dest/iterable/filter.js +48 -0
- package/dest/iterable/index.d.ts +8 -0
- package/dest/iterable/index.d.ts.map +1 -0
- package/dest/iterable/index.js +7 -0
- package/dest/iterable/isAsyncIt.d.ts +7 -0
- package/dest/iterable/isAsyncIt.d.ts.map +1 -0
- package/dest/iterable/isAsyncIt.js +7 -0
- package/dest/iterable/map.d.ts +12 -0
- package/dest/iterable/map.d.ts.map +1 -0
- package/dest/iterable/map.js +36 -0
- package/dest/iterable/peek.d.ts +19 -0
- package/dest/iterable/peek.d.ts.map +1 -0
- package/dest/iterable/peek.js +33 -0
- package/dest/iterable/sort.d.ts +14 -0
- package/dest/iterable/sort.d.ts.map +1 -0
- package/dest/iterable/sort.js +15 -0
- package/dest/iterable/take.d.ts +10 -0
- package/dest/iterable/take.d.ts.map +1 -0
- package/dest/iterable/take.js +32 -0
- package/dest/iterable/toArray.d.ts +2 -0
- package/dest/iterable/toArray.d.ts.map +1 -0
- package/dest/iterable/toArray.js +7 -0
- package/dest/jest/setup.js +7 -0
- package/dest/json-rpc/client/fetch.d.ts +32 -0
- package/dest/json-rpc/client/fetch.d.ts.map +1 -0
- package/dest/json-rpc/client/fetch.js +77 -0
- package/dest/json-rpc/client/index.d.ts +3 -0
- package/dest/json-rpc/client/index.d.ts.map +1 -0
- package/dest/json-rpc/client/index.js +2 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +26 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
- package/dest/json-rpc/client/safe_json_rpc_client.js +57 -0
- package/dest/json-rpc/client/undici.d.ts +5 -0
- package/dest/json-rpc/client/undici.d.ts.map +1 -0
- package/dest/json-rpc/client/undici.js +63 -0
- package/dest/json-rpc/convert.d.ts +27 -0
- package/dest/json-rpc/convert.d.ts.map +1 -0
- package/dest/json-rpc/convert.js +48 -0
- package/dest/json-rpc/fixtures/class_a.d.ts +11 -0
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/class_a.js +20 -0
- package/dest/json-rpc/fixtures/class_b.d.ts +11 -0
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/class_b.js +20 -0
- package/dest/json-rpc/fixtures/test_state.d.ts +89 -0
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
- package/dest/json-rpc/fixtures/test_state.js +131 -0
- package/dest/json-rpc/index.d.ts +2 -0
- package/dest/json-rpc/index.d.ts.map +1 -0
- package/dest/json-rpc/index.js +1 -0
- package/dest/json-rpc/js_utils.d.ts +13 -0
- package/dest/json-rpc/js_utils.d.ts.map +1 -0
- package/dest/json-rpc/js_utils.js +16 -0
- package/dest/json-rpc/server/index.d.ts +2 -0
- package/dest/json-rpc/server/index.d.ts.map +1 -0
- package/dest/json-rpc/server/index.js +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +140 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.js +346 -0
- package/dest/json-rpc/server/telemetry.d.ts +2 -0
- package/dest/json-rpc/server/telemetry.d.ts.map +1 -0
- package/dest/json-rpc/server/telemetry.js +0 -0
- package/dest/json-rpc/test/index.d.ts +2 -0
- package/dest/json-rpc/test/index.d.ts.map +1 -0
- package/dest/json-rpc/test/index.js +1 -0
- package/dest/json-rpc/test/integration.d.ts +15 -0
- package/dest/json-rpc/test/integration.d.ts.map +1 -0
- package/dest/json-rpc/test/integration.js +21 -0
- package/dest/log/console.d.ts +11 -0
- package/dest/log/console.d.ts.map +1 -0
- package/dest/log/console.js +36 -0
- package/dest/log/debug.d.ts +56 -0
- package/dest/log/debug.d.ts.map +1 -0
- package/dest/log/debug.js +75 -0
- package/dest/log/gcloud-logger-config.d.ts +14 -0
- package/dest/log/gcloud-logger-config.d.ts.map +1 -0
- package/dest/log/gcloud-logger-config.js +66 -0
- package/dest/log/index.d.ts +7 -0
- package/dest/log/index.d.ts.map +1 -0
- package/dest/log/index.js +6 -0
- package/dest/log/libp2p_logger.d.ts +7 -0
- package/dest/log/libp2p_logger.d.ts.map +1 -0
- package/dest/log/libp2p_logger.js +55 -0
- package/dest/log/log-filters.d.ts +7 -0
- package/dest/log/log-filters.d.ts.map +1 -0
- package/dest/log/log-filters.js +59 -0
- package/dest/log/log-levels.d.ts +3 -0
- package/dest/log/log-levels.d.ts.map +1 -0
- package/dest/log/log-levels.js +10 -0
- package/dest/log/log_fn.d.ts +7 -0
- package/dest/log/log_fn.d.ts.map +1 -0
- package/dest/log/log_fn.js +1 -0
- package/dest/log/log_history.d.ts +31 -0
- package/dest/log/log_history.d.ts.map +1 -0
- package/dest/log/log_history.js +38 -0
- package/dest/log/pino-logger.d.ts +57 -0
- package/dest/log/pino-logger.d.ts.map +1 -0
- package/dest/log/pino-logger.js +207 -0
- package/dest/message/index.d.ts +32 -0
- package/dest/message/index.d.ts.map +1 -0
- package/dest/message/index.js +27 -0
- package/dest/mutex/index.d.ts +53 -0
- package/dest/mutex/index.d.ts.map +1 -0
- package/dest/mutex/index.js +78 -0
- package/dest/mutex/mutex_database.d.ts +10 -0
- package/dest/mutex/mutex_database.d.ts.map +1 -0
- package/dest/mutex/mutex_database.js +4 -0
- package/dest/noir/index.d.ts +2 -0
- package/dest/noir/index.d.ts.map +1 -0
- package/dest/noir/index.js +1 -0
- package/dest/noir/noir_package_config.d.ts +129 -0
- package/dest/noir/noir_package_config.d.ts.map +1 -0
- package/dest/noir/noir_package_config.js +36 -0
- package/dest/promise/index.d.ts +3 -0
- package/dest/promise/index.d.ts.map +1 -0
- package/dest/promise/index.js +2 -0
- package/dest/promise/running-promise.d.ts +47 -0
- package/dest/promise/running-promise.d.ts.map +1 -0
- package/dest/promise/running-promise.js +110 -0
- package/dest/promise/utils.d.ts +12 -0
- package/dest/promise/utils.d.ts.map +1 -0
- package/dest/promise/utils.js +20 -0
- package/dest/queue/base_memory_queue.d.ts +65 -0
- package/dest/queue/base_memory_queue.d.ts.map +1 -0
- package/dest/queue/base_memory_queue.js +116 -0
- package/dest/queue/batch_queue.d.ts +47 -0
- package/dest/queue/batch_queue.d.ts.map +1 -0
- package/dest/queue/batch_queue.js +105 -0
- package/dest/queue/bounded_serial_queue.d.ts +56 -0
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
- package/dest/queue/bounded_serial_queue.js +84 -0
- package/dest/queue/fifo_memory_queue.d.ts +21 -0
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
- package/dest/queue/fifo_memory_queue.js +29 -0
- package/dest/queue/index.d.ts +7 -0
- package/dest/queue/index.d.ts.map +1 -0
- package/dest/queue/index.js +6 -0
- package/dest/queue/priority_memory_queue.d.ts +13 -0
- package/dest/queue/priority_memory_queue.d.ts.map +1 -0
- package/dest/queue/priority_memory_queue.js +16 -0
- package/dest/queue/priority_queue.d.ts +14 -0
- package/dest/queue/priority_queue.d.ts.map +1 -0
- package/dest/queue/priority_queue.js +29 -0
- package/dest/queue/semaphore.d.ts +23 -0
- package/dest/queue/semaphore.d.ts.map +1 -0
- package/dest/queue/semaphore.js +26 -0
- package/dest/queue/serial_queue.d.ts +49 -0
- package/dest/queue/serial_queue.d.ts.map +1 -0
- package/dest/queue/serial_queue.js +72 -0
- package/dest/retry/index.d.ts +44 -0
- package/dest/retry/index.d.ts.map +1 -0
- package/dest/retry/index.js +93 -0
- package/dest/running-promise/index.d.ts +2 -0
- package/dest/running-promise/index.d.ts.map +1 -0
- package/dest/running-promise/index.js +1 -0
- package/dest/schemas/api.d.ts +21 -0
- package/dest/schemas/api.d.ts.map +1 -0
- package/dest/schemas/api.js +3 -0
- package/dest/schemas/index.d.ts +6 -0
- package/dest/schemas/index.d.ts.map +1 -0
- package/dest/schemas/index.js +5 -0
- package/dest/schemas/parse.d.ts +9 -0
- package/dest/schemas/parse.d.ts.map +1 -0
- package/dest/schemas/parse.js +22 -0
- package/dest/schemas/schemas.d.ts +45 -0
- package/dest/schemas/schemas.d.ts.map +1 -0
- package/dest/schemas/schemas.js +38 -0
- package/dest/schemas/types.d.ts +3 -0
- package/dest/schemas/types.d.ts.map +1 -0
- package/dest/schemas/types.js +1 -0
- package/dest/schemas/utils.d.ts +53 -0
- package/dest/schemas/utils.d.ts.map +1 -0
- package/dest/schemas/utils.js +60 -0
- package/dest/serialize/buffer_reader.d.ts +239 -0
- package/dest/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/serialize/buffer_reader.js +290 -0
- package/dest/serialize/field_reader.d.ts +112 -0
- package/dest/serialize/field_reader.d.ts.map +1 -0
- package/dest/serialize/field_reader.js +147 -0
- package/dest/serialize/free_funcs.d.ts +105 -0
- package/dest/serialize/free_funcs.d.ts.map +1 -0
- package/dest/serialize/free_funcs.js +189 -0
- package/dest/serialize/index.d.ts +7 -0
- package/dest/serialize/index.d.ts.map +1 -0
- package/dest/serialize/index.js +6 -0
- package/dest/serialize/serialize.d.ts +182 -0
- package/dest/serialize/serialize.d.ts.map +1 -0
- package/dest/serialize/serialize.js +248 -0
- package/dest/serialize/type_registry.d.ts +23 -0
- package/dest/serialize/type_registry.d.ts.map +1 -0
- package/dest/serialize/type_registry.js +61 -0
- package/dest/serialize/types.d.ts +33 -0
- package/dest/serialize/types.d.ts.map +1 -0
- package/dest/serialize/types.js +21 -0
- package/dest/sleep/index.d.ts +51 -0
- package/dest/sleep/index.d.ts.map +1 -0
- package/dest/sleep/index.js +67 -0
- package/dest/string/index.d.ts +11 -0
- package/dest/string/index.d.ts.map +1 -0
- package/dest/string/index.js +24 -0
- package/dest/testing/files/index.d.ts +20 -0
- package/dest/testing/files/index.d.ts.map +1 -0
- package/dest/testing/files/index.js +58 -0
- package/dest/testing/index.d.ts +4 -0
- package/dest/testing/index.d.ts.map +1 -0
- package/dest/testing/index.js +3 -0
- package/dest/testing/port_allocator.d.ts +10 -0
- package/dest/testing/port_allocator.d.ts.map +1 -0
- package/dest/testing/port_allocator.js +29 -0
- package/dest/testing/snapshot_serializer.d.ts +5 -0
- package/dest/testing/snapshot_serializer.d.ts.map +1 -0
- package/dest/testing/snapshot_serializer.js +32 -0
- package/dest/testing/test_data.d.ts +7 -0
- package/dest/testing/test_data.d.ts.map +1 -0
- package/dest/testing/test_data.js +29 -0
- package/dest/timer/date.d.ts +13 -0
- package/dest/timer/date.d.ts.map +1 -0
- package/dest/timer/date.js +24 -0
- package/dest/timer/elapsed.d.ts +13 -0
- package/dest/timer/elapsed.d.ts.map +1 -0
- package/dest/timer/elapsed.js +25 -0
- package/dest/timer/index.d.ts +5 -0
- package/dest/timer/index.d.ts.map +1 -0
- package/dest/timer/index.js +4 -0
- package/dest/timer/timeout.d.ts +41 -0
- package/dest/timer/timeout.d.ts.map +1 -0
- package/dest/timer/timeout.js +66 -0
- package/dest/timer/timer.d.ts +37 -0
- package/dest/timer/timer.d.ts.map +1 -0
- package/dest/timer/timer.js +40 -0
- package/dest/transport/browser/index.d.ts +5 -0
- package/dest/transport/browser/index.d.ts.map +1 -0
- package/dest/transport/browser/index.js +4 -0
- package/dest/transport/browser/message_port_socket.d.ts +37 -0
- package/dest/transport/browser/message_port_socket.d.ts.map +1 -0
- package/dest/transport/browser/message_port_socket.js +42 -0
- package/dest/transport/browser/shared_worker_connector.d.ts +19 -0
- package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -0
- package/dest/transport/browser/shared_worker_connector.js +19 -0
- package/dest/transport/browser/shared_worker_listener.d.ts +38 -0
- package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -0
- package/dest/transport/browser/shared_worker_listener.js +33 -0
- package/dest/transport/browser/worker_connector.d.ts +26 -0
- package/dest/transport/browser/worker_connector.d.ts.map +1 -0
- package/dest/transport/browser/worker_connector.js +30 -0
- package/dest/transport/browser/worker_listener.d.ts +39 -0
- package/dest/transport/browser/worker_listener.d.ts.map +1 -0
- package/dest/transport/browser/worker_listener.js +35 -0
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +25 -0
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -0
- package/dest/transport/dispatch/create_dispatch_fn.js +17 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +102 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
- package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
- package/dest/transport/dispatch/messages.d.ts +52 -0
- package/dest/transport/dispatch/messages.d.ts.map +1 -0
- package/dest/transport/dispatch/messages.js +13 -0
- package/dest/transport/index.d.ts +12 -0
- package/dest/transport/index.d.ts.map +1 -0
- package/dest/transport/index.js +11 -0
- package/dest/transport/interface/connector.d.ts +8 -0
- package/dest/transport/interface/connector.d.ts.map +1 -0
- package/dest/transport/interface/connector.js +3 -0
- package/dest/transport/interface/listener.d.ts +13 -0
- package/dest/transport/interface/listener.d.ts.map +1 -0
- package/dest/transport/interface/listener.js +4 -0
- package/dest/transport/interface/socket.d.ts +13 -0
- package/dest/transport/interface/socket.d.ts.map +1 -0
- package/dest/transport/interface/socket.js +7 -0
- package/dest/transport/interface/transferable.d.ts +68 -0
- package/dest/transport/interface/transferable.d.ts.map +1 -0
- package/dest/transport/interface/transferable.js +63 -0
- package/dest/transport/node/index.d.ts +3 -0
- package/dest/transport/node/index.d.ts.map +1 -0
- package/dest/transport/node/index.js +2 -0
- package/dest/transport/node/node_connector.d.ts +28 -0
- package/dest/transport/node/node_connector.d.ts.map +1 -0
- package/dest/transport/node/node_connector.js +26 -0
- package/dest/transport/node/node_connector_socket.d.ts +42 -0
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
- package/dest/transport/node/node_connector_socket.js +44 -0
- package/dest/transport/node/node_listener.d.ts +26 -0
- package/dest/transport/node/node_listener.d.ts.map +1 -0
- package/dest/transport/node/node_listener.js +26 -0
- package/dest/transport/node/node_listener_socket.d.ts +37 -0
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
- package/dest/transport/node/node_listener_socket.js +40 -0
- package/dest/transport/transport_client.d.ts +61 -0
- package/dest/transport/transport_client.d.ts.map +1 -0
- package/dest/transport/transport_client.js +96 -0
- package/dest/transport/transport_server.d.ts +56 -0
- package/dest/transport/transport_server.d.ts.map +1 -0
- package/dest/transport/transport_server.js +114 -0
- package/dest/trees/hasher.d.ts +39 -0
- package/dest/trees/hasher.d.ts.map +1 -0
- package/dest/trees/hasher.js +5 -0
- package/dest/trees/index.d.ts +11 -0
- package/dest/trees/index.d.ts.map +1 -0
- package/dest/trees/index.js +10 -0
- package/dest/trees/indexed_merkle_tree.d.ts +13 -0
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree.js +27 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
- package/dest/trees/indexed_tree_leaf.d.ts +57 -0
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
- package/dest/trees/indexed_tree_leaf.js +5 -0
- package/dest/trees/membership_witness.d.ts +62 -0
- package/dest/trees/membership_witness.d.ts.map +1 -0
- package/dest/trees/membership_witness.js +70 -0
- package/dest/trees/merkle_tree.d.ts +18 -0
- package/dest/trees/merkle_tree.d.ts.map +1 -0
- package/dest/trees/merkle_tree.js +58 -0
- package/dest/trees/merkle_tree_calculator.d.ts +16 -0
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/merkle_tree_calculator.js +61 -0
- package/dest/trees/sibling_path.d.ts +132 -0
- package/dest/trees/sibling_path.d.ts.map +1 -0
- package/dest/trees/sibling_path.js +144 -0
- package/dest/trees/unbalanced_merkle_tree.d.ts +17 -0
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree.js +100 -0
- package/dest/trees/unbalanced_tree_store.d.ts +19 -0
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
- package/dest/trees/unbalanced_tree_store.js +94 -0
- package/dest/types/index.d.ts +19 -0
- package/dest/types/index.d.ts.map +1 -0
- package/dest/types/index.js +3 -0
- package/dest/url/index.d.ts +9 -0
- package/dest/url/index.d.ts.map +1 -0
- package/dest/url/index.js +62 -0
- package/dest/validation/index.d.ts +9 -0
- package/dest/validation/index.d.ts.map +1 -0
- package/dest/validation/index.js +15 -0
- package/dest/wasm/empty_wasi_sdk.d.ts +130 -0
- package/dest/wasm/empty_wasi_sdk.d.ts.map +1 -0
- package/dest/wasm/empty_wasi_sdk.js +148 -0
- package/dest/wasm/index.d.ts +2 -0
- package/dest/wasm/index.d.ts.map +1 -0
- package/dest/wasm/index.js +1 -0
- package/dest/wasm/wasm_module.d.ts +136 -0
- package/dest/wasm/wasm_module.d.ts.map +1 -0
- package/dest/wasm/wasm_module.js +196 -0
- package/dest/worker/browser/index.d.ts +3 -0
- package/dest/worker/browser/index.d.ts.map +1 -0
- package/dest/worker/browser/index.js +2 -0
- package/dest/worker/browser/start_web_module.d.ts +7 -0
- package/dest/worker/browser/start_web_module.d.ts.map +1 -0
- package/dest/worker/browser/start_web_module.js +27 -0
- package/dest/worker/browser/web_data_store.d.ts +24 -0
- package/dest/worker/browser/web_data_store.d.ts.map +1 -0
- package/dest/worker/browser/web_data_store.js +29 -0
- package/dest/worker/browser/web_worker.d.ts +10 -0
- package/dest/worker/browser/web_worker.d.ts.map +1 -0
- package/dest/worker/browser/web_worker.js +25 -0
- package/dest/worker/data_store.d.ts +21 -0
- package/dest/worker/data_store.d.ts.map +1 -0
- package/dest/worker/data_store.js +3 -0
- package/dest/worker/index.d.ts +3 -0
- package/dest/worker/index.d.ts.map +1 -0
- package/dest/worker/index.js +1 -0
- package/dest/worker/node/index.d.ts +3 -0
- package/dest/worker/node/index.d.ts.map +1 -0
- package/dest/worker/node/index.js +2 -0
- package/dest/worker/node/node_data_store.d.ts +13 -0
- package/dest/worker/node/node_data_store.d.ts.map +1 -0
- package/dest/worker/node/node_data_store.js +20 -0
- package/dest/worker/node/node_worker.d.ts +6 -0
- package/dest/worker/node/node_worker.d.ts.map +1 -0
- package/dest/worker/node/node_worker.js +22 -0
- package/dest/worker/node/start_node_module.d.ts +7 -0
- package/dest/worker/node/start_node_module.d.ts.map +1 -0
- package/dest/worker/node/start_node_module.js +31 -0
- package/dest/worker/wasm_worker.d.ts +9 -0
- package/dest/worker/wasm_worker.d.ts.map +1 -0
- package/dest/worker/wasm_worker.js +3 -0
- package/dest/worker/worker_pool.d.ts +40 -0
- package/dest/worker/worker_pool.d.ts.map +1 -0
- package/dest/worker/worker_pool.js +51 -0
- package/package.json +176 -0
- package/src/array/array.ts +150 -0
- package/src/array/index.ts +1 -0
- package/src/async-map/index.ts +18 -0
- package/src/async-pool/index.ts +50 -0
- package/src/bigint-buffer/index.ts +87 -0
- package/src/buffer/buffer32.ts +144 -0
- package/src/buffer/index.ts +1 -0
- package/src/collection/array.ts +203 -0
- package/src/collection/index.ts +2 -0
- package/src/collection/object.ts +52 -0
- package/src/committable/committable.ts +46 -0
- package/src/committable/index.ts +1 -0
- package/src/config/env_var.ts +207 -0
- package/src/config/index.ts +167 -0
- package/src/crypto/aes128/index.ts +59 -0
- package/src/crypto/ecdsa/index.ts +70 -0
- package/src/crypto/ecdsa/signature.ts +100 -0
- package/src/crypto/grumpkin/index.ts +97 -0
- package/src/crypto/index.ts +14 -0
- package/src/crypto/keccak/index.ts +283 -0
- package/src/crypto/keys/index.ts +10 -0
- package/src/crypto/pedersen/index.ts +1 -0
- package/src/crypto/pedersen/pedersen.elliptic.ts +584 -0
- package/src/crypto/pedersen/pedersen.noble.ts +573 -0
- package/src/crypto/pedersen/pedersen.wasm.ts +48 -0
- package/src/crypto/poseidon/index.ts +77 -0
- package/src/crypto/random/index.ts +85 -0
- package/src/crypto/random/randomness_singleton.ts +62 -0
- package/src/crypto/schnorr/index.ts +55 -0
- package/src/crypto/schnorr/signature.ts +116 -0
- package/src/crypto/secp256k1/index.ts +57 -0
- package/src/crypto/secp256k1-signer/index.ts +2 -0
- package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
- package/src/crypto/secp256k1-signer/utils.ts +99 -0
- package/src/crypto/serialize.ts +85 -0
- package/src/crypto/sha256/index.ts +147 -0
- package/src/crypto/sha512/index.ts +16 -0
- package/src/crypto/signature/index.ts +17 -0
- package/src/crypto/sync/index.ts +6 -0
- package/src/crypto/sync/pedersen/index.ts +45 -0
- package/src/crypto/sync/poseidon/index.ts +76 -0
- package/src/decorators/index.ts +1 -0
- package/src/decorators/memoize.ts +11 -0
- package/src/error/index.ts +22 -0
- package/src/eth-address/index.ts +241 -0
- package/src/eth-signature/eth_signature.ts +128 -0
- package/src/eth-signature/index.ts +1 -0
- package/src/fields/coordinate.ts +104 -0
- package/src/fields/fields.ts +505 -0
- package/src/fields/index.ts +3 -0
- package/src/fields/point.ts +300 -0
- package/src/fs/index.ts +1 -0
- package/src/fs/run_in_dir.ts +33 -0
- package/src/index.ts +31 -0
- package/src/iterable/all.ts +32 -0
- package/src/iterable/filter.ts +77 -0
- package/src/iterable/index.ts +7 -0
- package/src/iterable/isAsyncIt.ts +8 -0
- package/src/iterable/map.ts +66 -0
- package/src/iterable/peek.ts +58 -0
- package/src/iterable/sort.ts +39 -0
- package/src/iterable/take.ts +54 -0
- package/src/iterable/toArray.ts +9 -0
- package/src/jest/setup.mjs +9 -0
- package/src/json-rpc/README.md +55 -0
- package/src/json-rpc/client/fetch.ts +103 -0
- package/src/json-rpc/client/index.ts +2 -0
- package/src/json-rpc/client/safe_json_rpc_client.ts +67 -0
- package/src/json-rpc/client/undici.ts +75 -0
- package/src/json-rpc/convert.ts +61 -0
- package/src/json-rpc/fixtures/class_a.ts +15 -0
- package/src/json-rpc/fixtures/class_b.ts +15 -0
- package/src/json-rpc/fixtures/test_state.ts +143 -0
- package/src/json-rpc/index.ts +1 -0
- package/src/json-rpc/js_utils.ts +21 -0
- package/src/json-rpc/server/index.ts +1 -0
- package/src/json-rpc/server/safe_json_rpc_server.ts +376 -0
- package/src/json-rpc/server/telemetry.ts +0 -0
- package/src/json-rpc/test/index.ts +1 -0
- package/src/json-rpc/test/integration.ts +35 -0
- package/src/log/console.ts +39 -0
- package/src/log/debug.ts +104 -0
- package/src/log/gcloud-logger-config.ts +71 -0
- package/src/log/index.ts +6 -0
- package/src/log/libp2p_logger.ts +67 -0
- package/src/log/log-filters.ts +63 -0
- package/src/log/log-levels.ts +3 -0
- package/src/log/log_fn.ts +5 -0
- package/src/log/log_history.ts +44 -0
- package/src/log/pino-logger.ts +243 -0
- package/src/message/index.ts +43 -0
- package/src/mutex/index.ts +84 -0
- package/src/mutex/mutex_database.ts +12 -0
- package/src/noir/index.ts +1 -0
- package/src/noir/noir_package_config.ts +54 -0
- package/src/promise/index.ts +2 -0
- package/src/promise/running-promise.ts +125 -0
- package/src/promise/utils.ts +29 -0
- package/src/queue/base_memory_queue.ts +138 -0
- package/src/queue/batch_queue.ts +120 -0
- package/src/queue/bounded_serial_queue.ts +100 -0
- package/src/queue/fifo_memory_queue.ts +39 -0
- package/src/queue/index.ts +6 -0
- package/src/queue/priority_memory_queue.ts +20 -0
- package/src/queue/priority_queue.ts +34 -0
- package/src/queue/semaphore.ts +33 -0
- package/src/queue/serial_queue.ts +86 -0
- package/src/retry/index.ts +100 -0
- package/src/running-promise/index.ts +1 -0
- package/src/schemas/api.ts +47 -0
- package/src/schemas/index.ts +5 -0
- package/src/schemas/parse.ts +29 -0
- package/src/schemas/schemas.ts +64 -0
- package/src/schemas/types.ts +3 -0
- package/src/schemas/utils.ts +112 -0
- package/src/serialize/buffer_reader.ts +383 -0
- package/src/serialize/field_reader.ts +184 -0
- package/src/serialize/free_funcs.ts +204 -0
- package/src/serialize/index.ts +6 -0
- package/src/serialize/serialize.ts +336 -0
- package/src/serialize/type_registry.ts +75 -0
- package/src/serialize/types.ts +40 -0
- package/src/sleep/index.ts +75 -0
- package/src/string/index.ts +31 -0
- package/src/testing/files/index.ts +69 -0
- package/src/testing/index.ts +3 -0
- package/src/testing/port_allocator.ts +31 -0
- package/src/testing/snapshot_serializer.ts +33 -0
- package/src/testing/test_data.ts +36 -0
- package/src/timer/date.ts +24 -0
- package/src/timer/elapsed.ts +23 -0
- package/src/timer/index.ts +4 -0
- package/src/timer/timeout.ts +70 -0
- package/src/timer/timer.ts +48 -0
- package/src/transport/browser/index.ts +4 -0
- package/src/transport/browser/message_port_socket.ts +48 -0
- package/src/transport/browser/shared_worker_connector.ts +21 -0
- package/src/transport/browser/shared_worker_listener.ts +53 -0
- package/src/transport/browser/worker_connector.ts +30 -0
- package/src/transport/browser/worker_listener.ts +54 -0
- package/src/transport/dispatch/create_dispatch_fn.ts +35 -0
- package/src/transport/dispatch/create_dispatch_proxy.ts +141 -0
- package/src/transport/dispatch/messages.ts +58 -0
- package/src/transport/index.ts +11 -0
- package/src/transport/interface/connector.ts +9 -0
- package/src/transport/interface/listener.ts +16 -0
- package/src/transport/interface/socket.ts +15 -0
- package/src/transport/interface/transferable.ts +125 -0
- package/src/transport/node/index.ts +2 -0
- package/src/transport/node/node_connector.ts +30 -0
- package/src/transport/node/node_connector_socket.ts +52 -0
- package/src/transport/node/node_listener.ts +34 -0
- package/src/transport/node/node_listener_socket.ts +48 -0
- package/src/transport/transport_client.ts +131 -0
- package/src/transport/transport_server.ts +108 -0
- package/src/trees/hasher.ts +39 -0
- package/src/trees/index.ts +10 -0
- package/src/trees/indexed_merkle_tree.ts +36 -0
- package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
- package/src/trees/indexed_tree_leaf.ts +56 -0
- package/src/trees/membership_witness.ts +99 -0
- package/src/trees/merkle_tree.ts +72 -0
- package/src/trees/merkle_tree_calculator.ts +67 -0
- package/src/trees/sibling_path.ts +183 -0
- package/src/trees/unbalanced_merkle_tree.ts +103 -0
- package/src/trees/unbalanced_tree_store.ts +102 -0
- package/src/types/index.ts +25 -0
- package/src/url/index.ts +73 -0
- package/src/validation/index.ts +18 -0
- package/src/wasm/README.md +6 -0
- package/src/wasm/empty_wasi_sdk.ts +166 -0
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +27 -0
- package/src/wasm/index.ts +1 -0
- package/src/wasm/wasm_module.ts +260 -0
- package/src/worker/browser/index.ts +2 -0
- package/src/worker/browser/start_web_module.ts +24 -0
- package/src/worker/browser/web_data_store.ts +38 -0
- package/src/worker/browser/web_worker.ts +25 -0
- package/src/worker/data_store.ts +19 -0
- package/src/worker/index.ts +2 -0
- package/src/worker/node/index.ts +2 -0
- package/src/worker/node/node_data_store.ts +27 -0
- package/src/worker/node/node_worker.ts +23 -0
- package/src/worker/node/start_node_module.ts +30 -0
- package/src/worker/wasm_worker.ts +7 -0
- package/src/worker/worker_pool.ts +73 -0
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
import { BarretenbergSync } from '@aztec/bb.js';
|
|
2
|
+
|
|
3
|
+
import { inspect } from 'util';
|
|
4
|
+
|
|
5
|
+
import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
|
|
6
|
+
import { randomBytes } from '../crypto/random/index.js';
|
|
7
|
+
import { hexSchemaFor } from '../schemas/utils.js';
|
|
8
|
+
import { BufferReader } from '../serialize/buffer_reader.js';
|
|
9
|
+
import { TypeRegistry } from '../serialize/type_registry.js';
|
|
10
|
+
|
|
11
|
+
const ZERO_BUFFER = Buffer.alloc(32);
|
|
12
|
+
|
|
13
|
+
/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Represents a field derived from BaseField.
|
|
17
|
+
*/
|
|
18
|
+
type DerivedField<T extends BaseField> = {
|
|
19
|
+
new (value: any): T;
|
|
20
|
+
/**
|
|
21
|
+
* All derived fields will specify a MODULUS.
|
|
22
|
+
*/
|
|
23
|
+
MODULUS: bigint;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Base field class.
|
|
28
|
+
* Conversions from Buffer to BigInt and vice-versa are not cheap.
|
|
29
|
+
* We allow construction with either form and lazily convert to other as needed.
|
|
30
|
+
* We only check we are within the field modulus when initializing with bigint.
|
|
31
|
+
*/
|
|
32
|
+
abstract class BaseField {
|
|
33
|
+
static SIZE_IN_BYTES = 32;
|
|
34
|
+
private asBuffer?: Buffer;
|
|
35
|
+
private asBigInt?: bigint;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Return bigint representation.
|
|
39
|
+
* @deprecated Just to get things compiling. Use toBigInt().
|
|
40
|
+
* */
|
|
41
|
+
get value(): bigint {
|
|
42
|
+
return this.toBigInt();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Returns the size in bytes. */
|
|
46
|
+
get size(): number {
|
|
47
|
+
return BaseField.SIZE_IN_BYTES;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
protected constructor(value: number | bigint | boolean | BaseField | Buffer) {
|
|
51
|
+
if (Buffer.isBuffer(value)) {
|
|
52
|
+
if (value.length > BaseField.SIZE_IN_BYTES) {
|
|
53
|
+
throw new Error(`Value length ${value.length} exceeds ${BaseField.SIZE_IN_BYTES}`);
|
|
54
|
+
}
|
|
55
|
+
this.asBuffer =
|
|
56
|
+
value.length === BaseField.SIZE_IN_BYTES
|
|
57
|
+
? value
|
|
58
|
+
: Buffer.concat([Buffer.alloc(BaseField.SIZE_IN_BYTES - value.length), value]);
|
|
59
|
+
} else if (typeof value === 'bigint' || typeof value === 'number' || typeof value === 'boolean') {
|
|
60
|
+
this.asBigInt = BigInt(value);
|
|
61
|
+
if (this.asBigInt >= this.modulus()) {
|
|
62
|
+
throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`);
|
|
63
|
+
}
|
|
64
|
+
} else if (value instanceof BaseField) {
|
|
65
|
+
this.asBuffer = value.asBuffer;
|
|
66
|
+
this.asBigInt = value.asBigInt;
|
|
67
|
+
} else {
|
|
68
|
+
throw new Error(`Type '${typeof value}' with value '${value}' passed to BaseField ctor.`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
protected abstract modulus(): bigint;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* We return a copy of the Buffer to ensure this remains immutable.
|
|
76
|
+
*/
|
|
77
|
+
toBuffer(): Buffer {
|
|
78
|
+
if (!this.asBuffer) {
|
|
79
|
+
this.asBuffer = toBufferBE(this.asBigInt!, 32);
|
|
80
|
+
}
|
|
81
|
+
return Buffer.from(this.asBuffer);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
toString(): `0x${string}` {
|
|
85
|
+
return `0x${this.toBuffer().toString('hex')}`;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
toBigInt(): bigint {
|
|
89
|
+
if (this.asBigInt === undefined) {
|
|
90
|
+
this.asBigInt = toBigIntBE(this.asBuffer!);
|
|
91
|
+
if (this.asBigInt >= this.modulus()) {
|
|
92
|
+
throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return this.asBigInt;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
toBool(): boolean {
|
|
99
|
+
return Boolean(this.toBigInt());
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Converts this field to a number.
|
|
104
|
+
* Throws if the underlying value is greater than MAX_SAFE_INTEGER.
|
|
105
|
+
*/
|
|
106
|
+
toNumber(): number {
|
|
107
|
+
const value = this.toBigInt();
|
|
108
|
+
if (value > Number.MAX_SAFE_INTEGER) {
|
|
109
|
+
throw new Error(`Value ${value.toString(16)} greater than than max safe integer`);
|
|
110
|
+
}
|
|
111
|
+
return Number(value);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Converts this field to a number.
|
|
116
|
+
* May cause loss of precision if the underlying value is greater than MAX_SAFE_INTEGER.
|
|
117
|
+
*/
|
|
118
|
+
toNumberUnsafe(): number {
|
|
119
|
+
const value = this.toBigInt();
|
|
120
|
+
return Number(value);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
toShortString(): string {
|
|
124
|
+
const str = this.toString();
|
|
125
|
+
return `${str.slice(0, 10)}...${str.slice(-4)}`;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
equals(rhs: BaseField): boolean {
|
|
129
|
+
return this.toBuffer().equals(rhs.toBuffer());
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
lt(rhs: BaseField): boolean {
|
|
133
|
+
return this.toBigInt() < rhs.toBigInt();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
cmp(rhs: BaseField): -1 | 0 | 1 {
|
|
137
|
+
const lhsBigInt = this.toBigInt();
|
|
138
|
+
const rhsBigInt = rhs.toBigInt();
|
|
139
|
+
return lhsBigInt === rhsBigInt ? 0 : lhsBigInt < rhsBigInt ? -1 : 1;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
isZero(): boolean {
|
|
143
|
+
return this.toBuffer().equals(ZERO_BUFFER);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
isEmpty(): boolean {
|
|
147
|
+
return this.isZero();
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
toFriendlyJSON(): string {
|
|
151
|
+
return this.toString();
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
toField() {
|
|
155
|
+
return this;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Constructs a field from a Buffer of BufferReader.
|
|
161
|
+
* It maybe not read the full 32 bytes if the Buffer is shorter, but it will padded in BaseField constructor.
|
|
162
|
+
*/
|
|
163
|
+
export function fromBuffer<T extends BaseField>(buffer: Buffer | BufferReader, f: DerivedField<T>) {
|
|
164
|
+
const reader = BufferReader.asReader(buffer);
|
|
165
|
+
return new f(reader.readBytes(BaseField.SIZE_IN_BYTES));
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Constructs a field from a Buffer, but reduces it first, modulo the field modulus.
|
|
170
|
+
* This requires a conversion to a bigint first so the initial underlying representation will be a bigint.
|
|
171
|
+
*/
|
|
172
|
+
function fromBufferReduce<T extends BaseField>(buffer: Buffer, f: DerivedField<T>) {
|
|
173
|
+
return new f(toBigIntBE(buffer) % f.MODULUS);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* To ensure a field is uniformly random, it's important to reduce a 512 bit value.
|
|
178
|
+
* If you reduced a 256 bit number, there would a be a high skew in the lower range of the field.
|
|
179
|
+
*/
|
|
180
|
+
function random<T extends BaseField>(f: DerivedField<T>): T {
|
|
181
|
+
return fromBufferReduce(randomBytes(64), f);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Constructs a field from a 0x prefixed hex string.
|
|
186
|
+
*/
|
|
187
|
+
function fromHexString<T extends BaseField>(buf: string, f: DerivedField<T>) {
|
|
188
|
+
const withoutPrefix = buf.replace(/^0x/i, '');
|
|
189
|
+
const checked = withoutPrefix.match(/^[0-9A-F]+$/i)?.[0];
|
|
190
|
+
if (checked === undefined) {
|
|
191
|
+
throw new Error(`Invalid hex-encoded string: "${buf}"`);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
const buffer = Buffer.from(checked.length % 2 === 1 ? '0' + checked : checked, 'hex');
|
|
195
|
+
|
|
196
|
+
return new f(buffer);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/** Branding to ensure fields are not interchangeable types. */
|
|
200
|
+
export interface Fr {
|
|
201
|
+
/** Brand. */
|
|
202
|
+
_branding: 'Fr';
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Fr field class.
|
|
207
|
+
* @dev This class is used to represent elements of BN254 scalar field or elements in the base field of Grumpkin.
|
|
208
|
+
* (Grumpkin's scalar field corresponds to BN254's base field and vice versa.)
|
|
209
|
+
*/
|
|
210
|
+
export class Fr extends BaseField {
|
|
211
|
+
static ZERO = new Fr(0n);
|
|
212
|
+
static ONE = new Fr(1n);
|
|
213
|
+
static MODULUS = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n;
|
|
214
|
+
static MAX_FIELD_VALUE = new Fr(this.MODULUS - 1n);
|
|
215
|
+
|
|
216
|
+
constructor(value: number | bigint | boolean | Fr | Buffer) {
|
|
217
|
+
super(value);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
[inspect.custom]() {
|
|
221
|
+
return `Fr<${this.toString()}>`;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
protected modulus() {
|
|
225
|
+
return Fr.MODULUS;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
static random() {
|
|
229
|
+
return random(Fr);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
static zero() {
|
|
233
|
+
return Fr.ZERO;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
static isZero(value: Fr) {
|
|
237
|
+
return value.isZero();
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
241
|
+
return fromBuffer(buffer, Fr);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
static fromBufferReduce(buffer: Buffer) {
|
|
245
|
+
return fromBufferReduce(buffer, Fr);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Creates a Fr instance from a string.
|
|
250
|
+
* @param buf - the string to create a Fr from.
|
|
251
|
+
* @returns the Fr instance
|
|
252
|
+
* @remarks if the string only consists of numbers, we assume we are parsing a bigint,
|
|
253
|
+
* otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding
|
|
254
|
+
* as to what is being parsed.
|
|
255
|
+
*/
|
|
256
|
+
static fromString(buf: string) {
|
|
257
|
+
if (buf.match(/^\d+$/) !== null) {
|
|
258
|
+
return new Fr(toBufferBE(BigInt(buf), 32));
|
|
259
|
+
}
|
|
260
|
+
if (buf.match(/^0x/i) !== null) {
|
|
261
|
+
return fromHexString(buf, Fr);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
throw new Error(`Tried to create a Fr from an invalid string: ${buf}`);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Creates a Fr instance from a hex string.
|
|
269
|
+
* @param buf - a hex encoded string.
|
|
270
|
+
* @returns the Fr instance
|
|
271
|
+
*/
|
|
272
|
+
static fromHexString(buf: string) {
|
|
273
|
+
return fromHexString(buf, Fr);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/** Arithmetic */
|
|
277
|
+
|
|
278
|
+
add(rhs: Fr) {
|
|
279
|
+
return new Fr((this.toBigInt() + rhs.toBigInt()) % Fr.MODULUS);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
square() {
|
|
283
|
+
return new Fr((this.toBigInt() * this.toBigInt()) % Fr.MODULUS);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
negate() {
|
|
287
|
+
return new Fr(Fr.MODULUS - this.toBigInt());
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
sub(rhs: Fr) {
|
|
291
|
+
const result = this.toBigInt() - rhs.toBigInt();
|
|
292
|
+
return new Fr(result < 0 ? result + Fr.MODULUS : result);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
mul(rhs: Fr) {
|
|
296
|
+
return new Fr((this.toBigInt() * rhs.toBigInt()) % Fr.MODULUS);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
div(rhs: Fr) {
|
|
300
|
+
if (rhs.isZero()) {
|
|
301
|
+
throw new Error('Division by zero');
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
const bInv = modInverse(rhs.toBigInt());
|
|
305
|
+
return this.mul(bInv);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// Integer division.
|
|
309
|
+
ediv(rhs: Fr) {
|
|
310
|
+
if (rhs.isZero()) {
|
|
311
|
+
throw new Error('Division by zero');
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return new Fr(this.toBigInt() / rhs.toBigInt());
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Computes a square root of the field element.
|
|
319
|
+
* @returns A square root of the field element (null if it does not exist).
|
|
320
|
+
*/
|
|
321
|
+
async sqrt(): Promise<Fr | null> {
|
|
322
|
+
const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
|
|
323
|
+
const wasm = api.getWasm();
|
|
324
|
+
const [buf] = wasm.callWasmExport('bn254_fr_sqrt', [this.toBuffer()], [Fr.SIZE_IN_BYTES + 1]);
|
|
325
|
+
const isSqrt = buf[0] === 1;
|
|
326
|
+
if (!isSqrt) {
|
|
327
|
+
// Field element is not a quadratic residue mod p so it has no square root.
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
return new Fr(Buffer.from(buf.slice(1)));
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
toJSON() {
|
|
334
|
+
return this.toString();
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
static get schema() {
|
|
338
|
+
return hexSchemaFor(Fr);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// For deserializing JSON.
|
|
343
|
+
TypeRegistry.register('Fr', Fr);
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Branding to ensure fields are not interchangeable types.
|
|
347
|
+
*/
|
|
348
|
+
export interface Fq {
|
|
349
|
+
/** Brand. */
|
|
350
|
+
_branding: 'Fq';
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Fq field class.
|
|
355
|
+
* @dev This class is used to represent elements of BN254 base field or elements in the scalar field of Grumpkin.
|
|
356
|
+
* (Grumpkin's scalar field corresponds to BN254's base field and vice versa.)
|
|
357
|
+
*/
|
|
358
|
+
export class Fq extends BaseField {
|
|
359
|
+
static ZERO = new Fq(0n);
|
|
360
|
+
static MODULUS = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n;
|
|
361
|
+
private static HIGH_SHIFT = BigInt((BaseField.SIZE_IN_BYTES / 2) * 8);
|
|
362
|
+
private static LOW_MASK = (1n << Fq.HIGH_SHIFT) - 1n;
|
|
363
|
+
|
|
364
|
+
[inspect.custom]() {
|
|
365
|
+
return `Fq<${this.toString()}>`;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
get lo(): Fr {
|
|
369
|
+
return new Fr(this.toBigInt() & Fq.LOW_MASK);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
get hi(): Fr {
|
|
373
|
+
return new Fr(this.toBigInt() >> Fq.HIGH_SHIFT);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
constructor(value: number | bigint | boolean | Fq | Buffer) {
|
|
377
|
+
super(value);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
protected modulus() {
|
|
381
|
+
return Fq.MODULUS;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
static random() {
|
|
385
|
+
return random(Fq);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
static zero() {
|
|
389
|
+
return Fq.ZERO;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
393
|
+
return fromBuffer(buffer, Fq);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
static fromBufferReduce(buffer: Buffer) {
|
|
397
|
+
return fromBufferReduce(buffer, Fq);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Creates a Fq instance from a string.
|
|
402
|
+
* @param buf - the string to create a Fq from.
|
|
403
|
+
* @returns the Fq instance
|
|
404
|
+
* @remarks if the string only consists of numbers, we assume we are parsing a bigint,
|
|
405
|
+
* otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding
|
|
406
|
+
* as to what is being parsed.
|
|
407
|
+
*/
|
|
408
|
+
static fromString(buf: string) {
|
|
409
|
+
if (buf.match(/^\d+$/) !== null) {
|
|
410
|
+
return new Fq(toBufferBE(BigInt(buf), 32));
|
|
411
|
+
}
|
|
412
|
+
if (buf.match(/^0x/i) !== null) {
|
|
413
|
+
return fromHexString(buf, Fq);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
throw new Error(`Tried to create a Fq from an invalid string: ${buf}`);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Creates a Fq instance from a hex string.
|
|
421
|
+
* @param buf - a hex encoded string.
|
|
422
|
+
* @returns the Fq instance
|
|
423
|
+
*/
|
|
424
|
+
static fromHexString(buf: string) {
|
|
425
|
+
return fromHexString(buf, Fq);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
static fromHighLow(high: Fr, low: Fr): Fq {
|
|
429
|
+
return new Fq((high.toBigInt() << Fq.HIGH_SHIFT) + low.toBigInt());
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
add(rhs: Fq) {
|
|
433
|
+
return new Fq((this.toBigInt() + rhs.toBigInt()) % Fq.MODULUS);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
toJSON() {
|
|
437
|
+
return this.toString();
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
static get schema() {
|
|
441
|
+
return hexSchemaFor(Fq);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
// For deserializing JSON.
|
|
446
|
+
TypeRegistry.register('Fq', Fq);
|
|
447
|
+
|
|
448
|
+
// Beware: Performance bottleneck below
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* Find the modular inverse of a given element, for BN254 Fr.
|
|
452
|
+
*/
|
|
453
|
+
function modInverse(b: bigint) {
|
|
454
|
+
const [gcd, x, _] = extendedEuclidean(b, Fr.MODULUS);
|
|
455
|
+
if (gcd != 1n) {
|
|
456
|
+
throw Error('Inverse does not exist');
|
|
457
|
+
}
|
|
458
|
+
// Add modulus if -ve to ensure positive
|
|
459
|
+
return new Fr(x > 0 ? x : x + Fr.MODULUS);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* The extended Euclidean algorithm can be used to find the multiplicative inverse of a field element
|
|
464
|
+
* This is used to perform field division.
|
|
465
|
+
*/
|
|
466
|
+
function extendedEuclidean(a: bigint, modulus: bigint): [bigint, bigint, bigint] {
|
|
467
|
+
if (a == 0n) {
|
|
468
|
+
return [modulus, 0n, 1n];
|
|
469
|
+
} else {
|
|
470
|
+
const [gcd, x, y] = extendedEuclidean(modulus % a, a);
|
|
471
|
+
return [gcd, y - (modulus / a) * x, x];
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* GrumpkinScalar is an Fq.
|
|
477
|
+
* @remarks Called GrumpkinScalar because it is used to represent elements in Grumpkin's scalar field as defined in
|
|
478
|
+
* the Aztec Protocol Specs.
|
|
479
|
+
*/
|
|
480
|
+
export type GrumpkinScalar = Fq;
|
|
481
|
+
export const GrumpkinScalar = Fq;
|
|
482
|
+
|
|
483
|
+
/** Wraps a function that returns a buffer so that all results are reduced into a field of the given type. */
|
|
484
|
+
export function reduceFn<TInput, TField extends BaseField>(fn: (input: TInput) => Buffer, field: DerivedField<TField>) {
|
|
485
|
+
return (input: TInput) => fromBufferReduce(fn(input), field);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/** If we are in test mode, we register a special equality for fields. */
|
|
489
|
+
if (process.env.NODE_ENV === 'test' && typeof expect !== 'undefined') {
|
|
490
|
+
const areFieldsEqual = (a: unknown, b: unknown): boolean | undefined => {
|
|
491
|
+
const isAField = a instanceof BaseField;
|
|
492
|
+
const isBField = b instanceof BaseField;
|
|
493
|
+
|
|
494
|
+
if (isAField && isBField) {
|
|
495
|
+
return a.equals(b);
|
|
496
|
+
} else if (isAField === isBField) {
|
|
497
|
+
return undefined;
|
|
498
|
+
} else {
|
|
499
|
+
return false;
|
|
500
|
+
}
|
|
501
|
+
};
|
|
502
|
+
|
|
503
|
+
// `addEqualityTesters` doesn't seem to be in the types yet.
|
|
504
|
+
(expect as any).addEqualityTesters([areFieldsEqual]);
|
|
505
|
+
}
|