@aztec/foundation 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108
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 +1 -9
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +0 -11
- package/dest/array/index.d.ts +2 -1
- package/dest/array/index.d.ts.map +1 -1
- package/dest/array/index.js +1 -0
- package/dest/array/sorted_array.d.ts +10 -0
- package/dest/array/sorted_array.d.ts.map +1 -0
- package/dest/array/sorted_array.js +106 -0
- package/dest/async-map/index.d.ts +1 -1
- package/dest/async-pool/index.d.ts +1 -1
- package/dest/bigint/index.d.ts +1 -1
- package/dest/bigint-buffer/index.d.ts +1 -1
- package/dest/branded-types/block_number.d.ts +53 -0
- package/dest/branded-types/block_number.d.ts.map +1 -0
- package/dest/branded-types/block_number.js +75 -0
- package/dest/branded-types/checkpoint_number.d.ts +46 -0
- package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
- package/dest/branded-types/checkpoint_number.js +68 -0
- 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 +6 -0
- package/dest/branded-types/index.d.ts.map +1 -0
- package/dest/branded-types/index.js +4 -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 +2 -5
- package/dest/buffer/buffer16.d.ts.map +1 -1
- package/dest/buffer/buffer16.js +4 -2
- package/dest/buffer/buffer32.d.ts +2 -5
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +4 -2
- package/dest/buffer/index.d.ts +1 -1
- package/dest/collection/array.d.ts +3 -1
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +12 -3
- package/dest/collection/index.d.ts +1 -1
- package/dest/collection/object.d.ts +5 -1
- package/dest/collection/object.d.ts.map +1 -1
- package/dest/collection/object.js +6 -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 +12 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +17 -2
- package/dest/config/network_config.d.ts +54 -0
- package/dest/config/network_config.d.ts.map +1 -0
- package/dest/config/network_config.js +11 -0
- package/dest/config/network_name.d.ts +2 -2
- package/dest/config/network_name.d.ts.map +1 -1
- package/dest/config/network_name.js +10 -2
- package/dest/config/secret_value.d.ts +1 -1
- package/dest/config/secret_value.d.ts.map +1 -1
- package/dest/config/secret_value.js +3 -1
- package/dest/crypto/aes128/index.d.ts +1 -1
- 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/index.d.ts +39 -0
- package/dest/crypto/bn254/index.d.ts.map +1 -0
- package/dest/crypto/bn254/index.js +56 -0
- package/dest/crypto/ecdsa/index.d.ts +1 -1
- package/dest/crypto/ecdsa/index.d.ts.map +1 -1
- package/dest/crypto/ecdsa/index.js +58 -48
- package/dest/crypto/ecdsa/signature.d.ts +2 -11
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
- package/dest/crypto/ecdsa/signature.js +2 -2
- package/dest/crypto/grumpkin/index.d.ts +10 -13
- package/dest/crypto/grumpkin/index.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.js +61 -55
- package/dest/crypto/keccak/index.d.ts +1 -1
- package/dest/crypto/keys/index.d.ts +2 -2
- package/dest/crypto/keys/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.js +8 -5
- package/dest/crypto/pedersen/index.d.ts +1 -1
- package/dest/crypto/pedersen/pedersen.noble.d.ts +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +24 -14
- package/dest/crypto/poseidon/index.d.ts +2 -2
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +33 -18
- package/dest/crypto/random/index.d.ts +1 -1
- package/dest/crypto/random/index.d.ts.map +1 -1
- package/dest/crypto/random/randomness_singleton.d.ts +1 -1
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.d.ts +3 -2
- package/dest/crypto/schnorr/index.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.js +30 -38
- package/dest/crypto/schnorr/signature.d.ts +2 -2
- package/dest/crypto/schnorr/signature.d.ts.map +1 -1
- package/dest/crypto/schnorr/signature.js +2 -2
- package/dest/crypto/secp256k1/index.d.ts +1 -1
- 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 +49 -3
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.js +87 -5
- package/dest/crypto/serialize.d.ts +1 -1
- package/dest/crypto/sha256/index.d.ts +2 -2
- package/dest/crypto/sha256/index.d.ts.map +1 -1
- package/dest/crypto/sha256/index.js +1 -1
- package/dest/crypto/sha512/index.d.ts +3 -3
- package/dest/crypto/sha512/index.d.ts.map +1 -1
- package/dest/crypto/sha512/index.js +1 -1
- package/dest/crypto/signature/index.d.ts +2 -2
- 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 +2 -2
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
- package/dest/crypto/sync/pedersen/index.js +18 -11
- package/dest/crypto/sync/poseidon/index.d.ts +2 -2
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/sync/poseidon/index.js +28 -13
- package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +3 -3
- package/dest/curves/bls12/field.d.ts.map +1 -0
- package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +12 -9
- package/dest/curves/bls12/index.d.ts +3 -0
- package/dest/curves/bls12/index.d.ts.map +1 -0
- package/dest/curves/bls12/index.js +2 -0
- package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +11 -20
- package/dest/curves/bls12/point.d.ts.map +1 -0
- package/dest/{fields/bls12_point.js → curves/bls12/point.js} +17 -15
- package/dest/curves/bn254/field.d.ts +180 -0
- package/dest/curves/bn254/field.d.ts.map +1 -0
- package/dest/{fields/fields.js → curves/bn254/field.js} +71 -59
- package/dest/curves/bn254/index.d.ts +3 -0
- package/dest/curves/bn254/index.d.ts.map +1 -0
- package/dest/curves/bn254/index.js +2 -0
- package/dest/curves/bn254/point.d.ts +54 -0
- package/dest/curves/bn254/point.d.ts.map +1 -0
- package/dest/curves/bn254/point.js +143 -0
- package/dest/curves/grumpkin/index.d.ts +10 -0
- package/dest/curves/grumpkin/index.d.ts.map +1 -0
- package/dest/curves/grumpkin/index.js +3 -0
- package/dest/{fields → curves/grumpkin}/point.d.ts +13 -13
- package/dest/curves/grumpkin/point.d.ts.map +1 -0
- package/dest/{fields → curves/grumpkin}/point.js +24 -7
- 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 +14 -4
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +26 -2
- package/dest/eth-signature/eth_signature.d.ts +1 -4
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +2 -4
- package/dest/eth-signature/index.d.ts +1 -1
- package/dest/fs/index.d.ts +1 -1
- package/dest/fs/run_in_dir.d.ts +1 -1
- package/dest/fs/try_rm_dir.d.ts +1 -1
- package/dest/iterable/all.d.ts +1 -1
- package/dest/iterable/filter.d.ts +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/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/iterator/filter.d.ts +3 -0
- package/dest/iterator/filter.d.ts.map +1 -0
- package/dest/iterator/filter.js +7 -0
- package/dest/iterator/index.d.ts +2 -0
- package/dest/iterator/index.d.ts.map +1 -0
- package/dest/iterator/index.js +1 -0
- package/dest/json-rpc/client/fetch.d.ts +1 -1
- package/dest/json-rpc/client/index.d.ts +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +9 -0
- package/dest/json-rpc/client/undici.d.ts +1 -1
- package/dest/json-rpc/convert.d.ts +1 -1
- package/dest/json-rpc/errors.d.ts +1 -1
- package/dest/json-rpc/errors.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_a.d.ts +3 -3
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_b.d.ts +3 -3
- 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 +1 -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 +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/test/index.d.ts +1 -1
- package/dest/json-rpc/test/integration.d.ts +1 -1
- package/dest/log/console.d.ts +1 -1
- package/dest/log/gcloud-logger-config.d.ts +1 -1
- package/dest/log/gcloud-logger-config.d.ts.map +1 -1
- package/dest/log/index.d.ts +1 -1
- package/dest/log/libp2p_logger.d.ts +1 -1
- 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 +1 -1
- 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 +0 -1
- 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/noir/index.d.ts +1 -1
- package/dest/noir/noir_package_config.d.ts +9 -9
- package/dest/number/index.d.ts +1 -1
- 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 +1 -1
- package/dest/promise/running-promise.d.ts.map +1 -1
- 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 +1 -1
- package/dest/queue/batch_queue.d.ts.map +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 +1 -1
- package/dest/queue/serial_queue.d.ts.map +1 -1
- package/dest/retry/index.d.ts +1 -1
- package/dest/running-promise/index.d.ts +1 -1
- package/dest/schemas/api.d.ts +1 -1
- package/dest/schemas/index.d.ts +1 -1
- package/dest/schemas/parse.d.ts +1 -1
- package/dest/schemas/schemas.d.ts +15 -17
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +14 -10
- package/dest/schemas/types.d.ts +31 -1
- package/dest/schemas/types.d.ts.map +1 -1
- package/dest/schemas/types.js +25 -1
- package/dest/schemas/utils.d.ts +4 -4
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/schemas/utils.js +15 -5
- package/dest/serialize/buffer_reader.d.ts +3 -1
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +3 -0
- package/dest/serialize/field_reader.d.ts +2 -2
- package/dest/serialize/field_reader.d.ts.map +1 -1
- package/dest/serialize/field_reader.js +1 -1
- package/dest/serialize/free_funcs.d.ts +2 -2
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +1 -1
- package/dest/serialize/index.d.ts +1 -1
- package/dest/serialize/serialize.d.ts +2 -2
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/serialize/serialize.js +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 +3 -1
- package/dest/sleep/index.d.ts.map +1 -1
- package/dest/sleep/index.js +4 -0
- package/dest/string/index.d.ts +5 -1
- package/dest/string/index.d.ts.map +1 -1
- package/dest/string/index.js +19 -2
- package/dest/testing/files/index.d.ts +2 -1
- package/dest/testing/files/index.d.ts.map +1 -1
- package/dest/testing/files/index.js +1 -1
- 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 +2 -1
- package/dest/timer/date.d.ts.map +1 -1
- package/dest/timer/date.js +3 -0
- package/dest/timer/elapsed.d.ts +1 -1
- package/dest/timer/index.d.ts +1 -1
- package/dest/timer/timeout.d.ts +1 -1
- package/dest/timer/timeout.d.ts.map +1 -1
- 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 -1
- package/dest/transport/interface/connector.d.ts +1 -1
- package/dest/transport/interface/listener.d.ts +1 -1
- package/dest/transport/interface/socket.d.ts +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 -1
- package/dest/transport/node/node_connector.d.ts.map +1 -1
- package/dest/transport/node/node_connector_socket.d.ts +1 -1
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
- package/dest/transport/node/node_listener.d.ts +1 -1
- package/dest/transport/node/node_listener.d.ts.map +1 -1
- package/dest/transport/node/node_listener_socket.d.ts +1 -1
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
- package/dest/transport/transport_client.d.ts +1 -1
- 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 +66 -0
- package/dest/trees/hasher.d.ts +1 -1
- package/dest/trees/index.d.ts +2 -1
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +1 -0
- package/dest/trees/indexed_merkle_tree.d.ts +1 -1
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree.js +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_tree_leaf.d.ts +1 -1
- package/dest/trees/membership_witness.d.ts +3 -24
- package/dest/trees/membership_witness.d.ts.map +1 -1
- package/dest/trees/membership_witness.js +1 -1
- package/dest/trees/merkle_tree.d.ts +1 -1
- package/dest/trees/merkle_tree.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.d.ts +2 -12
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.js +1 -31
- package/dest/trees/sibling_path.d.ts +5 -39
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/sibling_path.js +2 -2
- package/dest/trees/unbalanced_merkle_tree.d.ts +5 -4
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.js +33 -10
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +27 -23
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree_calculator.js +123 -97
- 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 +3 -1
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +3 -0
- package/dest/url/index.d.ts +1 -1
- package/dest/validation/index.d.ts +1 -1
- package/package.json +32 -8
- package/src/array/array.ts +0 -16
- package/src/array/index.ts +1 -0
- package/src/array/sorted_array.ts +133 -0
- package/src/branded-types/block_number.ts +112 -0
- package/src/branded-types/checkpoint_number.ts +100 -0
- package/src/branded-types/epoch.ts +88 -0
- package/src/branded-types/index.ts +6 -0
- package/src/branded-types/slot.ts +88 -0
- package/src/branded-types/types.ts +2 -0
- package/src/buffer/buffer16.ts +2 -2
- package/src/buffer/buffer32.ts +2 -2
- package/src/collection/array.ts +15 -3
- package/src/collection/object.ts +8 -0
- package/src/config/env_var.ts +44 -10
- package/src/config/index.ts +22 -2
- package/src/config/network_config.ts +18 -0
- package/src/config/network_name.ts +18 -3
- 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/index.ts +64 -0
- package/src/crypto/ecdsa/index.ts +40 -37
- package/src/crypto/ecdsa/signature.ts +2 -2
- package/src/crypto/grumpkin/index.ts +38 -46
- package/src/crypto/keys/index.ts +6 -6
- package/src/crypto/pedersen/pedersen.wasm.ts +23 -19
- package/src/crypto/poseidon/index.ts +33 -25
- package/src/crypto/schnorr/index.ts +22 -18
- package/src/crypto/schnorr/signature.ts +2 -2
- package/src/crypto/secp256k1/index.ts +15 -11
- package/src/crypto/secp256k1-signer/utils.ts +115 -7
- package/src/crypto/sha256/index.ts +1 -1
- package/src/crypto/sha512/index.ts +1 -1
- package/src/crypto/signature/index.ts +1 -1
- package/src/crypto/sync/index.ts +1 -1
- package/src/crypto/sync/pedersen/index.ts +17 -16
- package/src/crypto/sync/poseidon/index.ts +28 -23
- package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +6 -6
- package/src/curves/bls12/index.ts +2 -0
- package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +14 -14
- package/src/{fields/fields.ts → curves/bn254/field.ts} +69 -62
- package/src/curves/bn254/index.ts +2 -0
- package/src/curves/bn254/point.ts +170 -0
- package/src/curves/grumpkin/index.ts +11 -0
- package/src/{fields → curves/grumpkin}/point.ts +26 -7
- package/src/eth-address/index.ts +28 -3
- package/src/eth-signature/eth_signature.ts +2 -4
- package/src/iterator/filter.ts +11 -0
- package/src/iterator/index.ts +1 -0
- package/src/json-rpc/client/safe_json_rpc_client.ts +9 -0
- package/src/log/log_fn.ts +1 -1
- package/src/log/pino-logger.ts +0 -1
- package/src/profiler/index.ts +1 -0
- package/src/profiler/profiler.ts +125 -0
- package/src/schemas/schemas.ts +24 -13
- package/src/schemas/types.ts +33 -0
- package/src/schemas/utils.ts +21 -8
- package/src/serialize/buffer_reader.ts +5 -0
- package/src/serialize/field_reader.ts +1 -1
- package/src/serialize/free_funcs.ts +1 -1
- package/src/serialize/serialize.ts +1 -1
- package/src/sleep/index.ts +6 -0
- package/src/string/index.ts +24 -1
- package/src/testing/files/index.ts +1 -1
- package/src/testing/formatting.ts +3 -0
- package/src/testing/index.ts +1 -0
- package/src/timer/date.ts +4 -0
- package/src/trees/balanced_merkle_tree.ts +84 -0
- package/src/trees/index.ts +1 -0
- package/src/trees/indexed_merkle_tree.ts +1 -1
- package/src/trees/membership_witness.ts +1 -1
- package/src/trees/merkle_tree_calculator.ts +1 -34
- package/src/trees/sibling_path.ts +2 -2
- package/src/trees/unbalanced_merkle_tree.ts +55 -7
- package/src/trees/unbalanced_merkle_tree_calculator.ts +134 -93
- package/src/trees/unbalanced_tree_store.ts +5 -1
- package/src/types/index.ts +5 -0
- package/dest/crypto/index.d.ts +0 -15
- package/dest/crypto/index.d.ts.map +0 -1
- package/dest/crypto/index.js +0 -14
- package/dest/fields/bls12_fields.d.ts.map +0 -1
- package/dest/fields/bls12_point.d.ts.map +0 -1
- package/dest/fields/coordinate.d.ts +0 -66
- package/dest/fields/coordinate.d.ts.map +0 -1
- package/dest/fields/coordinate.js +0 -96
- package/dest/fields/fields.d.ts +0 -174
- package/dest/fields/fields.d.ts.map +0 -1
- package/dest/fields/index.d.ts +0 -6
- package/dest/fields/index.d.ts.map +0 -1
- package/dest/fields/index.js +0 -5
- package/dest/fields/point.d.ts.map +0 -1
- package/dest/index.d.ts +0 -29
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -29
- package/dest/json-rpc/server/telemetry.d.ts +0 -2
- package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
- package/dest/json-rpc/server/telemetry.js +0 -0
- package/src/crypto/index.ts +0 -14
- package/src/fields/coordinate.ts +0 -104
- package/src/fields/index.ts +0 -5
- package/src/index.ts +0 -29
- package/src/json-rpc/server/telemetry.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '../
|
|
1
|
+
import { Fr } from '../curves/bn254/index.js';
|
|
2
2
|
import { assertLength } from '../serialize/index.js';
|
|
3
3
|
import type { IndexedTreeLeafPreimage } from './indexed_tree_leaf.js';
|
|
4
4
|
import { MembershipWitness } from './membership_witness.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assertMemberLength } from '../array/array.js';
|
|
2
2
|
import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
|
|
3
|
-
import { Fr } from '../
|
|
3
|
+
import { Fr } from '../curves/bn254/field.js';
|
|
4
4
|
import { schemas } from '../schemas/schemas.js';
|
|
5
5
|
import { BufferReader, type Tuple, serializeToBuffer } from '../serialize/index.js';
|
|
6
6
|
import type { SiblingPath } from './sibling_path.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { pedersenHash
|
|
1
|
+
import { pedersenHash } from '@aztec/foundation/crypto/pedersen';
|
|
2
2
|
|
|
3
3
|
import type { AsyncHasher } from './hasher.js';
|
|
4
4
|
import { MerkleTree } from './merkle_tree.js';
|
|
@@ -69,37 +69,4 @@ export class MerkleTreeCalculator {
|
|
|
69
69
|
|
|
70
70
|
return leaves[0];
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Computes the Merkle root with the provided leaves **synchronously**.
|
|
75
|
-
*
|
|
76
|
-
* This method uses a synchronous hash function (defaults to `sha256Trunc`) and **does not** allow for padding.
|
|
77
|
-
* If the number of leaves is not a power of two, it throws an error.
|
|
78
|
-
* This contrasts with the above non-static async method `computeTreeRoot`, which can handle any number of leaves by
|
|
79
|
-
* padding with zero hashes.
|
|
80
|
-
*/
|
|
81
|
-
static computeTreeRootSync(leaves: Buffer[], hasher = sha256Trunc): Buffer {
|
|
82
|
-
if (leaves.length === 0) {
|
|
83
|
-
throw new Error('Cannot compute a Merkle root with no leaves');
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const height = Math.log2(leaves.length);
|
|
87
|
-
if (!Number.isInteger(height)) {
|
|
88
|
-
throw new Error('Cannot compute a Merkle root with a non-power-of-two number of leaves');
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
let nodes = leaves.slice();
|
|
92
|
-
|
|
93
|
-
for (let i = 0; i < height; ++i) {
|
|
94
|
-
let j = 0;
|
|
95
|
-
for (; j < nodes.length / 2; ++j) {
|
|
96
|
-
const l = nodes[j * 2];
|
|
97
|
-
const r = nodes[j * 2 + 1];
|
|
98
|
-
nodes[j] = hasher(Buffer.concat([l, r]));
|
|
99
|
-
}
|
|
100
|
-
nodes = nodes.slice(0, j);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return nodes[0];
|
|
104
|
-
}
|
|
105
72
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { makeTuple } from '../array/array.js';
|
|
2
|
-
import { pedersenHash } from '../crypto/index.js';
|
|
3
|
-
import { Fr } from '../
|
|
2
|
+
import { pedersenHash } from '../crypto/pedersen/index.js';
|
|
3
|
+
import { Fr } from '../curves/bn254/index.js';
|
|
4
4
|
import { schemas } from '../schemas/index.js';
|
|
5
5
|
import {
|
|
6
6
|
type Tuple,
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
computeBalancedMerkleTreeRoot,
|
|
3
|
+
computeBalancedMerkleTreeRootAsync,
|
|
4
|
+
poseidonMerkleHash,
|
|
5
|
+
shaMerkleHash,
|
|
6
|
+
} from './balanced_merkle_tree.js';
|
|
7
|
+
|
|
8
|
+
export const computeUnbalancedShaRoot = (leaves: Buffer[]) => computeUnbalancedMerkleTreeRoot(leaves, shaMerkleHash);
|
|
9
|
+
|
|
10
|
+
export const computeUnbalancedPoseidonRoot = async (leaves: Buffer[]) =>
|
|
11
|
+
await computeUnbalancedMerkleTreeRootAsync(leaves, poseidonMerkleHash);
|
|
3
12
|
|
|
4
13
|
/**
|
|
5
14
|
* Computes the Merkle root of an unbalanced tree.
|
|
@@ -22,9 +31,48 @@ import { MerkleTreeCalculator } from './merkle_tree_calculator.js';
|
|
|
22
31
|
* But if we instead combine the size-4 and size-8 subtrees first (depth 4), and then merge with the size-2 subtree
|
|
23
32
|
* (depth 1), the final tree has a depth of 5.
|
|
24
33
|
*/
|
|
25
|
-
export function computeUnbalancedMerkleTreeRoot(
|
|
34
|
+
export function computeUnbalancedMerkleTreeRoot(
|
|
35
|
+
leaves: Buffer[],
|
|
36
|
+
hasher = shaMerkleHash,
|
|
37
|
+
emptyRoot = Buffer.alloc(32),
|
|
38
|
+
): Buffer {
|
|
39
|
+
if (!leaves.length) {
|
|
40
|
+
return emptyRoot;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (leaves.length === 1) {
|
|
44
|
+
return leaves[0];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
let numRemainingLeaves = leaves.length;
|
|
48
|
+
let subtreeSize = 1;
|
|
49
|
+
let root: Buffer | undefined;
|
|
50
|
+
while (numRemainingLeaves > 1) {
|
|
51
|
+
if ((numRemainingLeaves & subtreeSize) !== 0) {
|
|
52
|
+
const subtreeLeaves = leaves.slice(numRemainingLeaves - subtreeSize, numRemainingLeaves);
|
|
53
|
+
const subtreeRoot = computeBalancedMerkleTreeRoot(subtreeLeaves, hasher);
|
|
54
|
+
if (!root) {
|
|
55
|
+
root = subtreeRoot;
|
|
56
|
+
} else {
|
|
57
|
+
root = hasher(subtreeRoot, root);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
numRemainingLeaves -= subtreeSize;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
subtreeSize *= 2;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return root!;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export async function computeUnbalancedMerkleTreeRootAsync(
|
|
70
|
+
leaves: Buffer[],
|
|
71
|
+
hasher = poseidonMerkleHash,
|
|
72
|
+
emptyRoot = Buffer.alloc(32),
|
|
73
|
+
): Promise<Buffer> {
|
|
26
74
|
if (!leaves.length) {
|
|
27
|
-
|
|
75
|
+
return emptyRoot;
|
|
28
76
|
}
|
|
29
77
|
|
|
30
78
|
if (leaves.length === 1) {
|
|
@@ -37,11 +85,11 @@ export function computeUnbalancedMerkleTreeRoot(leaves: Buffer[], hasher = sha25
|
|
|
37
85
|
while (numRemainingLeaves > 1) {
|
|
38
86
|
if ((numRemainingLeaves & subtreeSize) !== 0) {
|
|
39
87
|
const subtreeLeaves = leaves.slice(numRemainingLeaves - subtreeSize, numRemainingLeaves);
|
|
40
|
-
const subtreeRoot =
|
|
88
|
+
const subtreeRoot = await computeBalancedMerkleTreeRootAsync(subtreeLeaves, hasher);
|
|
41
89
|
if (!root) {
|
|
42
90
|
root = subtreeRoot;
|
|
43
91
|
} else {
|
|
44
|
-
root = hasher(
|
|
92
|
+
root = await hasher(subtreeRoot, root);
|
|
45
93
|
}
|
|
46
94
|
|
|
47
95
|
numRemainingLeaves -= subtreeSize;
|
|
@@ -63,7 +111,7 @@ function getMaxBalancedSubtreeDepth(numLeaves: number) {
|
|
|
63
111
|
}
|
|
64
112
|
|
|
65
113
|
/// Get the maximum depth of an unbalanced tree that can be created with the given number of leaves.
|
|
66
|
-
|
|
114
|
+
function getMaxUnbalancedTreeDepth(numLeaves: number) {
|
|
67
115
|
return Math.ceil(Math.log2(numLeaves));
|
|
68
116
|
}
|
|
69
117
|
|
|
@@ -1,37 +1,52 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import { SiblingPath } from '
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { shaMerkleHash } from './balanced_merkle_tree.js';
|
|
2
|
+
import type { Hasher } from './hasher.js';
|
|
3
|
+
import { SiblingPath } from './sibling_path.js';
|
|
4
|
+
import { type TreeNodeLocation, UnbalancedTreeStore } from './unbalanced_tree_store.js';
|
|
5
|
+
|
|
6
|
+
export function computeCompressedUnbalancedMerkleTreeRoot(
|
|
7
|
+
leaves: Buffer[],
|
|
8
|
+
valueToCompress = Buffer.alloc(32),
|
|
9
|
+
emptyRoot = Buffer.alloc(32),
|
|
10
|
+
hasher?: Hasher['hash'],
|
|
11
|
+
): Buffer {
|
|
12
|
+
const calculator = UnbalancedMerkleTreeCalculator.create(leaves, valueToCompress, emptyRoot, hasher);
|
|
13
|
+
return calculator.getRoot();
|
|
14
|
+
}
|
|
6
15
|
|
|
7
|
-
|
|
16
|
+
interface TreeNode {
|
|
17
|
+
value: Buffer;
|
|
18
|
+
leafIndex?: number;
|
|
19
|
+
}
|
|
8
20
|
|
|
9
21
|
/**
|
|
10
22
|
* An ephemeral unbalanced Merkle tree implementation.
|
|
11
23
|
* Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
|
|
12
24
|
* Remaining rightmost nodes are shifted up until they can be paired.
|
|
25
|
+
* The values that match the `valueToCompress` are skipped and the sibling of the compressed leaf are shifted up until
|
|
26
|
+
* they can be paired.
|
|
13
27
|
* If there is only one leaf, the root is the leaf.
|
|
14
28
|
*/
|
|
15
29
|
export class UnbalancedMerkleTreeCalculator {
|
|
16
|
-
|
|
17
|
-
private
|
|
18
|
-
// This map stores value -> index and depth, since we have variable depth
|
|
19
|
-
private valueCache: { [key: string]: string } = {};
|
|
20
|
-
protected size: bigint = 0n;
|
|
21
|
-
|
|
22
|
-
root: Buffer = Buffer.alloc(32);
|
|
30
|
+
private store: UnbalancedTreeStore<TreeNode>;
|
|
31
|
+
private leafLocations: TreeNodeLocation[] = [];
|
|
23
32
|
|
|
24
33
|
public constructor(
|
|
25
|
-
private
|
|
26
|
-
private
|
|
27
|
-
|
|
34
|
+
private readonly leaves: Buffer[],
|
|
35
|
+
private readonly valueToCompress: Buffer,
|
|
36
|
+
private readonly emptyRoot: Buffer,
|
|
37
|
+
private readonly hasher: Hasher['hash'],
|
|
38
|
+
) {
|
|
39
|
+
this.store = new UnbalancedTreeStore(leaves.length);
|
|
40
|
+
this.buildTree();
|
|
41
|
+
}
|
|
28
42
|
|
|
29
43
|
static create(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
44
|
+
leaves: Buffer[],
|
|
45
|
+
valueToCompress = Buffer.alloc(0),
|
|
46
|
+
emptyRoot = Buffer.alloc(32),
|
|
47
|
+
hasher = shaMerkleHash,
|
|
33
48
|
) {
|
|
34
|
-
return new UnbalancedMerkleTreeCalculator(
|
|
49
|
+
return new UnbalancedMerkleTreeCalculator(leaves, valueToCompress, emptyRoot, hasher);
|
|
35
50
|
}
|
|
36
51
|
|
|
37
52
|
/**
|
|
@@ -39,108 +54,134 @@ export class UnbalancedMerkleTreeCalculator {
|
|
|
39
54
|
* @returns The root of the tree.
|
|
40
55
|
*/
|
|
41
56
|
public getRoot(): Buffer {
|
|
42
|
-
return this.
|
|
57
|
+
return this.store.getRoot()!.value;
|
|
43
58
|
}
|
|
44
59
|
|
|
45
60
|
/**
|
|
46
|
-
* Returns a sibling path for the element
|
|
61
|
+
* Returns a sibling path for the element.
|
|
47
62
|
* @param value - The value of the element.
|
|
48
63
|
* @returns A sibling path for the element.
|
|
49
64
|
* Note: The sibling path is an array of sibling hashes, with the lowest hash (leaf hash) first, and the highest hash last.
|
|
50
65
|
*/
|
|
51
|
-
public getSiblingPath<N extends number>(value:
|
|
52
|
-
|
|
53
|
-
|
|
66
|
+
public getSiblingPath<N extends number>(value: Buffer): SiblingPath<N> {
|
|
67
|
+
const leafIndex = this.leaves.findIndex(leaf => leaf.equals(value));
|
|
68
|
+
if (leafIndex === -1) {
|
|
69
|
+
throw Error(`Leaf value ${value.toString('hex')} not found in tree.`);
|
|
54
70
|
}
|
|
55
71
|
|
|
56
|
-
|
|
57
|
-
const [depth, _index] = this.valueCache[serializeToBuffer(value).toString('hex')].split(':');
|
|
58
|
-
let level = parseInt(depth, 10);
|
|
59
|
-
let index = BigInt(_index);
|
|
60
|
-
while (level > 0) {
|
|
61
|
-
const isRight = index & 0x01n;
|
|
62
|
-
const key = indexToKeyHash(level, isRight ? index - 1n : index + 1n);
|
|
63
|
-
const sibling = this.cache[key];
|
|
64
|
-
path.push(sibling);
|
|
65
|
-
level -= 1;
|
|
66
|
-
index >>= 1n;
|
|
67
|
-
}
|
|
68
|
-
return Promise.resolve(new SiblingPath<N>(parseInt(depth, 10) as N, path));
|
|
72
|
+
return this.getSiblingPathByLeafIndex(leafIndex);
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
/**
|
|
72
|
-
*
|
|
73
|
-
* @param
|
|
74
|
-
* @returns
|
|
76
|
+
* Returns a sibling path for the leaf at the given index.
|
|
77
|
+
* @param leafIndex - The index of the leaf.
|
|
78
|
+
* @returns A sibling path for the leaf.
|
|
75
79
|
*/
|
|
76
|
-
public
|
|
77
|
-
if (this.
|
|
78
|
-
throw Error(`
|
|
80
|
+
public getSiblingPathByLeafIndex<N extends number>(leafIndex: number): SiblingPath<N> {
|
|
81
|
+
if (leafIndex >= this.leaves.length) {
|
|
82
|
+
throw Error(`Leaf index ${leafIndex} out of bounds. Tree has ${this.leaves.length} leaves.`);
|
|
79
83
|
}
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
|
|
85
|
+
const leaf = this.leaves[leafIndex];
|
|
86
|
+
if (leaf.equals(this.valueToCompress)) {
|
|
87
|
+
throw Error(`Leaf at index ${leafIndex} has been compressed.`);
|
|
82
88
|
}
|
|
83
89
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
90
|
+
const path: Buffer[] = [];
|
|
91
|
+
let location = this.leafLocations[leafIndex];
|
|
92
|
+
while (location.level > 0) {
|
|
93
|
+
const sibling = this.store.getSibling(location)!;
|
|
94
|
+
path.push(sibling.value);
|
|
95
|
+
location = this.store.getParentLocation(location);
|
|
88
96
|
}
|
|
89
97
|
|
|
90
|
-
|
|
98
|
+
return new SiblingPath<N>(path.length as N, path);
|
|
99
|
+
}
|
|
91
100
|
|
|
92
|
-
|
|
101
|
+
public getLeafLocation(leafIndex: number) {
|
|
102
|
+
return this.leafLocations[leafIndex];
|
|
93
103
|
}
|
|
94
104
|
|
|
95
105
|
/**
|
|
96
|
-
*
|
|
97
|
-
* @param leaves - The leaves
|
|
98
|
-
* @returns Resulting root of the tree.
|
|
106
|
+
* Adds leaves and nodes to the store. Updates the leafLocations.
|
|
107
|
+
* @param leaves - The leaves of the tree.
|
|
99
108
|
*/
|
|
100
|
-
private
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
for (let i =
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
109
|
+
private buildTree() {
|
|
110
|
+
this.leafLocations = this.leaves.map((value, i) => this.store.setLeaf(i, { value, leafIndex: i }));
|
|
111
|
+
|
|
112
|
+
// Start with the leaves that are not compressed.
|
|
113
|
+
let toProcess = this.leafLocations.filter((_, i) => !this.leaves[i].equals(this.valueToCompress));
|
|
114
|
+
if (!toProcess.length) {
|
|
115
|
+
// All leaves are compressed. Set empty root to the root.
|
|
116
|
+
this.store.setNode({ level: 0, index: 0 }, { value: this.emptyRoot });
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const level = toProcess[0].level;
|
|
121
|
+
for (let i = level; i > 0; i--) {
|
|
122
|
+
const toProcessNext = [];
|
|
123
|
+
for (const location of toProcess) {
|
|
124
|
+
if (location.level !== i) {
|
|
125
|
+
toProcessNext.push(location);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const parentLocation = this.store.getParentLocation(location);
|
|
130
|
+
if (this.store.getNode(parentLocation)) {
|
|
131
|
+
// Parent has been updated by its (left) sibling.
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const sibling = this.store.getSibling(location);
|
|
136
|
+
// If sibling is undefined, all its children are compressed.
|
|
137
|
+
const shouldShiftUp = !sibling || sibling.value.equals(this.valueToCompress);
|
|
138
|
+
if (shouldShiftUp) {
|
|
139
|
+
// The node becomes the parent if the sibling is a compressed leaf.
|
|
140
|
+
this.shiftNodeUp(location, parentLocation);
|
|
126
141
|
} else {
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
|
|
142
|
+
// Hash the value with the (right) sibling and update the parent node.
|
|
143
|
+
const node = this.store.getNode(location)!;
|
|
144
|
+
const parentValue = this.hasher(node.value, sibling.value);
|
|
145
|
+
this.store.setNode(parentLocation, { value: parentValue });
|
|
130
146
|
}
|
|
147
|
+
|
|
148
|
+
// Add the parent location to be processed next.
|
|
149
|
+
toProcessNext.push(parentLocation);
|
|
131
150
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
nextLayer = [];
|
|
151
|
+
|
|
152
|
+
toProcess = toProcessNext;
|
|
135
153
|
}
|
|
154
|
+
}
|
|
136
155
|
|
|
137
|
-
|
|
138
|
-
|
|
156
|
+
private shiftNodeUp(from: TreeNodeLocation, to: TreeNodeLocation) {
|
|
157
|
+
// Collect all nodes that need to shift.
|
|
158
|
+
const nodesToShift = this.collectNodesToShift(from, to);
|
|
159
|
+
// Move all nodes to their new locations.
|
|
160
|
+
for (const { node, newLocation } of nodesToShift) {
|
|
161
|
+
this.store.setNode(newLocation, node);
|
|
162
|
+
if (node.leafIndex !== undefined) {
|
|
163
|
+
this.leafLocations[node.leafIndex] = newLocation;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
139
166
|
}
|
|
140
167
|
|
|
141
|
-
private
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
168
|
+
private collectNodesToShift(from: TreeNodeLocation, to: TreeNodeLocation) {
|
|
169
|
+
const node = this.store.getNode(from);
|
|
170
|
+
if (!node) {
|
|
171
|
+
return [];
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
let result = [{ node, newLocation: to }];
|
|
175
|
+
|
|
176
|
+
// If not a leaf, collect its children.
|
|
177
|
+
if (node.leafIndex === undefined) {
|
|
178
|
+
const [leftChild, rightChild] = this.store.getChildLocations(from);
|
|
179
|
+
const [leftChildNew, rightChildNew] = this.store.getChildLocations(to);
|
|
180
|
+
result = result
|
|
181
|
+
.concat(this.collectNodesToShift(leftChild, leftChildNew))
|
|
182
|
+
.concat(this.collectNodesToShift(rightChild, rightChildNew));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return result;
|
|
145
186
|
}
|
|
146
187
|
}
|
|
@@ -68,7 +68,7 @@ export class UnbalancedTreeStore<T> {
|
|
|
68
68
|
return [left, right];
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
getLeaf(leafIndex: number) {
|
|
71
|
+
getLeaf(leafIndex: number): T | undefined {
|
|
72
72
|
const { level, indexAtLevel } = findLeafLevelAndIndex(this.#numLeaves, leafIndex);
|
|
73
73
|
const location = {
|
|
74
74
|
level,
|
|
@@ -81,6 +81,10 @@ export class UnbalancedTreeStore<T> {
|
|
|
81
81
|
return this.#nodeMapping.get(this.#getKey(location))?.value;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
getRoot(): T | undefined {
|
|
85
|
+
return this.getNode({ level: 0, index: 0 });
|
|
86
|
+
}
|
|
87
|
+
|
|
84
88
|
getParent(location: TreeNodeLocation): T | undefined {
|
|
85
89
|
const parentLocation = this.getParentLocation(location);
|
|
86
90
|
return this.getNode(parentLocation);
|
package/src/types/index.ts
CHANGED
|
@@ -19,6 +19,11 @@ export function unfreeze<T>(obj: T): Writeable<T> {
|
|
|
19
19
|
return obj as Writeable<T>;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/** Is defined type guard */
|
|
23
|
+
export function isDefined<T>(value: T | undefined): value is T {
|
|
24
|
+
return value !== undefined;
|
|
25
|
+
}
|
|
26
|
+
|
|
22
27
|
/** Resolves a record-like type. Lifted from viem. */
|
|
23
28
|
export type Prettify<T> = {
|
|
24
29
|
[K in keyof T]: T[K];
|
package/dest/crypto/index.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export * from './keccak/index.js';
|
|
2
|
-
export * from './random/index.js';
|
|
3
|
-
export * from './sha256/index.js';
|
|
4
|
-
export * from './sha512/index.js';
|
|
5
|
-
export * from './pedersen/index.js';
|
|
6
|
-
export * from './poseidon/index.js';
|
|
7
|
-
export * from './secp256k1-signer/index.js';
|
|
8
|
-
export * from './keys/index.js';
|
|
9
|
-
export * from './aes128/index.js';
|
|
10
|
-
export * from './grumpkin/index.js';
|
|
11
|
-
export * from './ecdsa/index.js';
|
|
12
|
-
export * from './secp256k1/index.js';
|
|
13
|
-
export * from './schnorr/index.js';
|
|
14
|
-
export * from './signature/index.js';
|
|
15
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
|
package/dest/crypto/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export * from './keccak/index.js';
|
|
2
|
-
export * from './random/index.js';
|
|
3
|
-
export * from './sha256/index.js';
|
|
4
|
-
export * from './sha512/index.js';
|
|
5
|
-
export * from './pedersen/index.js';
|
|
6
|
-
export * from './poseidon/index.js';
|
|
7
|
-
export * from './secp256k1-signer/index.js';
|
|
8
|
-
export * from './keys/index.js';
|
|
9
|
-
export * from './aes128/index.js';
|
|
10
|
-
export * from './grumpkin/index.js';
|
|
11
|
-
export * from './ecdsa/index.js';
|
|
12
|
-
export * from './secp256k1/index.js';
|
|
13
|
-
export * from './schnorr/index.js';
|
|
14
|
-
export * from './signature/index.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bls12_fields.d.ts","sourceRoot":"","sources":["../../src/fields/bls12_fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bls12_point.d.ts","sourceRoot":"","sources":["../../src/fields/bls12_point.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import type { Tuple } from '../serialize/types.js';
|
|
2
|
-
import { Fr } from './fields.js';
|
|
3
|
-
/**
|
|
4
|
-
* Class to wrap a single point coordinate.
|
|
5
|
-
* This class handles the complexities of representing point coordinates as 32 byte buffers as well as fields.
|
|
6
|
-
* The coordinate value is split across 2 fields to ensure that the max size of a field is not breached.
|
|
7
|
-
* This is achieved by placing the most significant byte of the lower field into the least significant byte of the higher field.
|
|
8
|
-
* Calls to 'toBuffer' or 'toBigInt' undo this change and simply return the original 32 byte value.
|
|
9
|
-
* Calls to 'toFieldsBuffer' will return a 64 bytes buffer containing the serialized fields.
|
|
10
|
-
*/
|
|
11
|
-
export declare class Coordinate {
|
|
12
|
-
/**
|
|
13
|
-
* The fields of the coordinate value. Least significant limb at index 0.
|
|
14
|
-
*/
|
|
15
|
-
fields: Tuple<Fr, 2>;
|
|
16
|
-
static ZERO: Coordinate;
|
|
17
|
-
constructor(
|
|
18
|
-
/**
|
|
19
|
-
* The fields of the coordinate value. Least significant limb at index 0.
|
|
20
|
-
*/
|
|
21
|
-
fields: Tuple<Fr, 2>);
|
|
22
|
-
/**
|
|
23
|
-
* Converts the coordinate data into a tuple of fields
|
|
24
|
-
* @returns A tuple of the coordinate fields
|
|
25
|
-
*/
|
|
26
|
-
toFields(): Tuple<Fr, 2>;
|
|
27
|
-
/**
|
|
28
|
-
* Generates a random coordinate value
|
|
29
|
-
* @returns The random coordinate
|
|
30
|
-
*/
|
|
31
|
-
static random(): Coordinate;
|
|
32
|
-
/**
|
|
33
|
-
* serializes the object to buffer of 2 fields.
|
|
34
|
-
* @returns A buffer serialization of the object.
|
|
35
|
-
*/
|
|
36
|
-
toFieldsBuffer(): Buffer;
|
|
37
|
-
/**
|
|
38
|
-
* serializes the coordinate to a single 32 byte buffer.
|
|
39
|
-
* @returns A buffer serialization of the object.
|
|
40
|
-
*/
|
|
41
|
-
toBuffer(): Buffer;
|
|
42
|
-
/**
|
|
43
|
-
* Returns true if this coordinate is equal to the one provided
|
|
44
|
-
* @param other - The coordinate against which to compare
|
|
45
|
-
* @returns True if the coordinates are the same, false otherwise
|
|
46
|
-
*/
|
|
47
|
-
equals(other: Coordinate): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Returns the coordinate's value as a bigint
|
|
50
|
-
* @returns The coordinate value as a bigint
|
|
51
|
-
*/
|
|
52
|
-
toBigInt(): bigint;
|
|
53
|
-
/**
|
|
54
|
-
* Creates a coordinate object from a 32 byte coordinate value
|
|
55
|
-
* @param coordinate - A buffer containing the 32 byte coordinate value
|
|
56
|
-
* @returns The new coordinate object
|
|
57
|
-
*/
|
|
58
|
-
static fromBuffer(coordinate: Buffer): Coordinate;
|
|
59
|
-
/**
|
|
60
|
-
* Creates a coordinate object from a field
|
|
61
|
-
* @param coordinate - The field containing the coordinate
|
|
62
|
-
* @returns The new coordinate object
|
|
63
|
-
*/
|
|
64
|
-
static fromField(coordinate: Fr): Coordinate;
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=coordinate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate.d.ts","sourceRoot":"","sources":["../../src/fields/coordinate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC;;;;;;;GAOG;AACH,qBAAa,UAAU;IAInB;;OAEG;IACI,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAN7B,MAAM,CAAC,IAAI,aAAsC;;IAG/C;;OAEG;IACI,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAG7B;;;OAGG;IACH,QAAQ,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAIxB;;;OAGG;IACH,MAAM,CAAC,MAAM,IAAI,UAAU;IAI3B;;;OAGG;IACH,cAAc,IAAI,MAAM;IAIxB;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAOlB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAIlC;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM;IAYpC;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE;CAOhC"}
|