@aztec/foundation 0.0.0-test.1 → 0.0.1-commit.b655e406
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 +5 -0
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +11 -0
- 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 +0 -2
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/buffer/buffer16.d.ts +80 -0
- package/dest/buffer/buffer16.d.ts.map +1 -0
- package/dest/buffer/buffer16.js +100 -0
- package/dest/buffer/buffer32.d.ts +3 -7
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +6 -6
- package/dest/buffer/index.d.ts +1 -0
- package/dest/buffer/index.d.ts.map +1 -1
- package/dest/buffer/index.js +1 -0
- package/dest/collection/array.d.ts +16 -3
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +57 -3
- package/dest/collection/object.d.ts +16 -0
- package/dest/collection/object.d.ts.map +1 -1
- package/dest/collection/object.js +25 -0
- package/dest/config/env_var.d.ts +1 -1
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/index.d.ts +48 -1
- 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 +2 -4
- package/dest/crypto/aes128/index.d.ts.map +1 -1
- package/dest/crypto/aes128/index.js +23 -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 +142 -0
- package/dest/crypto/ecdsa/index.d.ts +2 -2
- package/dest/crypto/ecdsa/index.d.ts.map +1 -1
- package/dest/crypto/ecdsa/index.js +70 -48
- package/dest/crypto/ecdsa/signature.d.ts +1 -3
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.d.ts +6 -13
- package/dest/crypto/grumpkin/index.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.js +69 -54
- package/dest/crypto/index.d.ts +2 -0
- package/dest/crypto/index.d.ts.map +1 -1
- package/dest/crypto/index.js +2 -0
- package/dest/crypto/keccak/index.d.ts +2 -4
- package/dest/crypto/keccak/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.d.ts +0 -2
- package/dest/crypto/keys/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.js +9 -4
- package/dest/crypto/pedersen/pedersen.noble.d.ts +2 -4
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -4
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +29 -13
- package/dest/crypto/poseidon/index.d.ts +0 -2
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +42 -17
- package/dest/crypto/random/index.d.ts +1 -3
- 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 +0 -2
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.js +35 -37
- package/dest/crypto/schnorr/signature.d.ts +3 -5
- package/dest/crypto/schnorr/signature.d.ts.map +1 -1
- package/dest/crypto/secp256k1/index.d.ts +4 -6
- package/dest/crypto/secp256k1/index.d.ts.map +1 -1
- package/dest/crypto/secp256k1/index.js +29 -18
- package/dest/crypto/secp256k1-signer/utils.d.ts +55 -4
- 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 +4 -6
- package/dest/crypto/serialize.d.ts.map +1 -1
- package/dest/crypto/sha256/index.d.ts +21 -4
- 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 +1 -3
- package/dest/crypto/sha512/index.d.ts.map +1 -1
- package/dest/crypto/signature/index.d.ts +0 -2
- package/dest/crypto/signature/index.d.ts.map +1 -1
- package/dest/crypto/sync/index.js +3 -1
- package/dest/crypto/sync/pedersen/index.d.ts +2 -4
- 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 +0 -2
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/sync/poseidon/index.js +27 -12
- package/dest/decorators/memoize.d.ts.map +1 -1
- package/dest/eth-address/index.d.ts +6 -7
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +5 -0
- package/dest/eth-signature/eth_signature.d.ts +16 -14
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +31 -17
- 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 +229 -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 +0 -2
- package/dest/fields/coordinate.d.ts.map +1 -1
- package/dest/fields/fields.d.ts +6 -3
- package/dest/fields/fields.d.ts.map +1 -1
- package/dest/fields/fields.js +43 -15
- package/dest/fields/index.d.ts +2 -0
- package/dest/fields/index.d.ts.map +1 -1
- package/dest/fields/index.js +2 -0
- package/dest/fields/point.d.ts +2 -4
- package/dest/fields/point.d.ts.map +1 -1
- package/dest/fields/point.js +3 -3
- package/dest/fs/index.d.ts +1 -0
- package/dest/fs/index.d.ts.map +1 -1
- package/dest/fs/index.js +1 -0
- 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 +1 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -2
- package/dest/iterable/filter.js +1 -1
- package/dest/iterable/map.js +1 -1
- package/dest/jest/env.js +48 -0
- package/dest/jest/setupAfterEnv.js +3 -0
- package/dest/json-rpc/client/fetch.d.ts +2 -2
- 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/safe_json_rpc_client.d.ts +9 -3
- 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.map +1 -1
- package/dest/json-rpc/client/undici.js +6 -7
- package/dest/json-rpc/convert.d.ts +2 -9
- 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 +5 -3
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_b.d.ts +5 -3
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
- package/dest/json-rpc/index.d.ts +2 -1
- 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.map +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +21 -22
- 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/test/integration.d.ts +1 -2
- package/dest/json-rpc/test/integration.d.ts.map +1 -1
- package/dest/log/console.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.d.ts +0 -1
- 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 +4 -4
- package/dest/log/index.d.ts.map +1 -1
- package/dest/log/index.js +4 -4
- package/dest/log/libp2p_logger.js +13 -2
- package/dest/log/log_fn.d.ts +1 -1
- 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 +2 -2
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +28 -2
- package/dest/message/index.d.ts.map +1 -1
- package/dest/mutex/mutex_database.d.ts.map +1 -1
- package/dest/noir/noir_package_config.d.ts +4 -4
- 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/running-promise.d.ts +1 -1
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +2 -2
- package/dest/queue/batch_queue.d.ts +1 -1
- package/dest/queue/batch_queue.js +1 -1
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
- package/dest/queue/serial_queue.d.ts +2 -2
- package/dest/queue/serial_queue.d.ts.map +1 -1
- package/dest/queue/serial_queue.js +7 -5
- package/dest/retry/index.d.ts +3 -2
- package/dest/retry/index.d.ts.map +1 -1
- package/dest/retry/index.js +2 -2
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/schemas/parse.js +1 -1
- package/dest/schemas/schemas.d.ts +9 -6
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +15 -1
- package/dest/schemas/utils.d.ts +1 -3
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.d.ts +27 -2
- 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 +10 -1
- 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 +23 -21
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +21 -27
- package/dest/serialize/serialize.d.ts +4 -5
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/string/index.d.ts +7 -2
- package/dest/string/index.d.ts.map +1 -1
- package/dest/string/index.js +27 -1
- package/dest/testing/files/index.d.ts +0 -2
- package/dest/testing/files/index.d.ts.map +1 -1
- package/dest/testing/files/index.js +2 -2
- 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 +1 -0
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -0
- package/dest/timer/date.d.ts +2 -1
- package/dest/timer/date.d.ts.map +1 -1
- package/dest/timer/date.js +5 -3
- package/dest/timer/index.d.ts +1 -1
- package/dest/timer/index.d.ts.map +1 -1
- package/dest/timer/index.js +1 -1
- package/dest/timer/timeout.d.ts +18 -5
- package/dest/timer/timeout.d.ts.map +1 -1
- package/dest/timer/timeout.js +43 -22
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
- package/dest/transport/index.d.ts +0 -1
- package/dest/transport/index.d.ts.map +1 -1
- package/dest/transport/index.js +0 -1
- package/dest/transport/interface/connector.d.ts.map +1 -1
- package/dest/transport/interface/listener.d.ts +0 -1
- package/dest/transport/interface/listener.d.ts.map +1 -1
- package/dest/transport/interface/socket.d.ts.map +1 -1
- package/dest/transport/node/node_connector.d.ts +0 -1
- package/dest/transport/node/node_connector.d.ts.map +1 -1
- package/dest/transport/node/node_connector_socket.d.ts +0 -1
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
- package/dest/transport/node/node_listener.d.ts +0 -1
- package/dest/transport/node/node_listener.d.ts.map +1 -1
- package/dest/transport/node/node_listener_socket.d.ts +0 -1
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
- package/dest/transport/transport_client.d.ts +0 -1
- package/dest/transport/transport_client.d.ts.map +1 -1
- package/dest/transport/transport_server.d.ts.map +1 -1
- package/dest/trees/hasher.d.ts +4 -6
- package/dest/trees/hasher.d.ts.map +1 -1
- package/dest/trees/index.d.ts +1 -0
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +1 -0
- package/dest/trees/indexed_merkle_tree.d.ts +0 -2
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -3
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_tree_leaf.d.ts +0 -2
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
- package/dest/trees/membership_witness.d.ts +19 -3
- 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 +0 -2
- package/dest/trees/merkle_tree.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.d.ts +11 -3
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.js +31 -1
- package/dest/trees/sibling_path.d.ts +6 -8
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.d.ts +19 -8
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.js +49 -50
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +48 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/unbalanced_merkle_tree_calculator.js +162 -0
- package/dest/trees/unbalanced_tree_store.d.ts +1 -0
- 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 +25 -2
- package/dest/types/index.d.ts.map +1 -1
- package/dest/url/index.d.ts.map +1 -1
- package/dest/url/index.js +1 -1
- package/package.json +35 -41
- package/src/array/array.ts +13 -0
- package/src/async-pool/index.ts +1 -0
- package/src/bigint/index.ts +20 -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 +142 -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 +170 -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 +9 -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 +37 -9
- package/src/fields/index.ts +2 -0
- package/src/fields/point.ts +1 -3
- package/src/fs/index.ts +1 -0
- package/src/fs/try_rm_dir.ts +15 -0
- package/src/index.ts +1 -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 +19 -1
- 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 +6 -2
- 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/hasher.ts +4 -4
- package/src/trees/index.ts +1 -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 +43 -5
- package/src/trees/unbalanced_merkle_tree.ts +50 -42
- package/src/trees/unbalanced_merkle_tree_calculator.ts +194 -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
|
@@ -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);
|