@aztec/foundation 0.0.0-test.1 → 0.0.1-commit.5476d83
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/dest/array/array.d.ts +6 -9
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +11 -11
- package/dest/array/index.d.ts +1 -1
- package/dest/async-map/index.d.ts +1 -1
- package/dest/async-pool/index.d.ts +1 -1
- package/dest/async-pool/index.d.ts.map +1 -1
- package/dest/async-pool/index.js +1 -0
- package/dest/bigint/index.d.ts +7 -0
- package/dest/bigint/index.d.ts.map +1 -0
- package/dest/bigint/index.js +15 -0
- package/dest/bigint-buffer/index.d.ts +1 -3
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/branded-types/epoch.d.ts +42 -0
- package/dest/branded-types/epoch.d.ts.map +1 -0
- package/dest/branded-types/epoch.js +59 -0
- package/dest/branded-types/index.d.ts +4 -0
- package/dest/branded-types/index.d.ts.map +1 -0
- package/dest/branded-types/index.js +2 -0
- package/dest/branded-types/slot.d.ts +42 -0
- package/dest/branded-types/slot.d.ts.map +1 -0
- package/dest/branded-types/slot.js +59 -0
- package/dest/branded-types/types.d.ts +5 -0
- package/dest/branded-types/types.d.ts.map +1 -0
- package/dest/branded-types/types.js +1 -0
- package/dest/buffer/buffer16.d.ts +77 -0
- package/dest/buffer/buffer16.d.ts.map +1 -0
- package/dest/buffer/buffer16.js +100 -0
- package/dest/buffer/buffer32.d.ts +4 -11
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +6 -6
- package/dest/buffer/index.d.ts +2 -1
- package/dest/buffer/index.d.ts.map +1 -1
- package/dest/buffer/index.js +1 -0
- package/dest/collection/array.d.ts +17 -4
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +57 -3
- package/dest/collection/index.d.ts +1 -1
- package/dest/collection/object.d.ts +17 -1
- package/dest/collection/object.d.ts.map +1 -1
- package/dest/collection/object.js +25 -0
- package/dest/committable/committable.d.ts +1 -1
- package/dest/committable/committable.d.ts.map +1 -1
- package/dest/committable/index.d.ts +1 -1
- package/dest/config/env_var.d.ts +2 -2
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/index.d.ts +49 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +115 -7
- package/dest/config/network_config.d.ts +42 -0
- package/dest/config/network_config.d.ts.map +1 -0
- package/dest/config/network_config.js +9 -0
- package/dest/config/network_name.d.ts +3 -0
- package/dest/config/network_name.d.ts.map +1 -0
- package/dest/config/network_name.js +19 -0
- package/dest/config/secret_value.d.ts +28 -0
- package/dest/config/secret_value.d.ts.map +1 -0
- package/dest/config/secret_value.js +34 -0
- package/dest/crypto/aes128/index.d.ts +3 -5
- package/dest/crypto/aes128/index.d.ts.map +1 -1
- package/dest/crypto/aes128/index.js +19 -6
- package/dest/crypto/bls/bn254_keystore.d.ts +296 -0
- package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
- package/dest/crypto/bls/bn254_keystore.js +218 -0
- package/dest/crypto/bls/index.d.ts +13 -0
- package/dest/crypto/bls/index.d.ts.map +1 -0
- package/dest/crypto/bls/index.js +87 -0
- package/dest/crypto/bn254/bn254_utils.d.ts +39 -0
- package/dest/crypto/bn254/bn254_utils.d.ts.map +1 -0
- package/dest/crypto/bn254/bn254_utils.js +56 -0
- package/dest/crypto/bn254/index.d.ts +55 -0
- package/dest/crypto/bn254/index.d.ts.map +1 -0
- package/dest/crypto/bn254/index.js +145 -0
- package/dest/crypto/ecdsa/index.d.ts +3 -3
- package/dest/crypto/ecdsa/index.d.ts.map +1 -1
- package/dest/crypto/ecdsa/index.js +62 -48
- package/dest/crypto/ecdsa/signature.d.ts +2 -13
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.d.ts +7 -14
- package/dest/crypto/grumpkin/index.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.js +59 -54
- package/dest/crypto/index.d.ts +3 -1
- package/dest/crypto/index.d.ts.map +1 -1
- package/dest/crypto/index.js +2 -0
- package/dest/crypto/keccak/index.d.ts +3 -5
- package/dest/crypto/keccak/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.d.ts +1 -3
- package/dest/crypto/keys/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.js +7 -4
- package/dest/crypto/pedersen/index.d.ts +1 -1
- package/dest/crypto/pedersen/pedersen.noble.d.ts +3 -5
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +3 -5
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +23 -13
- package/dest/crypto/poseidon/index.d.ts +1 -3
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +32 -17
- package/dest/crypto/random/index.d.ts +2 -4
- package/dest/crypto/random/index.d.ts.map +1 -1
- package/dest/crypto/random/index.js +2 -34
- package/dest/crypto/random/randomness_singleton.d.ts +1 -3
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.d.ts +1 -1
- package/dest/crypto/schnorr/index.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.js +29 -37
- package/dest/crypto/schnorr/signature.d.ts +4 -6
- package/dest/crypto/schnorr/signature.d.ts.map +1 -1
- package/dest/crypto/secp256k1/index.d.ts +5 -7
- package/dest/crypto/secp256k1/index.d.ts.map +1 -1
- package/dest/crypto/secp256k1/index.js +23 -18
- package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.d.ts +56 -5
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.js +92 -6
- package/dest/crypto/serialize.d.ts +5 -7
- package/dest/crypto/serialize.d.ts.map +1 -1
- package/dest/crypto/sha256/index.d.ts +22 -5
- package/dest/crypto/sha256/index.d.ts.map +1 -1
- package/dest/crypto/sha256/index.js +42 -0
- package/dest/crypto/sha512/index.d.ts +2 -4
- package/dest/crypto/sha512/index.d.ts.map +1 -1
- package/dest/crypto/signature/index.d.ts +1 -3
- package/dest/crypto/signature/index.d.ts.map +1 -1
- package/dest/crypto/sync/index.d.ts +1 -1
- package/dest/crypto/sync/index.js +1 -1
- package/dest/crypto/sync/pedersen/index.d.ts +3 -5
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
- package/dest/crypto/sync/pedersen/index.js +17 -10
- package/dest/crypto/sync/poseidon/index.d.ts +1 -3
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/sync/poseidon/index.js +27 -12
- package/dest/decorators/index.d.ts +1 -1
- package/dest/decorators/memoize.d.ts +1 -1
- package/dest/decorators/memoize.d.ts.map +1 -1
- package/dest/error/index.d.ts +4 -4
- package/dest/error/index.d.ts.map +1 -1
- package/dest/eth-address/index.d.ts +16 -8
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +22 -0
- package/dest/eth-signature/eth_signature.d.ts +17 -18
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +31 -17
- package/dest/eth-signature/index.d.ts +1 -1
- package/dest/fields/bls12_fields.d.ts +148 -0
- package/dest/fields/bls12_fields.d.ts.map +1 -0
- package/dest/fields/bls12_fields.js +359 -0
- package/dest/fields/bls12_point.d.ts +220 -0
- package/dest/fields/bls12_point.d.ts.map +1 -0
- package/dest/fields/bls12_point.js +398 -0
- package/dest/fields/coordinate.d.ts +1 -6
- package/dest/fields/coordinate.d.ts.map +1 -1
- package/dest/fields/fields.d.ts +16 -4
- package/dest/fields/fields.d.ts.map +1 -1
- package/dest/fields/fields.js +57 -15
- package/dest/fields/index.d.ts +3 -1
- package/dest/fields/index.d.ts.map +1 -1
- package/dest/fields/index.js +2 -0
- package/dest/fields/point.d.ts +13 -15
- package/dest/fields/point.d.ts.map +1 -1
- package/dest/fields/point.js +20 -3
- package/dest/fs/index.d.ts +2 -1
- package/dest/fs/index.d.ts.map +1 -1
- package/dest/fs/index.js +1 -0
- package/dest/fs/run_in_dir.d.ts +1 -1
- package/dest/fs/try_rm_dir.d.ts +3 -0
- package/dest/fs/try_rm_dir.d.ts.map +1 -0
- package/dest/fs/try_rm_dir.js +16 -0
- package/dest/index.d.ts +3 -3
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -2
- package/dest/iterable/all.d.ts +1 -1
- package/dest/iterable/filter.d.ts +1 -1
- package/dest/iterable/filter.js +1 -1
- package/dest/iterable/index.d.ts +1 -1
- package/dest/iterable/isAsyncIt.d.ts +1 -1
- package/dest/iterable/map.d.ts +1 -1
- package/dest/iterable/map.js +1 -1
- package/dest/iterable/peek.d.ts +1 -1
- package/dest/iterable/sort.d.ts +1 -1
- package/dest/iterable/take.d.ts +1 -1
- package/dest/iterable/toArray.d.ts +1 -1
- package/dest/jest/env.js +48 -0
- package/dest/jest/setupAfterEnv.js +3 -0
- package/dest/json-rpc/client/fetch.d.ts +3 -3
- package/dest/json-rpc/client/fetch.d.ts.map +1 -1
- package/dest/json-rpc/client/fetch.js +16 -30
- package/dest/json-rpc/client/index.d.ts +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +10 -4
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +173 -13
- package/dest/json-rpc/client/undici.d.ts +1 -1
- package/dest/json-rpc/client/undici.d.ts.map +1 -1
- package/dest/json-rpc/client/undici.js +6 -7
- package/dest/json-rpc/convert.d.ts +3 -10
- package/dest/json-rpc/convert.d.ts.map +1 -1
- package/dest/json-rpc/convert.js +1 -9
- package/dest/json-rpc/errors.d.ts +4 -0
- package/dest/json-rpc/errors.d.ts.map +1 -0
- package/dest/json-rpc/errors.js +6 -0
- package/dest/json-rpc/fixtures/class_a.d.ts +4 -2
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_b.d.ts +4 -2
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.d.ts +1 -1
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
- package/dest/json-rpc/index.d.ts +3 -2
- package/dest/json-rpc/index.d.ts.map +1 -1
- package/dest/json-rpc/index.js +2 -1
- package/dest/json-rpc/js_utils.d.ts +1 -1
- package/dest/json-rpc/js_utils.d.ts.map +1 -1
- package/dest/json-rpc/server/index.d.ts +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +22 -23
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.js +161 -56
- package/dest/json-rpc/server/telemetry.d.ts +1 -1
- package/dest/json-rpc/test/index.d.ts +1 -1
- package/dest/json-rpc/test/integration.d.ts +2 -3
- package/dest/json-rpc/test/integration.d.ts.map +1 -1
- package/dest/log/console.d.ts +1 -1
- package/dest/log/console.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.d.ts +1 -2
- package/dest/log/gcloud-logger-config.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.js +1 -9
- package/dest/log/index.d.ts +5 -5
- package/dest/log/index.d.ts.map +1 -1
- package/dest/log/index.js +4 -4
- package/dest/log/libp2p_logger.d.ts +1 -1
- package/dest/log/libp2p_logger.js +13 -2
- package/dest/log/log-filters.d.ts +1 -1
- package/dest/log/log-levels.d.ts +1 -1
- package/dest/log/log_fn.d.ts +2 -2
- package/dest/log/log_fn.d.ts.map +1 -1
- package/dest/log/noir_debug_log_util.d.ts +14 -0
- package/dest/log/noir_debug_log_util.d.ts.map +1 -0
- package/dest/log/noir_debug_log_util.js +14 -0
- package/dest/log/pino-logger.d.ts +4 -4
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +28 -2
- package/dest/message/index.d.ts +1 -1
- package/dest/message/index.d.ts.map +1 -1
- package/dest/mutex/index.d.ts +1 -1
- package/dest/mutex/index.d.ts.map +1 -1
- package/dest/mutex/mutex_database.d.ts +1 -1
- package/dest/mutex/mutex_database.d.ts.map +1 -1
- package/dest/noir/index.d.ts +1 -1
- package/dest/noir/noir_package_config.d.ts +9 -9
- package/dest/number/index.d.ts +3 -0
- package/dest/number/index.d.ts.map +1 -0
- package/dest/number/index.js +12 -0
- package/dest/profiler/index.d.ts +2 -0
- package/dest/profiler/index.d.ts.map +1 -0
- package/dest/profiler/index.js +1 -0
- package/dest/profiler/profiler.d.ts +8 -0
- package/dest/profiler/profiler.d.ts.map +1 -0
- package/dest/profiler/profiler.js +97 -0
- package/dest/promise/index.d.ts +1 -1
- package/dest/promise/running-promise.d.ts +2 -2
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +2 -2
- package/dest/promise/utils.d.ts +1 -1
- package/dest/queue/base_memory_queue.d.ts +1 -1
- package/dest/queue/base_memory_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.d.ts +2 -2
- package/dest/queue/batch_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.js +1 -1
- package/dest/queue/bounded_serial_queue.d.ts +1 -1
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
- package/dest/queue/fifo_memory_queue.d.ts +1 -1
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
- package/dest/queue/index.d.ts +1 -1
- package/dest/queue/priority_memory_queue.d.ts +1 -1
- package/dest/queue/priority_memory_queue.d.ts.map +1 -1
- package/dest/queue/priority_queue.d.ts +1 -1
- package/dest/queue/priority_queue.d.ts.map +1 -1
- package/dest/queue/semaphore.d.ts +1 -1
- package/dest/queue/semaphore.d.ts.map +1 -1
- package/dest/queue/serial_queue.d.ts +3 -3
- package/dest/queue/serial_queue.d.ts.map +1 -1
- package/dest/queue/serial_queue.js +7 -5
- package/dest/retry/index.d.ts +4 -3
- package/dest/retry/index.d.ts.map +1 -1
- package/dest/retry/index.js +2 -2
- package/dest/running-promise/index.d.ts +1 -1
- package/dest/schemas/api.d.ts +1 -1
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/schemas/index.d.ts +1 -1
- package/dest/schemas/parse.d.ts +1 -1
- package/dest/schemas/parse.js +1 -1
- package/dest/schemas/schemas.d.ts +15 -18
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +20 -8
- package/dest/schemas/types.d.ts +1 -1
- package/dest/schemas/utils.d.ts +4 -6
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/schemas/utils.js +15 -5
- package/dest/serialize/buffer_reader.d.ts +28 -3
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +44 -2
- package/dest/serialize/field_reader.d.ts +11 -2
- package/dest/serialize/field_reader.d.ts.map +1 -1
- package/dest/serialize/field_reader.js +18 -1
- package/dest/serialize/free_funcs.d.ts +24 -22
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +21 -27
- package/dest/serialize/index.d.ts +1 -1
- package/dest/serialize/serialize.d.ts +5 -6
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/serialize/type_registry.d.ts +1 -1
- package/dest/serialize/type_registry.d.ts.map +1 -1
- package/dest/serialize/types.d.ts +1 -1
- package/dest/sleep/index.d.ts +1 -1
- package/dest/sleep/index.d.ts.map +1 -1
- package/dest/string/index.d.ts +8 -3
- package/dest/string/index.d.ts.map +1 -1
- package/dest/string/index.js +27 -1
- package/dest/testing/files/index.d.ts +2 -3
- package/dest/testing/files/index.d.ts.map +1 -1
- package/dest/testing/files/index.js +3 -3
- package/dest/testing/formatting.d.ts +4 -0
- package/dest/testing/formatting.d.ts.map +1 -0
- package/dest/testing/formatting.js +3 -0
- package/dest/testing/index.d.ts +2 -1
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -0
- package/dest/testing/port_allocator.d.ts +1 -1
- package/dest/testing/snapshot_serializer.d.ts +1 -1
- package/dest/testing/test_data.d.ts +1 -1
- package/dest/timer/date.d.ts +3 -2
- package/dest/timer/date.d.ts.map +1 -1
- package/dest/timer/date.js +5 -3
- package/dest/timer/elapsed.d.ts +1 -1
- package/dest/timer/index.d.ts +2 -2
- package/dest/timer/index.d.ts.map +1 -1
- package/dest/timer/index.js +1 -1
- package/dest/timer/timeout.d.ts +19 -6
- package/dest/timer/timeout.d.ts.map +1 -1
- package/dest/timer/timeout.js +43 -22
- package/dest/timer/timer.d.ts +1 -1
- package/dest/timer/timer.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +1 -1
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +1 -1
- package/dest/transport/dispatch/messages.d.ts +1 -1
- package/dest/transport/index.d.ts +1 -2
- package/dest/transport/index.d.ts.map +1 -1
- package/dest/transport/index.js +0 -1
- package/dest/transport/interface/connector.d.ts +1 -1
- package/dest/transport/interface/connector.d.ts.map +1 -1
- package/dest/transport/interface/listener.d.ts +1 -2
- package/dest/transport/interface/listener.d.ts.map +1 -1
- package/dest/transport/interface/socket.d.ts +1 -1
- package/dest/transport/interface/socket.d.ts.map +1 -1
- package/dest/transport/interface/transferable.d.ts +1 -1
- package/dest/transport/node/index.d.ts +1 -1
- package/dest/transport/node/node_connector.d.ts +1 -2
- package/dest/transport/node/node_connector.d.ts.map +1 -1
- package/dest/transport/node/node_connector_socket.d.ts +1 -2
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
- package/dest/transport/node/node_listener.d.ts +1 -2
- package/dest/transport/node/node_listener.d.ts.map +1 -1
- package/dest/transport/node/node_listener_socket.d.ts +1 -2
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
- package/dest/transport/transport_client.d.ts +1 -2
- package/dest/transport/transport_client.d.ts.map +1 -1
- package/dest/transport/transport_server.d.ts +1 -10
- package/dest/transport/transport_server.d.ts.map +1 -1
- package/dest/trees/balanced_merkle_tree.d.ts +22 -0
- package/dest/trees/balanced_merkle_tree.d.ts.map +1 -0
- package/dest/trees/balanced_merkle_tree.js +64 -0
- package/dest/trees/hasher.d.ts +5 -7
- package/dest/trees/hasher.d.ts.map +1 -1
- package/dest/trees/index.d.ts +3 -1
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +2 -0
- package/dest/trees/indexed_merkle_tree.d.ts +1 -3
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +2 -4
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_tree_leaf.d.ts +1 -3
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
- package/dest/trees/membership_witness.d.ts +5 -10
- package/dest/trees/membership_witness.d.ts.map +1 -1
- package/dest/trees/membership_witness.js +13 -0
- package/dest/trees/merkle_tree.d.ts +1 -3
- package/dest/trees/merkle_tree.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.d.ts +2 -4
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/sibling_path.d.ts +5 -41
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.d.ts +23 -10
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.js +72 -50
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +49 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.js +158 -0
- package/dest/trees/unbalanced_tree_store.d.ts +2 -1
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
- package/dest/trees/unbalanced_tree_store.js +6 -0
- package/dest/types/index.d.ts +26 -3
- package/dest/types/index.d.ts.map +1 -1
- package/dest/url/index.d.ts +1 -1
- package/dest/url/index.d.ts.map +1 -1
- package/dest/url/index.js +1 -1
- package/dest/validation/index.d.ts +1 -1
- package/package.json +39 -43
- package/src/array/array.ts +13 -16
- package/src/async-pool/index.ts +1 -0
- package/src/bigint/index.ts +20 -0
- package/src/branded-types/epoch.ts +88 -0
- package/src/branded-types/index.ts +4 -0
- package/src/branded-types/slot.ts +88 -0
- package/src/branded-types/types.ts +2 -0
- package/src/buffer/buffer16.ts +133 -0
- package/src/buffer/buffer32.ts +8 -6
- package/src/buffer/index.ts +1 -0
- package/src/collection/array.ts +66 -4
- package/src/collection/object.ts +37 -0
- package/src/config/env_var.ts +152 -52
- package/src/config/index.ts +191 -8
- package/src/config/network_config.ts +16 -0
- package/src/config/network_name.ts +28 -0
- package/src/config/secret_value.ts +49 -0
- package/src/crypto/aes128/index.ts +19 -10
- package/src/crypto/bls/bn254_keystore.ts +287 -0
- package/src/crypto/bls/index.ts +77 -0
- package/src/crypto/bn254/bn254_utils.ts +64 -0
- package/src/crypto/bn254/index.ts +173 -0
- package/src/crypto/ecdsa/index.ts +41 -23
- package/src/crypto/grumpkin/index.ts +35 -45
- package/src/crypto/index.ts +2 -0
- package/src/crypto/keys/index.ts +5 -5
- package/src/crypto/pedersen/pedersen.wasm.ts +22 -18
- package/src/crypto/poseidon/index.ts +32 -24
- package/src/crypto/random/index.ts +2 -40
- package/src/crypto/schnorr/index.ts +20 -17
- package/src/crypto/secp256k1/index.ts +15 -11
- package/src/crypto/secp256k1-signer/utils.ts +120 -7
- package/src/crypto/sha256/index.ts +47 -0
- package/src/crypto/sync/index.ts +1 -1
- package/src/crypto/sync/pedersen/index.ts +16 -15
- package/src/crypto/sync/poseidon/index.ts +27 -22
- package/src/eth-address/index.ts +28 -2
- package/src/eth-signature/eth_signature.ts +44 -22
- package/src/fields/bls12_fields.ts +463 -0
- package/src/fields/bls12_point.ts +450 -0
- package/src/fields/fields.ts +53 -9
- package/src/fields/index.ts +2 -0
- package/src/fields/point.ts +20 -3
- package/src/fs/index.ts +1 -0
- package/src/fs/try_rm_dir.ts +15 -0
- package/src/index.ts +2 -2
- package/src/iterable/filter.ts +1 -1
- package/src/iterable/map.ts +1 -1
- package/src/jest/env.mjs +52 -0
- package/src/jest/setupAfterEnv.mjs +3 -0
- package/src/json-rpc/client/fetch.ts +14 -33
- package/src/json-rpc/client/safe_json_rpc_client.ts +226 -13
- package/src/json-rpc/client/undici.ts +8 -15
- package/src/json-rpc/convert.ts +3 -12
- package/src/json-rpc/errors.ts +6 -0
- package/src/json-rpc/fixtures/class_a.ts +4 -1
- package/src/json-rpc/fixtures/class_b.ts +4 -1
- package/src/json-rpc/index.ts +2 -1
- package/src/json-rpc/server/safe_json_rpc_server.ts +141 -48
- package/src/json-rpc/test/integration.ts +1 -1
- package/src/log/console.ts +4 -1
- package/src/log/gcloud-logger-config.ts +3 -7
- package/src/log/index.ts +4 -4
- package/src/log/libp2p_logger.ts +21 -2
- package/src/log/log_fn.ts +1 -1
- package/src/log/noir_debug_log_util.ts +21 -0
- package/src/log/pino-logger.ts +33 -2
- package/src/message/index.ts +5 -1
- package/src/mutex/mutex_database.ts +2 -3
- package/src/number/index.ts +14 -0
- package/src/profiler/index.ts +1 -0
- package/src/profiler/profiler.ts +125 -0
- package/src/promise/running-promise.ts +2 -2
- package/src/queue/batch_queue.ts +1 -1
- package/src/queue/bounded_serial_queue.ts +4 -1
- package/src/queue/serial_queue.ts +5 -5
- package/src/retry/index.ts +10 -5
- package/src/schemas/api.ts +4 -4
- package/src/schemas/parse.ts +1 -1
- package/src/schemas/schemas.ts +28 -10
- package/src/schemas/utils.ts +21 -8
- package/src/serialize/buffer_reader.ts +60 -3
- package/src/serialize/field_reader.ts +27 -3
- package/src/serialize/free_funcs.ts +25 -31
- package/src/serialize/serialize.ts +2 -0
- package/src/string/index.ts +36 -1
- package/src/testing/files/index.ts +7 -3
- package/src/testing/formatting.ts +3 -0
- package/src/testing/index.ts +1 -0
- package/src/timer/date.ts +9 -3
- package/src/timer/index.ts +1 -1
- package/src/timer/timeout.ts +54 -19
- package/src/transport/index.ts +0 -1
- package/src/transport/interface/connector.ts +0 -1
- package/src/transport/interface/listener.ts +2 -3
- package/src/transport/interface/socket.ts +2 -3
- package/src/transport/transport_client.ts +3 -4
- package/src/transport/transport_server.ts +4 -1
- package/src/trees/balanced_merkle_tree.ts +82 -0
- package/src/trees/hasher.ts +4 -4
- package/src/trees/index.ts +2 -0
- package/src/trees/indexed_merkle_tree.ts +5 -1
- package/src/trees/indexed_merkle_tree_calculator.ts +2 -2
- package/src/trees/membership_witness.ts +13 -0
- package/src/trees/merkle_tree.ts +4 -1
- package/src/trees/merkle_tree_calculator.ts +9 -4
- package/src/trees/unbalanced_merkle_tree.ts +98 -42
- package/src/trees/unbalanced_merkle_tree_calculator.ts +187 -0
- package/src/trees/unbalanced_tree_store.ts +5 -1
- package/src/types/index.ts +25 -4
- package/src/url/index.ts +0 -1
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts +0 -13
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +0 -1
- package/dest/crypto/pedersen/pedersen.elliptic.js +0 -582
- package/dest/log/debug.d.ts +0 -56
- package/dest/log/debug.d.ts.map +0 -1
- package/dest/log/debug.js +0 -75
- package/dest/log/log_history.d.ts +0 -31
- package/dest/log/log_history.d.ts.map +0 -1
- package/dest/log/log_history.js +0 -38
- package/dest/transport/browser/index.d.ts +0 -5
- package/dest/transport/browser/index.d.ts.map +0 -1
- package/dest/transport/browser/index.js +0 -4
- package/dest/transport/browser/message_port_socket.d.ts +0 -37
- package/dest/transport/browser/message_port_socket.d.ts.map +0 -1
- package/dest/transport/browser/message_port_socket.js +0 -42
- package/dest/transport/browser/shared_worker_connector.d.ts +0 -19
- package/dest/transport/browser/shared_worker_connector.d.ts.map +0 -1
- package/dest/transport/browser/shared_worker_connector.js +0 -19
- package/dest/transport/browser/shared_worker_listener.d.ts +0 -38
- package/dest/transport/browser/shared_worker_listener.d.ts.map +0 -1
- package/dest/transport/browser/shared_worker_listener.js +0 -33
- package/dest/transport/browser/worker_connector.d.ts +0 -26
- package/dest/transport/browser/worker_connector.d.ts.map +0 -1
- package/dest/transport/browser/worker_connector.js +0 -30
- package/dest/transport/browser/worker_listener.d.ts +0 -39
- package/dest/transport/browser/worker_listener.d.ts.map +0 -1
- package/dest/transport/browser/worker_listener.js +0 -35
- package/dest/wasm/empty_wasi_sdk.d.ts +0 -130
- package/dest/wasm/empty_wasi_sdk.d.ts.map +0 -1
- package/dest/wasm/empty_wasi_sdk.js +0 -148
- package/dest/wasm/index.d.ts +0 -2
- package/dest/wasm/index.d.ts.map +0 -1
- package/dest/wasm/index.js +0 -1
- package/dest/wasm/wasm_module.d.ts +0 -136
- package/dest/wasm/wasm_module.d.ts.map +0 -1
- package/dest/wasm/wasm_module.js +0 -196
- package/dest/worker/browser/index.d.ts +0 -3
- package/dest/worker/browser/index.d.ts.map +0 -1
- package/dest/worker/browser/index.js +0 -2
- package/dest/worker/browser/start_web_module.d.ts +0 -7
- package/dest/worker/browser/start_web_module.d.ts.map +0 -1
- package/dest/worker/browser/start_web_module.js +0 -27
- package/dest/worker/browser/web_data_store.d.ts +0 -24
- package/dest/worker/browser/web_data_store.d.ts.map +0 -1
- package/dest/worker/browser/web_data_store.js +0 -29
- package/dest/worker/browser/web_worker.d.ts +0 -10
- package/dest/worker/browser/web_worker.d.ts.map +0 -1
- package/dest/worker/browser/web_worker.js +0 -25
- package/dest/worker/data_store.d.ts +0 -21
- package/dest/worker/data_store.d.ts.map +0 -1
- package/dest/worker/data_store.js +0 -3
- package/dest/worker/index.d.ts +0 -3
- package/dest/worker/index.d.ts.map +0 -1
- package/dest/worker/index.js +0 -1
- package/dest/worker/node/index.d.ts +0 -3
- package/dest/worker/node/index.d.ts.map +0 -1
- package/dest/worker/node/index.js +0 -2
- package/dest/worker/node/node_data_store.d.ts +0 -13
- package/dest/worker/node/node_data_store.d.ts.map +0 -1
- package/dest/worker/node/node_data_store.js +0 -20
- package/dest/worker/node/node_worker.d.ts +0 -6
- package/dest/worker/node/node_worker.d.ts.map +0 -1
- package/dest/worker/node/node_worker.js +0 -22
- package/dest/worker/node/start_node_module.d.ts +0 -7
- package/dest/worker/node/start_node_module.d.ts.map +0 -1
- package/dest/worker/node/start_node_module.js +0 -31
- package/dest/worker/wasm_worker.d.ts +0 -9
- package/dest/worker/wasm_worker.d.ts.map +0 -1
- package/dest/worker/wasm_worker.js +0 -3
- package/dest/worker/worker_pool.d.ts +0 -40
- package/dest/worker/worker_pool.d.ts.map +0 -1
- package/dest/worker/worker_pool.js +0 -51
- package/src/crypto/pedersen/pedersen.elliptic.ts +0 -584
- package/src/log/debug.ts +0 -104
- package/src/log/log_history.ts +0 -44
- package/src/transport/browser/index.ts +0 -4
- package/src/transport/browser/message_port_socket.ts +0 -48
- package/src/transport/browser/shared_worker_connector.ts +0 -21
- package/src/transport/browser/shared_worker_listener.ts +0 -53
- package/src/transport/browser/worker_connector.ts +0 -30
- package/src/transport/browser/worker_listener.ts +0 -54
- package/src/wasm/README.md +0 -6
- package/src/wasm/empty_wasi_sdk.ts +0 -166
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +0 -27
- package/src/wasm/index.ts +0 -1
- package/src/wasm/wasm_module.ts +0 -260
- package/src/worker/browser/index.ts +0 -2
- package/src/worker/browser/start_web_module.ts +0 -24
- package/src/worker/browser/web_data_store.ts +0 -38
- package/src/worker/browser/web_worker.ts +0 -25
- package/src/worker/data_store.ts +0 -19
- package/src/worker/index.ts +0 -2
- package/src/worker/node/index.ts +0 -2
- package/src/worker/node/node_data_store.ts +0 -27
- package/src/worker/node/node_worker.ts +0 -23
- package/src/worker/node/start_node_module.ts +0 -30
- package/src/worker/wasm_worker.ts +0 -7
- package/src/worker/worker_pool.ts +0 -73
package/src/eth-address/index.ts
CHANGED
|
@@ -41,6 +41,24 @@ export class EthAddress {
|
|
|
41
41
|
return new EthAddress(Buffer.from(address.replace(/^0x/i, ''), 'hex'));
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Creates an EthAddress from a plain object without Zod validation.
|
|
46
|
+
* This method is optimized for performance and skips validation, making it suitable
|
|
47
|
+
* for deserializing trusted data (e.g., from C++ via MessagePack).
|
|
48
|
+
* Handles buffers (20 or 32 bytes), strings, or existing instances.
|
|
49
|
+
* @param obj - Plain object, buffer, string, or EthAddress instance
|
|
50
|
+
* @returns An EthAddress instance
|
|
51
|
+
*/
|
|
52
|
+
public static fromPlainObject(obj: any): EthAddress {
|
|
53
|
+
if (obj instanceof EthAddress) {
|
|
54
|
+
return obj;
|
|
55
|
+
}
|
|
56
|
+
if (obj instanceof Buffer || Buffer.isBuffer(obj)) {
|
|
57
|
+
return obj.length === 20 ? new EthAddress(obj) : EthAddress.fromField(new Fr(obj));
|
|
58
|
+
}
|
|
59
|
+
return EthAddress.fromString(obj);
|
|
60
|
+
}
|
|
61
|
+
|
|
44
62
|
/**
|
|
45
63
|
* Create a random EthAddress instance with 20 random bytes.
|
|
46
64
|
* This method generates a new Ethereum address with a randomly generated set of 20 bytes.
|
|
@@ -117,14 +135,14 @@ export class EthAddress {
|
|
|
117
135
|
* @param address - The Ethereum address as a hex-encoded string.
|
|
118
136
|
* @returns The Ethereum address in its checksum format.
|
|
119
137
|
*/
|
|
120
|
-
public static toChecksumAddress(address: string) {
|
|
138
|
+
public static toChecksumAddress(address: string): `0x${string}` {
|
|
121
139
|
if (!EthAddress.isAddress(address)) {
|
|
122
140
|
throw new Error('Invalid address string.');
|
|
123
141
|
}
|
|
124
142
|
|
|
125
143
|
address = address.toLowerCase().replace(/^0x/i, '');
|
|
126
144
|
const addressHash = keccak256String(address);
|
|
127
|
-
let checksumAddress = '0x';
|
|
145
|
+
let checksumAddress: `0x${string}` = '0x';
|
|
128
146
|
|
|
129
147
|
for (let i = 0; i < address.length; i++) {
|
|
130
148
|
// If ith character is 9 to f then make it uppercase.
|
|
@@ -228,11 +246,19 @@ export class EthAddress {
|
|
|
228
246
|
return new EthAddress(reader.readBytes(EthAddress.SIZE_IN_BYTES));
|
|
229
247
|
}
|
|
230
248
|
|
|
249
|
+
/** Converts a number into an address. Useful for testing. */
|
|
250
|
+
static fromNumber(num: bigint | number): EthAddress {
|
|
251
|
+
const buffer = Buffer.alloc(EthAddress.SIZE_IN_BYTES);
|
|
252
|
+
buffer.writeBigUInt64BE(BigInt(num), 0);
|
|
253
|
+
return new EthAddress(buffer);
|
|
254
|
+
}
|
|
255
|
+
|
|
231
256
|
toJSON() {
|
|
232
257
|
return this.toString();
|
|
233
258
|
}
|
|
234
259
|
|
|
235
260
|
static get schema() {
|
|
261
|
+
// Serialization from hex string.
|
|
236
262
|
return hexSchemaFor(EthAddress, EthAddress.isAddress);
|
|
237
263
|
}
|
|
238
264
|
}
|
|
@@ -5,27 +5,30 @@ import { z } from 'zod';
|
|
|
5
5
|
|
|
6
6
|
import { hasHexPrefix, hexToBuffer } from '../string/index.js';
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* A version of the Signature class that uses `0x${string}` values for r and s rather than
|
|
11
|
-
* Buffer32s
|
|
8
|
+
/**
|
|
9
|
+
* A version of the Signature class that uses `0x${string}` values for r and s rather than Buffer32s
|
|
12
10
|
*/
|
|
13
11
|
export type ViemSignature = {
|
|
14
12
|
r: `0x${string}`;
|
|
15
13
|
s: `0x${string}`;
|
|
16
14
|
v: number;
|
|
17
|
-
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type ViemTransactionSignature = {
|
|
18
|
+
r: `0x${string}`;
|
|
19
|
+
s: `0x${string}`;
|
|
20
|
+
yParity: 0 | 1;
|
|
18
21
|
};
|
|
19
22
|
|
|
20
23
|
/**
|
|
21
|
-
* Signature
|
|
22
|
-
*
|
|
23
24
|
* Contains a signature split into it's primary components (r,s,v)
|
|
24
25
|
*/
|
|
25
26
|
export class Signature {
|
|
26
27
|
// Cached values
|
|
27
28
|
private size: number | undefined;
|
|
28
29
|
|
|
30
|
+
public readonly empty: boolean;
|
|
31
|
+
|
|
29
32
|
constructor(
|
|
30
33
|
/** The r value of the signature */
|
|
31
34
|
public readonly r: Buffer32,
|
|
@@ -33,9 +36,9 @@ export class Signature {
|
|
|
33
36
|
public readonly s: Buffer32,
|
|
34
37
|
/** The v value of the signature */
|
|
35
38
|
public readonly v: number,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
) {
|
|
40
|
+
this.empty = r.isZero() && s.isZero() && v === 0;
|
|
41
|
+
}
|
|
39
42
|
|
|
40
43
|
static fromBuffer(buf: Buffer | BufferReader): Signature {
|
|
41
44
|
const reader = BufferReader.asReader(buf);
|
|
@@ -44,9 +47,7 @@ export class Signature {
|
|
|
44
47
|
const s = reader.readObject(Buffer32);
|
|
45
48
|
const v = reader.readNumber();
|
|
46
49
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return new Signature(r, s, v, isEmpty);
|
|
50
|
+
return new Signature(r, s, v);
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
static isValidString(sig: `0x${string}`): boolean {
|
|
@@ -65,27 +66,35 @@ export class Signature {
|
|
|
65
66
|
const s = reader.readObject(Buffer32);
|
|
66
67
|
const v = parseInt(sig.slice(2 + 64 * 2), 16);
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
return new Signature(r, s, v);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static fromViemSignature(sig: ViemSignature): Signature {
|
|
73
|
+
return new Signature(Buffer32.fromBuffer(hexToBuffer(sig.r)), Buffer32.fromBuffer(hexToBuffer(sig.s)), sig.v);
|
|
74
|
+
}
|
|
69
75
|
|
|
70
|
-
|
|
76
|
+
static fromViemTransactionSignature(sig: ViemTransactionSignature): Signature {
|
|
77
|
+
return new Signature(Buffer32.fromBuffer(hexToBuffer(sig.r)), Buffer32.fromBuffer(hexToBuffer(sig.s)), sig.yParity);
|
|
71
78
|
}
|
|
72
79
|
|
|
73
80
|
static random(): Signature {
|
|
74
|
-
return new Signature(Buffer32.random(), Buffer32.random(),
|
|
81
|
+
return new Signature(Buffer32.random(), Buffer32.random(), 1);
|
|
75
82
|
}
|
|
76
83
|
|
|
77
84
|
static empty(): Signature {
|
|
78
|
-
return new Signature(Buffer32.ZERO, Buffer32.ZERO, 0
|
|
85
|
+
return new Signature(Buffer32.ZERO, Buffer32.ZERO, 0);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
isEmpty(): boolean {
|
|
89
|
+
return this.empty;
|
|
79
90
|
}
|
|
80
91
|
|
|
81
92
|
equals(other: Signature): boolean {
|
|
82
|
-
return this.r.equals(other.r) && this.s.equals(other.s) && this.v === other.v && this.
|
|
93
|
+
return this.r.equals(other.r) && this.s.equals(other.s) && this.v === other.v && this.empty === other.empty;
|
|
83
94
|
}
|
|
84
95
|
|
|
85
96
|
toBuffer(): Buffer {
|
|
86
|
-
|
|
87
|
-
this.size = buffer.length;
|
|
88
|
-
return buffer;
|
|
97
|
+
return serializeToBuffer([this.r, this.s, this.v]);
|
|
89
98
|
}
|
|
90
99
|
|
|
91
100
|
getSize(): number {
|
|
@@ -110,7 +119,20 @@ export class Signature {
|
|
|
110
119
|
r: this.r.toString(),
|
|
111
120
|
s: this.s.toString(),
|
|
112
121
|
v: this.v,
|
|
113
|
-
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Return the signature with `0x${string}` encodings for r and s. Verifies v is valid
|
|
127
|
+
*/
|
|
128
|
+
toViemTransactionSignature(): ViemTransactionSignature {
|
|
129
|
+
if (this.v !== 0 && this.v !== 1) {
|
|
130
|
+
throw new Error('Invalid transaction signature');
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
r: this.r.toString(),
|
|
134
|
+
s: this.s.toString(),
|
|
135
|
+
yParity: this.v,
|
|
114
136
|
};
|
|
115
137
|
}
|
|
116
138
|
|
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
/* eslint-disable camelcase */
|
|
2
|
+
import { bls12_381 } from '@noble/curves/bls12-381';
|
|
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
|
+
import { Fr } from './fields.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Represents a field derived from BLS12Field.
|
|
14
|
+
*/
|
|
15
|
+
type BLS12DerivedField<T extends BLS12Field> = {
|
|
16
|
+
new (value: any): T;
|
|
17
|
+
/**
|
|
18
|
+
* All derived fields will specify MODULUS and SIZE_IN_BYTES.
|
|
19
|
+
*/
|
|
20
|
+
MODULUS: bigint;
|
|
21
|
+
SIZE_IN_BYTES: number;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Base BLS12field class.
|
|
26
|
+
*/
|
|
27
|
+
export abstract class BLS12Field {
|
|
28
|
+
private asBuffer?: Buffer;
|
|
29
|
+
private asBigInt?: bigint;
|
|
30
|
+
|
|
31
|
+
protected constructor(value: number | bigint | Buffer) {
|
|
32
|
+
if (Buffer.isBuffer(value)) {
|
|
33
|
+
if (value.length > this.size()) {
|
|
34
|
+
throw new Error(`Value length ${value.length} exceeds ${this.size()}`);
|
|
35
|
+
}
|
|
36
|
+
this.asBuffer =
|
|
37
|
+
value.length === this.size() ? value : Buffer.concat([Buffer.alloc(this.size() - value.length), value]);
|
|
38
|
+
this.toBigInt();
|
|
39
|
+
} else if (typeof value === 'bigint' || typeof value === 'number') {
|
|
40
|
+
this.asBigInt = BigInt(value);
|
|
41
|
+
if (this.asBigInt >= this.modulus()) {
|
|
42
|
+
throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`);
|
|
43
|
+
}
|
|
44
|
+
this.toBuffer();
|
|
45
|
+
} else {
|
|
46
|
+
throw new Error(`Type '${typeof value}' with value '${value}' passed to BLS12Field constructor.`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
protected abstract modulus(): bigint;
|
|
51
|
+
protected abstract size(): number;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* We return a copy of the Buffer to ensure this remains immutable.
|
|
55
|
+
*/
|
|
56
|
+
toBuffer(): Buffer {
|
|
57
|
+
if (!this.asBuffer) {
|
|
58
|
+
this.asBuffer = toBufferBE(this.asBigInt!, this.size());
|
|
59
|
+
}
|
|
60
|
+
return Buffer.from(this.asBuffer);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
toString(): `0x${string}` {
|
|
64
|
+
return `0x${this.toBuffer().toString('hex')}`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
toBigInt(): bigint {
|
|
68
|
+
if (this.asBigInt === undefined) {
|
|
69
|
+
this.asBigInt = toBigIntBE(this.asBuffer!);
|
|
70
|
+
if (this.asBigInt >= this.modulus()) {
|
|
71
|
+
throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return this.asBigInt;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
toNoirBigNum(): { limbs: string[] } {
|
|
78
|
+
const buffer = this.toBuffer();
|
|
79
|
+
const limbs = [];
|
|
80
|
+
// Split into 120 bit (=15 byte) limbs
|
|
81
|
+
for (let i = 0; i < Math.ceil(this.size() / 15); i++) {
|
|
82
|
+
limbs.push(buffer.subarray(-(i + 1) * 15, this.size() - i * 15));
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
limbs: limbs.map(l => `0x${l.toString('hex')}`),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
equals(rhs: BLS12Field): boolean {
|
|
90
|
+
return this.toBuffer().equals(rhs.toBuffer());
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
lt(rhs: BLS12Field): boolean {
|
|
94
|
+
return this.toBigInt() < rhs.toBigInt();
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
isZero(): boolean {
|
|
98
|
+
return this.toBigInt() === 0n;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
isEmpty(): boolean {
|
|
102
|
+
return this.isZero();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
isNegative(): boolean {
|
|
106
|
+
// Returns whether the field element is above the halfway point of (p-1)/2
|
|
107
|
+
// Generally referred to as 'negative' but also referred to as 'greater' (e.g. in point compression)
|
|
108
|
+
return this.toBigInt() > (this.modulus() - 1n) / 2n;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
toFriendlyJSON(): string {
|
|
112
|
+
return this.toString();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
toField() {
|
|
116
|
+
return this;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Constructs a field from a Buffer of BufferReader.
|
|
122
|
+
* It maybe not read the full SIZE_IN_BYTES bytes if the Buffer is shorter, but it will padded in BLS12Field constructor.
|
|
123
|
+
*/
|
|
124
|
+
function fromBuffer<T extends BLS12Field>(buffer: Buffer | BufferReader, f: BLS12DerivedField<T>) {
|
|
125
|
+
const reader = BufferReader.asReader(buffer);
|
|
126
|
+
return new f(reader.readBytes(f.SIZE_IN_BYTES));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Returns a random field element.
|
|
131
|
+
*/
|
|
132
|
+
function random<T extends BLS12Field>(f: BLS12DerivedField<T>): T {
|
|
133
|
+
return new f(toBigIntBE(randomBytes(f.SIZE_IN_BYTES * 2)) % f.MODULUS);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Constructs a field from a 0x prefixed hex string.
|
|
138
|
+
*/
|
|
139
|
+
function fromHexString<T extends BLS12Field>(str: string, f: BLS12DerivedField<T>) {
|
|
140
|
+
return new f(bufferFromHexString(str));
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Constructs a field from noir BigNum type.
|
|
145
|
+
*/
|
|
146
|
+
function fromNoirBigNum<T extends BLS12Field>(bignum: { limbs: string[] }, f: BLS12DerivedField<T>) {
|
|
147
|
+
// We have 120 bit (=15 byte) limbs
|
|
148
|
+
let bigint = 0n;
|
|
149
|
+
for (let i = 0; i < bignum.limbs.length; i++) {
|
|
150
|
+
bigint += BigInt(bignum.limbs[i]) << BigInt(120 * i);
|
|
151
|
+
}
|
|
152
|
+
return new f(bigint);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Constructs a buffer from a hex string.
|
|
157
|
+
* Differs from bigint-buffer's fromHex() by allowing odd number of characters.
|
|
158
|
+
*/
|
|
159
|
+
function bufferFromHexString(str: string) {
|
|
160
|
+
const withoutPrefix = str.replace(/^0x/i, '');
|
|
161
|
+
const checked = withoutPrefix.match(/^[0-9A-F]+$/i)?.[0];
|
|
162
|
+
if (checked === undefined) {
|
|
163
|
+
throw new Error(`Invalid hex-encoded string: "${str}"`);
|
|
164
|
+
}
|
|
165
|
+
return Buffer.from(checked.length % 2 === 1 ? '0' + checked : checked, 'hex');
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Fr field class.
|
|
170
|
+
* @dev This class is used to represent elements of BLS12-381 scalar field.
|
|
171
|
+
*/
|
|
172
|
+
export class BLS12Fr extends BLS12Field {
|
|
173
|
+
static SIZE_IN_BYTES = bls12_381.fields.Fr.BYTES;
|
|
174
|
+
static MODULUS = bls12_381.fields.Fr.ORDER;
|
|
175
|
+
static ZERO = new BLS12Fr(0n);
|
|
176
|
+
static ONE = new BLS12Fr(1n);
|
|
177
|
+
static MAX_FIELD_VALUE = new BLS12Fr(this.MODULUS - 1n);
|
|
178
|
+
|
|
179
|
+
constructor(value: number | bigint | Buffer) {
|
|
180
|
+
super(value);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
[inspect.custom]() {
|
|
184
|
+
return `BLS12Fr<${this.toString()}>`;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
protected modulus() {
|
|
188
|
+
return BLS12Fr.MODULUS;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
protected size() {
|
|
192
|
+
return BLS12Fr.SIZE_IN_BYTES;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
static random() {
|
|
196
|
+
return random(BLS12Fr);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
static zero() {
|
|
200
|
+
return BLS12Fr.ZERO;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
static isZero(value: BLS12Fr) {
|
|
204
|
+
return value.isZero();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
208
|
+
return fromBuffer(buffer, BLS12Fr);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Creates a BLS12Fr instance from a string.
|
|
213
|
+
* @param buf - the string to create a BLS12Fr from.
|
|
214
|
+
* @returns the BLS12Fr instance
|
|
215
|
+
* @remarks if the string only consists of numbers, we assume we are parsing a bigint,
|
|
216
|
+
* otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding
|
|
217
|
+
* as to what is being parsed.
|
|
218
|
+
*/
|
|
219
|
+
static fromString(buf: string) {
|
|
220
|
+
if (buf.match(/^\d+$/) !== null) {
|
|
221
|
+
return new BLS12Fr(toBufferBE(BigInt(buf), BLS12Fr.SIZE_IN_BYTES));
|
|
222
|
+
}
|
|
223
|
+
if (buf.match(/^0x/i) !== null) {
|
|
224
|
+
return fromHexString(buf, BLS12Fr);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
throw new Error(`Tried to create a BLS12Fr from an invalid string: ${buf}`);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Creates a BLS12Fr instance from a hex string.
|
|
232
|
+
* @param buf - a hex encoded string.
|
|
233
|
+
* @returns the BLS12Fr instance
|
|
234
|
+
*/
|
|
235
|
+
static fromHexString(buf: string) {
|
|
236
|
+
return fromHexString(buf, BLS12Fr);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Constructs a field from noir BigNum type.
|
|
241
|
+
*/
|
|
242
|
+
static fromNoirBigNum(bignum: { limbs: string[] }) {
|
|
243
|
+
return fromNoirBigNum(bignum, BLS12Fr);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Creates a BLS12Fr instance from a BN254 Fr instance.
|
|
248
|
+
* @dev The BN254 field size < BLS12_381, so we cannot overflow here.
|
|
249
|
+
* Useful for blob related calculations.
|
|
250
|
+
* @param field - a BN254 Fr instance.
|
|
251
|
+
* @returns the BLS12Fr instance
|
|
252
|
+
*/
|
|
253
|
+
static fromBN254Fr(field: Fr) {
|
|
254
|
+
return BLS12Fr.fromBuffer(field.toBuffer());
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Creates a BN254 Fr instance from a BLS12Fr instance.
|
|
259
|
+
* @dev The BN254 field size < BLS12_381, so we must check the size here
|
|
260
|
+
* Useful for blob related calculations.
|
|
261
|
+
* @param field - a BLS12Fr instance.
|
|
262
|
+
* @returns the BN254 Fr instance
|
|
263
|
+
*/
|
|
264
|
+
toBN254Fr() {
|
|
265
|
+
if (this.toBigInt() >= Fr.MODULUS) {
|
|
266
|
+
throw new Error(`BLS12-381 Fr field ${this} too large to be converted into a BN254 Fr field`);
|
|
267
|
+
}
|
|
268
|
+
return Fr.fromBuffer(this.toBuffer());
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/** Arithmetic - wrapper around noble curves */
|
|
272
|
+
|
|
273
|
+
add(rhs: BLS12Fr) {
|
|
274
|
+
return new BLS12Fr(bls12_381.fields.Fr.add(this.toBigInt(), rhs.toBigInt()));
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
square() {
|
|
278
|
+
return new BLS12Fr(bls12_381.fields.Fr.sqr(this.toBigInt()));
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
negate() {
|
|
282
|
+
return new BLS12Fr(bls12_381.fields.Fr.neg(this.toBigInt()));
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
sub(rhs: BLS12Fr) {
|
|
286
|
+
return new BLS12Fr(bls12_381.fields.Fr.sub(this.toBigInt(), rhs.toBigInt()));
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
mul(rhs: BLS12Fr) {
|
|
290
|
+
return new BLS12Fr(bls12_381.fields.Fr.mul(this.toBigInt(), rhs.toBigInt()));
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
div(rhs: BLS12Fr) {
|
|
294
|
+
return new BLS12Fr(bls12_381.fields.Fr.div(this.toBigInt(), rhs.toBigInt()));
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
sqrt() {
|
|
298
|
+
// The noble library throws when the field does not have a sqrt.
|
|
299
|
+
// We would rather have it return null to avoid throwing when (e.g.) checking candidates.
|
|
300
|
+
let res;
|
|
301
|
+
try {
|
|
302
|
+
res = bls12_381.fields.Fr.sqrt(this.toBigInt());
|
|
303
|
+
} catch (error: any) {
|
|
304
|
+
if (error.message.includes('Cannot find square root')) {
|
|
305
|
+
return null;
|
|
306
|
+
} else {
|
|
307
|
+
throw error;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return new BLS12Fr(res);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
pow(rhs: bigint) {
|
|
314
|
+
return new BLS12Fr(bls12_381.fields.Fr.pow(this.toBigInt(), rhs));
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
toJSON() {
|
|
318
|
+
return this.toString();
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
static get schema() {
|
|
322
|
+
return hexSchemaFor(BLS12Fr);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// For deserializing JSON.
|
|
327
|
+
TypeRegistry.register('BLS12Fr', BLS12Fr);
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Fq field class.
|
|
331
|
+
* @dev This class is used to represent elements of BLS12-381 base field.
|
|
332
|
+
*/
|
|
333
|
+
export class BLS12Fq extends BLS12Field {
|
|
334
|
+
static SIZE_IN_BYTES = bls12_381.fields.Fp.BYTES;
|
|
335
|
+
static MODULUS = bls12_381.fields.Fp.ORDER;
|
|
336
|
+
static ZERO = new BLS12Fq(0n);
|
|
337
|
+
static ONE = new BLS12Fq(1n);
|
|
338
|
+
static MAX_FIELD_VALUE = new BLS12Fq(this.MODULUS - 1n);
|
|
339
|
+
|
|
340
|
+
constructor(value: number | bigint | Buffer) {
|
|
341
|
+
super(value);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
[inspect.custom]() {
|
|
345
|
+
return `BLS12Fq<${this.toString()}>`;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
protected modulus() {
|
|
349
|
+
return BLS12Fq.MODULUS;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
protected size() {
|
|
353
|
+
return BLS12Fq.SIZE_IN_BYTES;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
static random() {
|
|
357
|
+
return random(BLS12Fq);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
static zero() {
|
|
361
|
+
return BLS12Fq.ZERO;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
static isZero(value: BLS12Fq) {
|
|
365
|
+
return value.isZero();
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
369
|
+
return fromBuffer(buffer, BLS12Fq);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Creates a BLS12Fq instance from a string.
|
|
374
|
+
* @param buf - the string to create a BLS12Fq from.
|
|
375
|
+
* @returns the BLS12Fq instance
|
|
376
|
+
* @remarks if the string only consists of numbers, we assume we are parsing a bigint,
|
|
377
|
+
* otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding
|
|
378
|
+
* as to what is being parsed.
|
|
379
|
+
*/
|
|
380
|
+
static fromString(buf: string) {
|
|
381
|
+
if (buf.match(/^\d+$/) !== null) {
|
|
382
|
+
return new BLS12Fq(toBufferBE(BigInt(buf), BLS12Fq.SIZE_IN_BYTES));
|
|
383
|
+
}
|
|
384
|
+
if (buf.match(/^0x/i) !== null) {
|
|
385
|
+
return fromHexString(buf, BLS12Fq);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
throw new Error(`Tried to create a BLS12Fq from an invalid string: ${buf}`);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Creates a BLS12Fq instance from a hex string.
|
|
393
|
+
* @param buf - a hex encoded string.
|
|
394
|
+
* @returns the BLS12Fq instance
|
|
395
|
+
*/
|
|
396
|
+
static fromHexString(buf: string) {
|
|
397
|
+
return fromHexString(buf, BLS12Fq);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Constructs a field from noir BigNum type.
|
|
402
|
+
*/
|
|
403
|
+
static fromNoirBigNum(bignum: { limbs: string[] }) {
|
|
404
|
+
return fromNoirBigNum(bignum, BLS12Fq);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/** Arithmetic - wrapper around noble curves */
|
|
408
|
+
|
|
409
|
+
add(rhs: BLS12Fq) {
|
|
410
|
+
return new BLS12Fq(bls12_381.fields.Fp.add(this.toBigInt(), rhs.toBigInt()));
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
square() {
|
|
414
|
+
return new BLS12Fq(bls12_381.fields.Fp.sqr(this.toBigInt()));
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
negate() {
|
|
418
|
+
return new BLS12Fq(bls12_381.fields.Fp.neg(this.toBigInt()));
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
sub(rhs: BLS12Fq) {
|
|
422
|
+
return new BLS12Fq(bls12_381.fields.Fp.sub(this.toBigInt(), rhs.toBigInt()));
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
mul(rhs: BLS12Fq) {
|
|
426
|
+
return new BLS12Fq(bls12_381.fields.Fp.mul(this.toBigInt(), rhs.toBigInt()));
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
div(rhs: BLS12Fq) {
|
|
430
|
+
return new BLS12Fq(bls12_381.fields.Fp.div(this.toBigInt(), rhs.toBigInt()));
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
sqrt() {
|
|
434
|
+
// The noble library throws when the field does not have a sqrt.
|
|
435
|
+
// We would rather have it return null to avoid throwing when (e.g.) checking candidates.
|
|
436
|
+
let res;
|
|
437
|
+
try {
|
|
438
|
+
res = bls12_381.fields.Fp.sqrt(this.toBigInt());
|
|
439
|
+
} catch (error: any) {
|
|
440
|
+
if (error.message.includes('Cannot find square root')) {
|
|
441
|
+
return null;
|
|
442
|
+
} else {
|
|
443
|
+
throw error;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
return new BLS12Fq(res);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
pow(rhs: bigint) {
|
|
450
|
+
return new BLS12Fq(bls12_381.fields.Fp.pow(this.toBigInt(), rhs));
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
toJSON() {
|
|
454
|
+
return this.toString();
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
static get schema() {
|
|
458
|
+
return hexSchemaFor(BLS12Fq);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// For deserializing JSON.
|
|
463
|
+
TypeRegistry.register('BLS12Fq', BLS12Fq);
|