@aztec/foundation 0.76.4 → 0.77.0-testnet-ignition.21
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 -1
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +19 -26
- package/dest/array/index.js +0 -1
- package/dest/async-map/index.js +2 -4
- package/dest/async-pool/index.js +6 -9
- package/dest/bigint-buffer/index.js +6 -13
- package/dest/buffer/buffer32.d.ts +1 -1
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +53 -66
- package/dest/buffer/index.js +0 -1
- package/dest/collection/array.d.ts +1 -1
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +47 -59
- package/dest/collection/index.js +0 -1
- package/dest/collection/object.js +9 -9
- package/dest/committable/committable.js +15 -20
- package/dest/committable/index.js +0 -1
- package/dest/config/env_var.d.ts +1 -1
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/env_var.js +1 -2
- package/dest/config/index.d.ts +1 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +31 -36
- package/dest/crypto/aes128/index.d.ts +34 -0
- package/dest/crypto/aes128/index.d.ts.map +1 -0
- package/dest/crypto/aes128/index.js +49 -0
- package/dest/crypto/ecdsa/index.d.ts +39 -0
- package/dest/crypto/ecdsa/index.d.ts.map +1 -0
- package/dest/crypto/ecdsa/index.js +88 -0
- package/dest/crypto/ecdsa/signature.d.ts +71 -0
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
- package/dest/crypto/ecdsa/signature.js +92 -0
- package/dest/crypto/grumpkin/index.d.ts +47 -0
- package/dest/crypto/grumpkin/index.d.ts.map +1 -0
- package/dest/crypto/grumpkin/index.js +154 -0
- package/dest/crypto/index.d.ts +6 -0
- package/dest/crypto/index.d.ts.map +1 -1
- package/dest/crypto/index.js +6 -1
- package/dest/crypto/keccak/index.js +60 -69
- package/dest/crypto/keys/index.js +2 -3
- package/dest/crypto/pedersen/index.js +0 -1
- package/dest/crypto/pedersen/pedersen.elliptic.js +153 -146
- package/dest/crypto/pedersen/pedersen.noble.js +140 -142
- package/dest/crypto/pedersen/pedersen.wasm.js +17 -16
- package/dest/crypto/poseidon/index.js +15 -19
- package/dest/crypto/random/index.js +7 -12
- package/dest/crypto/random/randomness_singleton.js +12 -12
- package/dest/crypto/schnorr/index.d.ts +30 -0
- package/dest/crypto/schnorr/index.d.ts.map +1 -0
- package/dest/crypto/schnorr/index.js +68 -0
- package/dest/crypto/schnorr/signature.d.ts +70 -0
- package/dest/crypto/schnorr/signature.d.ts.map +1 -0
- package/dest/crypto/schnorr/signature.js +93 -0
- package/dest/crypto/secp256k1/index.d.ts +32 -0
- package/dest/crypto/secp256k1/index.d.ts.map +1 -0
- package/dest/crypto/secp256k1/index.js +116 -0
- package/dest/crypto/secp256k1-signer/index.js +0 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +2 -2
- package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/secp256k1_signer.js +8 -9
- package/dest/crypto/secp256k1-signer/utils.js +11 -16
- package/dest/crypto/serialize.d.ts +53 -0
- package/dest/crypto/serialize.d.ts.map +1 -0
- package/dest/crypto/serialize.js +68 -0
- package/dest/crypto/sha256/index.js +80 -30
- package/dest/crypto/sha512/index.js +2 -4
- package/dest/crypto/signature/index.d.ts +19 -0
- package/dest/crypto/signature/index.d.ts.map +1 -0
- package/dest/crypto/signature/index.js +3 -0
- package/dest/crypto/sync/index.js +1 -2
- package/dest/crypto/sync/pedersen/index.js +14 -13
- package/dest/crypto/sync/poseidon/index.js +10 -14
- package/dest/decorators/index.js +0 -1
- package/dest/decorators/memoize.js +1 -2
- package/dest/error/index.js +6 -19
- package/dest/eth-address/index.js +92 -113
- package/dest/eth-signature/eth_signature.js +21 -27
- package/dest/eth-signature/index.js +0 -1
- package/dest/fields/coordinate.d.ts +1 -1
- package/dest/fields/coordinate.d.ts.map +1 -1
- package/dest/fields/coordinate.js +47 -46
- package/dest/fields/fields.d.ts.map +1 -1
- package/dest/fields/fields.js +112 -126
- package/dest/fields/index.js +0 -1
- package/dest/fields/point.js +119 -129
- package/dest/fs/index.js +0 -1
- package/dest/fs/run_in_dir.d.ts +1 -1
- package/dest/fs/run_in_dir.d.ts.map +1 -1
- package/dest/fs/run_in_dir.js +16 -7
- package/dest/index.d.ts +0 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +0 -3
- package/dest/iterable/all.js +3 -4
- package/dest/iterable/filter.js +10 -11
- package/dest/iterable/index.js +0 -1
- package/dest/iterable/isAsyncIt.js +1 -3
- package/dest/iterable/map.js +10 -11
- package/dest/iterable/peek.js +14 -14
- package/dest/iterable/sort.js +4 -5
- package/dest/iterable/take.js +6 -7
- package/dest/iterable/toArray.js +1 -2
- package/dest/jest/setup.js +7 -0
- package/dest/json-rpc/client/fetch.js +25 -20
- package/dest/json-rpc/client/index.js +0 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +20 -9
- package/dest/json-rpc/client/undici.d.ts +1 -1
- package/dest/json-rpc/client/undici.d.ts.map +1 -1
- package/dest/json-rpc/client/undici.js +16 -17
- package/dest/json-rpc/convert.d.ts +1 -1
- package/dest/json-rpc/convert.d.ts.map +1 -1
- package/dest/json-rpc/convert.js +10 -20
- package/dest/json-rpc/fixtures/class_a.js +8 -5
- package/dest/json-rpc/fixtures/class_b.js +8 -5
- package/dest/json-rpc/fixtures/test_state.js +53 -40
- package/dest/json-rpc/index.js +0 -1
- package/dest/json-rpc/js_utils.js +2 -5
- package/dest/json-rpc/server/index.js +0 -1
- package/dest/json-rpc/server/safe_json_rpc_server.js +145 -101
- package/dest/json-rpc/server/telemetry.js +0 -2
- package/dest/json-rpc/test/index.js +0 -1
- package/dest/json-rpc/test/integration.d.ts +1 -1
- package/dest/json-rpc/test/integration.d.ts.map +1 -1
- package/dest/json-rpc/test/integration.js +11 -5
- package/dest/log/console.d.ts +1 -1
- package/dest/log/console.d.ts.map +1 -1
- package/dest/log/console.js +14 -16
- package/dest/log/debug.d.ts +1 -1
- package/dest/log/debug.d.ts.map +1 -1
- package/dest/log/debug.js +9 -18
- package/dest/log/gcloud-logger-config.js +17 -15
- package/dest/log/index.d.ts +1 -0
- package/dest/log/index.d.ts.map +1 -1
- package/dest/log/index.js +1 -1
- package/dest/log/libp2p_logger.d.ts +7 -0
- package/dest/log/libp2p_logger.d.ts.map +1 -0
- package/dest/log/libp2p_logger.js +55 -0
- package/dest/log/log-filters.js +14 -13
- package/dest/log/log-levels.js +10 -2
- package/dest/log/log_fn.js +1 -2
- package/dest/log/log_history.js +21 -25
- package/dest/log/pino-logger.d.ts +8 -4
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +92 -74
- package/dest/message/index.js +7 -3
- package/dest/mutex/index.d.ts +1 -1
- package/dest/mutex/index.d.ts.map +1 -1
- package/dest/mutex/index.js +34 -32
- package/dest/mutex/mutex_database.js +4 -2
- package/dest/noir/index.js +0 -1
- package/dest/noir/noir_package_config.js +13 -8
- package/dest/promise/index.js +0 -1
- package/dest/promise/running-promise.d.ts +8 -2
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +44 -31
- package/dest/promise/utils.js +3 -5
- package/dest/queue/base_memory_queue.js +51 -59
- package/dest/queue/batch_queue.js +34 -27
- package/dest/queue/bounded_serial_queue.js +41 -51
- package/dest/queue/fifo_memory_queue.d.ts +1 -1
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
- package/dest/queue/fifo_memory_queue.js +4 -8
- package/dest/queue/index.js +0 -1
- package/dest/queue/priority_memory_queue.js +3 -4
- package/dest/queue/priority_queue.js +5 -5
- package/dest/queue/semaphore.js +15 -19
- package/dest/queue/serial_queue.js +37 -47
- package/dest/retry/index.js +21 -18
- package/dest/running-promise/index.js +0 -1
- package/dest/schemas/api.d.ts +2 -2
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/schemas/api.js +2 -7
- package/dest/schemas/index.d.ts +1 -1
- package/dest/schemas/index.d.ts.map +1 -1
- package/dest/schemas/index.js +1 -2
- package/dest/schemas/parse.js +4 -8
- package/dest/schemas/schemas.d.ts +1 -16
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +28 -56
- package/dest/schemas/types.d.ts +1 -1
- package/dest/schemas/types.d.ts.map +1 -1
- package/dest/schemas/types.js +1 -2
- package/dest/schemas/utils.d.ts +1 -1
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/schemas/utils.js +18 -31
- package/dest/serialize/buffer_reader.d.ts +1 -1
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +164 -188
- package/dest/serialize/field_reader.d.ts +1 -1
- package/dest/serialize/field_reader.d.ts.map +1 -1
- package/dest/serialize/field_reader.js +70 -79
- package/dest/serialize/free_funcs.d.ts +1 -1
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +40 -37
- package/dest/serialize/index.js +0 -1
- package/dest/serialize/serialize.js +72 -83
- package/dest/serialize/type_registry.js +10 -14
- package/dest/serialize/types.js +4 -5
- package/dest/sleep/index.js +25 -29
- package/dest/string/index.js +0 -1
- package/dest/testing/files/index.js +3 -7
- package/dest/testing/index.js +0 -1
- package/dest/testing/port_allocator.js +7 -10
- package/dest/testing/snapshot_serializer.d.ts +1 -1
- package/dest/testing/snapshot_serializer.d.ts.map +1 -1
- package/dest/testing/snapshot_serializer.js +14 -9
- package/dest/testing/test_data.js +7 -8
- package/dest/timer/date.js +9 -7
- package/dest/timer/elapsed.js +10 -7
- package/dest/timer/index.js +0 -1
- package/dest/timer/timeout.js +34 -34
- package/dest/timer/timer.js +17 -21
- package/dest/transport/browser/index.js +0 -1
- package/dest/transport/browser/message_port_socket.d.ts +1 -1
- package/dest/transport/browser/message_port_socket.d.ts.map +1 -1
- package/dest/transport/browser/message_port_socket.js +26 -30
- package/dest/transport/browser/shared_worker_connector.d.ts +1 -1
- package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -1
- package/dest/transport/browser/shared_worker_connector.js +8 -10
- package/dest/transport/browser/shared_worker_listener.d.ts +1 -1
- package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -1
- package/dest/transport/browser/shared_worker_listener.js +13 -17
- package/dest/transport/browser/worker_connector.d.ts +1 -1
- package/dest/transport/browser/worker_connector.d.ts.map +1 -1
- package/dest/transport/browser/worker_connector.js +12 -12
- package/dest/transport/browser/worker_listener.d.ts +1 -1
- package/dest/transport/browser/worker_listener.d.ts.map +1 -1
- package/dest/transport/browser/worker_listener.js +13 -17
- package/dest/transport/dispatch/create_dispatch_fn.js +2 -4
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +2 -2
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_proxy.js +16 -13
- package/dest/transport/dispatch/messages.js +4 -3
- package/dest/transport/index.js +0 -1
- package/dest/transport/interface/connector.d.ts +1 -1
- package/dest/transport/interface/connector.d.ts.map +1 -1
- package/dest/transport/interface/connector.js +3 -2
- package/dest/transport/interface/listener.d.ts +1 -1
- package/dest/transport/interface/listener.d.ts.map +1 -1
- package/dest/transport/interface/listener.js +4 -2
- package/dest/transport/interface/socket.js +7 -2
- package/dest/transport/interface/transferable.js +7 -9
- package/dest/transport/node/index.js +0 -1
- package/dest/transport/node/node_connector.d.ts +2 -2
- package/dest/transport/node/node_connector.d.ts.map +1 -1
- package/dest/transport/node/node_connector.js +9 -11
- package/dest/transport/node/node_connector_socket.d.ts +2 -2
- package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
- package/dest/transport/node/node_connector_socket.js +21 -25
- 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.js +11 -15
- package/dest/transport/node/node_listener_socket.d.ts +2 -2
- package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
- package/dest/transport/node/node_listener_socket.js +23 -27
- package/dest/transport/transport_client.d.ts +1 -1
- package/dest/transport/transport_client.d.ts.map +1 -1
- package/dest/transport/transport_client.js +47 -46
- package/dest/transport/transport_server.d.ts +1 -1
- package/dest/transport/transport_server.d.ts.map +1 -1
- package/dest/transport/transport_server.js +68 -55
- package/dest/trees/hasher.d.ts +39 -0
- package/dest/trees/hasher.d.ts.map +1 -0
- package/dest/trees/hasher.js +5 -0
- package/dest/trees/index.d.ts +8 -56
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +8 -1
- package/dest/trees/indexed_merkle_tree.d.ts +13 -0
- package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree.js +27 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
- package/dest/trees/indexed_tree_leaf.d.ts +57 -0
- package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
- package/dest/trees/indexed_tree_leaf.js +5 -0
- package/dest/trees/membership_witness.d.ts +62 -0
- package/dest/trees/membership_witness.d.ts.map +1 -0
- package/dest/trees/membership_witness.js +70 -0
- package/dest/trees/merkle_tree.d.ts +18 -0
- package/dest/trees/merkle_tree.d.ts.map +1 -0
- package/dest/trees/merkle_tree.js +58 -0
- package/dest/trees/merkle_tree_calculator.d.ts +16 -0
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
- package/dest/trees/merkle_tree_calculator.js +61 -0
- package/dest/trees/sibling_path.d.ts +132 -0
- package/dest/trees/sibling_path.d.ts.map +1 -0
- package/dest/trees/sibling_path.js +144 -0
- package/dest/trees/unbalanced_merkle_tree.d.ts +1 -1
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree.js +28 -18
- package/dest/trees/unbalanced_tree_store.js +43 -29
- package/dest/types/index.js +1 -3
- package/dest/url/index.js +4 -8
- package/dest/validation/index.js +2 -5
- package/dest/wasm/empty_wasi_sdk.js +142 -160
- package/dest/wasm/index.d.ts +1 -1
- package/dest/wasm/index.d.ts.map +1 -1
- package/dest/wasm/index.js +0 -1
- package/dest/wasm/wasm_module.js +80 -90
- package/dest/worker/browser/index.js +0 -1
- package/dest/worker/browser/start_web_module.d.ts +1 -1
- package/dest/worker/browser/start_web_module.d.ts.map +1 -1
- package/dest/worker/browser/start_web_module.js +9 -5
- package/dest/worker/browser/web_data_store.d.ts +1 -1
- package/dest/worker/browser/web_data_store.d.ts.map +1 -1
- package/dest/worker/browser/web_data_store.js +12 -15
- package/dest/worker/browser/web_worker.d.ts +1 -1
- package/dest/worker/browser/web_worker.d.ts.map +1 -1
- package/dest/worker/browser/web_worker.js +6 -5
- package/dest/worker/data_store.js +3 -2
- package/dest/worker/index.d.ts +1 -1
- package/dest/worker/index.d.ts.map +1 -1
- package/dest/worker/index.js +0 -1
- package/dest/worker/node/index.js +0 -1
- package/dest/worker/node/node_data_store.d.ts +1 -1
- package/dest/worker/node/node_data_store.d.ts.map +1 -1
- package/dest/worker/node/node_data_store.js +4 -5
- package/dest/worker/node/node_worker.d.ts +1 -1
- package/dest/worker/node/node_worker.d.ts.map +1 -1
- package/dest/worker/node/node_worker.js +6 -5
- package/dest/worker/node/start_node_module.d.ts +1 -1
- package/dest/worker/node/start_node_module.d.ts.map +1 -1
- package/dest/worker/node/start_node_module.js +9 -5
- package/dest/worker/wasm_worker.d.ts +2 -2
- package/dest/worker/wasm_worker.d.ts.map +1 -1
- package/dest/worker/wasm_worker.js +3 -2
- package/dest/worker/worker_pool.d.ts +1 -1
- package/dest/worker/worker_pool.d.ts.map +1 -1
- package/dest/worker/worker_pool.js +32 -43
- package/package.json +5 -5
- package/src/array/array.ts +1 -1
- package/src/buffer/buffer32.ts +1 -1
- package/src/collection/array.ts +1 -1
- package/src/config/env_var.ts +7 -5
- package/src/config/index.ts +1 -1
- package/src/crypto/aes128/index.ts +59 -0
- package/src/crypto/ecdsa/index.ts +70 -0
- package/src/crypto/ecdsa/signature.ts +100 -0
- package/src/crypto/grumpkin/index.ts +97 -0
- package/src/crypto/index.ts +6 -0
- package/src/crypto/keys/index.ts +1 -1
- package/src/crypto/pedersen/pedersen.wasm.ts +3 -3
- package/src/crypto/poseidon/index.ts +5 -5
- package/src/crypto/schnorr/index.ts +55 -0
- package/src/crypto/schnorr/signature.ts +116 -0
- package/src/crypto/secp256k1/index.ts +57 -0
- package/src/crypto/secp256k1-signer/secp256k1_signer.ts +2 -2
- package/src/crypto/serialize.ts +85 -0
- package/src/crypto/signature/index.ts +17 -0
- package/src/crypto/sync/index.ts +1 -1
- package/src/fields/coordinate.ts +1 -1
- package/src/fields/fields.ts +2 -1
- package/src/fs/run_in_dir.ts +8 -1
- package/src/index.ts +0 -2
- package/src/json-rpc/client/undici.ts +1 -1
- package/src/json-rpc/convert.ts +1 -1
- package/src/json-rpc/server/safe_json_rpc_server.ts +1 -1
- package/src/json-rpc/test/integration.ts +1 -1
- package/src/log/console.ts +1 -1
- package/src/log/debug.ts +1 -1
- package/src/log/gcloud-logger-config.ts +1 -1
- package/src/log/index.ts +1 -0
- package/src/log/libp2p_logger.ts +67 -0
- package/src/log/pino-logger.ts +16 -16
- package/src/mutex/index.ts +1 -1
- package/src/promise/running-promise.ts +24 -5
- package/src/queue/fifo_memory_queue.ts +1 -1
- package/src/schemas/api.ts +2 -2
- package/src/schemas/index.ts +1 -1
- package/src/schemas/schemas.ts +2 -26
- package/src/schemas/types.ts +1 -1
- package/src/schemas/utils.ts +1 -1
- package/src/serialize/buffer_reader.ts +1 -1
- package/src/serialize/field_reader.ts +1 -1
- package/src/serialize/free_funcs.ts +1 -1
- package/src/testing/snapshot_serializer.ts +1 -1
- package/src/transport/browser/message_port_socket.ts +1 -1
- package/src/transport/browser/shared_worker_connector.ts +1 -1
- package/src/transport/browser/shared_worker_listener.ts +1 -1
- package/src/transport/browser/worker_connector.ts +1 -1
- package/src/transport/browser/worker_listener.ts +1 -1
- package/src/transport/dispatch/create_dispatch_proxy.ts +2 -2
- package/src/transport/interface/connector.ts +1 -1
- package/src/transport/interface/listener.ts +1 -1
- package/src/transport/node/node_connector.ts +2 -2
- package/src/transport/node/node_connector_socket.ts +2 -2
- package/src/transport/node/node_listener.ts +1 -1
- package/src/transport/node/node_listener_socket.ts +2 -2
- package/src/transport/transport_client.ts +2 -2
- package/src/transport/transport_server.ts +3 -3
- package/src/trees/hasher.ts +39 -0
- package/src/trees/index.ts +8 -57
- package/src/trees/indexed_merkle_tree.ts +36 -0
- package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
- package/src/trees/indexed_tree_leaf.ts +56 -0
- package/src/trees/membership_witness.ts +99 -0
- package/src/trees/merkle_tree.ts +72 -0
- package/src/trees/merkle_tree_calculator.ts +67 -0
- package/src/trees/sibling_path.ts +183 -0
- package/src/trees/unbalanced_merkle_tree.ts +2 -2
- package/src/wasm/index.ts +1 -1
- package/src/worker/browser/start_web_module.ts +1 -1
- package/src/worker/browser/web_data_store.ts +1 -1
- package/src/worker/browser/web_worker.ts +1 -1
- package/src/worker/index.ts +1 -1
- package/src/worker/node/node_data_store.ts +1 -1
- package/src/worker/node/node_worker.ts +1 -1
- package/src/worker/node/start_node_module.ts +1 -1
- package/src/worker/wasm_worker.ts +2 -2
- package/src/worker/worker_pool.ts +1 -1
- package/dest/abi/abi.d.ts +0 -853
- package/dest/abi/abi.d.ts.map +0 -1
- package/dest/abi/abi.js +0 -214
- package/dest/abi/buffer.d.ts +0 -18
- package/dest/abi/buffer.d.ts.map +0 -1
- package/dest/abi/buffer.js +0 -34
- package/dest/abi/decoder.d.ts +0 -58
- package/dest/abi/decoder.d.ts.map +0 -1
- package/dest/abi/decoder.js +0 -180
- package/dest/abi/encoder.d.ts +0 -16
- package/dest/abi/encoder.d.ts.map +0 -1
- package/dest/abi/encoder.js +0 -174
- package/dest/abi/event_selector.d.ts +0 -52
- package/dest/abi/event_selector.d.ts.map +0 -1
- package/dest/abi/event_selector.js +0 -76
- package/dest/abi/function_selector.d.ts +0 -65
- package/dest/abi/function_selector.d.ts.map +0 -1
- package/dest/abi/function_selector.js +0 -92
- package/dest/abi/index.d.ts +0 -10
- package/dest/abi/index.d.ts.map +0 -1
- package/dest/abi/index.js +0 -10
- package/dest/abi/note_selector.d.ts +0 -42
- package/dest/abi/note_selector.d.ts.map +0 -1
- package/dest/abi/note_selector.js +0 -63
- package/dest/abi/selector.d.ts +0 -42
- package/dest/abi/selector.d.ts.map +0 -1
- package/dest/abi/selector.js +0 -57
- package/dest/abi/u128.d.ts +0 -13
- package/dest/abi/u128.d.ts.map +0 -1
- package/dest/abi/u128.js +0 -58
- package/dest/abi/utils.d.ts +0 -44
- package/dest/abi/utils.d.ts.map +0 -1
- package/dest/abi/utils.js +0 -72
- package/dest/aztec-address/index.d.ts +0 -57
- package/dest/aztec-address/index.d.ts.map +0 -1
- package/dest/aztec-address/index.js +0 -114
- package/src/abi/abi.ts +0 -504
- package/src/abi/buffer.ts +0 -36
- package/src/abi/decoder.ts +0 -195
- package/src/abi/encoder.ts +0 -170
- package/src/abi/event_selector.ts +0 -92
- package/src/abi/function_selector.ts +0 -124
- package/src/abi/index.ts +0 -9
- package/src/abi/note_selector.ts +0 -78
- package/src/abi/selector.ts +0 -64
- package/src/abi/u128.ts +0 -71
- package/src/abi/utils.ts +0 -86
- package/src/aztec-address/index.ts +0 -146
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { assertMemberLength } from '../array/array.js';
|
|
2
|
+
import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
|
|
3
|
+
import { Fr } from '../fields/fields.js';
|
|
4
|
+
import { BufferReader, type Tuple, serializeToBuffer } from '../serialize/index.js';
|
|
5
|
+
import type { SiblingPath } from './sibling_path.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Contains information which can be used to prove that a leaf is a member of a Merkle tree.
|
|
9
|
+
*/
|
|
10
|
+
export class MembershipWitness<N extends number> {
|
|
11
|
+
constructor(
|
|
12
|
+
/**
|
|
13
|
+
* Size of the sibling path (number of fields it contains).
|
|
14
|
+
*/
|
|
15
|
+
pathSize: N,
|
|
16
|
+
/**
|
|
17
|
+
* Index of a leaf in the Merkle tree.
|
|
18
|
+
*/
|
|
19
|
+
public leafIndex: bigint,
|
|
20
|
+
/**
|
|
21
|
+
* Sibling path of the leaf in the Merkle tree.
|
|
22
|
+
*/
|
|
23
|
+
public siblingPath: Tuple<Fr, N>,
|
|
24
|
+
) {
|
|
25
|
+
assertMemberLength(this, 'siblingPath', pathSize);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
toBuffer() {
|
|
29
|
+
return serializeToBuffer(toBufferBE(this.leafIndex, 32), ...this.siblingPath);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Creates a random membership witness. Used for testing purposes.
|
|
34
|
+
* @param pathSize - Number of fields in the sibling path.
|
|
35
|
+
* @returns Random membership witness.
|
|
36
|
+
*/
|
|
37
|
+
public static random<N extends number>(pathSize: N) {
|
|
38
|
+
return new MembershipWitness<N>(
|
|
39
|
+
pathSize,
|
|
40
|
+
0n,
|
|
41
|
+
Array(pathSize)
|
|
42
|
+
.fill(0)
|
|
43
|
+
.map(() => Fr.random()) as Tuple<Fr, N>,
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Creates a membership witness whose sibling path is full of zero fields.
|
|
49
|
+
* @param pathSize - Number of fields in the sibling path.
|
|
50
|
+
* @param leafIndex - Index of the leaf in the Merkle tree.
|
|
51
|
+
* @returns Membership witness with zero sibling path.
|
|
52
|
+
*/
|
|
53
|
+
public static empty<N extends number>(pathSize: N, leafIndex = 0n): MembershipWitness<N> {
|
|
54
|
+
const arr = Array(pathSize)
|
|
55
|
+
.fill(0)
|
|
56
|
+
.map(() => Fr.ZERO) as Tuple<Fr, N>;
|
|
57
|
+
return new MembershipWitness<N>(pathSize, leafIndex, arr);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static fromBufferArray<N extends number>(leafIndex: bigint, siblingPath: Tuple<Buffer, N>): MembershipWitness<N> {
|
|
61
|
+
return new MembershipWitness<N>(
|
|
62
|
+
siblingPath.length as N,
|
|
63
|
+
leafIndex,
|
|
64
|
+
siblingPath.map(x => Fr.fromBuffer(x)) as Tuple<Fr, N>,
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
70
|
+
* @param buffer - Buffer or reader to read from.
|
|
71
|
+
* @returns The deserialized `MembershipWitness`.
|
|
72
|
+
*/
|
|
73
|
+
static fromBuffer<N extends number>(buffer: Buffer | BufferReader, size: N): MembershipWitness<N> {
|
|
74
|
+
const reader = BufferReader.asReader(buffer);
|
|
75
|
+
const leafIndex = toBigIntBE(reader.readBytes(32));
|
|
76
|
+
const siblingPath = reader.readArray(size, Fr);
|
|
77
|
+
return new MembershipWitness(size, leafIndex, siblingPath);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Creates a deserializer object for a MembershipWitness with a given size.
|
|
82
|
+
* @param size - Expected size of the witness.
|
|
83
|
+
* @returns A deserializer object.
|
|
84
|
+
*/
|
|
85
|
+
static deserializer<N extends number>(size: N): { fromBuffer(buffer: Buffer | BufferReader): MembershipWitness<N> } {
|
|
86
|
+
return {
|
|
87
|
+
fromBuffer: (buffer: Buffer | BufferReader) => {
|
|
88
|
+
const reader = BufferReader.asReader(buffer);
|
|
89
|
+
const leafIndex = toBigIntBE(reader.readBytes(32));
|
|
90
|
+
const siblingPath = reader.readArray(size, Fr);
|
|
91
|
+
return new MembershipWitness(size, leafIndex, siblingPath);
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static fromSiblingPath<N extends number>(leafIndex: bigint, siblingPath: SiblingPath<N>): MembershipWitness<N> {
|
|
97
|
+
return new MembershipWitness<N>(siblingPath.pathSize, leafIndex, siblingPath.toFields() as Tuple<Fr, N>);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** A simple immutable Merkle tree container. Use a MerkleTreeCalculator to create a new instance from a set of leaves. */
|
|
2
|
+
export class MerkleTree {
|
|
3
|
+
constructor(public readonly height: number, public readonly nodes: Buffer[]) {
|
|
4
|
+
const expectedNodeCount = 2 ** (height + 1) - 1;
|
|
5
|
+
if (nodes.length !== expectedNodeCount) {
|
|
6
|
+
throw new Error(`Invalid node count for Merkle tree: got ${nodes.length} but expected ${expectedNodeCount}`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
get root(): Buffer {
|
|
11
|
+
return this.nodes[this.nodes.length - 1];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
get leaves(): Buffer[] {
|
|
15
|
+
return this.nodes.slice(0, 2 ** this.height);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Returns a sibling path to the given element or to the element in the given index. */
|
|
19
|
+
public getSiblingPath(leafIndex: number): Buffer[];
|
|
20
|
+
public getSiblingPath(leaf: Buffer): Buffer[];
|
|
21
|
+
public getSiblingPath(leafIndexOrLeaf: number | Buffer): Buffer[] {
|
|
22
|
+
if (Buffer.isBuffer(leafIndexOrLeaf)) {
|
|
23
|
+
return this.getSiblingPath(this.getIndex(leafIndexOrLeaf));
|
|
24
|
+
}
|
|
25
|
+
const leafIndex = leafIndexOrLeaf;
|
|
26
|
+
if (leafIndex < 0 || leafIndex >= 2 ** this.height) {
|
|
27
|
+
throw new Error(`Invalid leaf index: got ${leafIndex} but leaves count is ${2 ** this.height}`);
|
|
28
|
+
}
|
|
29
|
+
const tree = this.nodes;
|
|
30
|
+
let rowSize = Math.ceil(tree.length / 2);
|
|
31
|
+
let rowOffset = 0;
|
|
32
|
+
let index = leafIndex;
|
|
33
|
+
const siblingPath: Buffer[] = [];
|
|
34
|
+
while (rowSize > 1) {
|
|
35
|
+
const isRight = index & 1;
|
|
36
|
+
siblingPath.push(tree[rowOffset + index + (isRight ? -1 : 1)]);
|
|
37
|
+
rowOffset += rowSize;
|
|
38
|
+
rowSize >>= 1;
|
|
39
|
+
index >>= 1;
|
|
40
|
+
}
|
|
41
|
+
return siblingPath;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Returns the leaf index for a given element. */
|
|
45
|
+
public getIndex(element: Buffer) {
|
|
46
|
+
return this.leaves.findIndex(leaf => leaf.equals(element));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Returns a nice string representation of the tree, useful for debugging purposes. */
|
|
50
|
+
public drawTree(elemSize = 8) {
|
|
51
|
+
const levels: string[][] = [];
|
|
52
|
+
const tree = this.nodes;
|
|
53
|
+
const maxRowSize = Math.ceil(tree.length / 2);
|
|
54
|
+
let paddingSize = 1;
|
|
55
|
+
let rowSize = maxRowSize;
|
|
56
|
+
let rowOffset = 0;
|
|
57
|
+
while (rowSize > 0) {
|
|
58
|
+
levels.push(
|
|
59
|
+
tree
|
|
60
|
+
.slice(rowOffset, rowOffset + rowSize)
|
|
61
|
+
.map(n => n.toString('hex').slice(0, elemSize) + ' '.repeat((paddingSize - 1) * (elemSize + 1))),
|
|
62
|
+
);
|
|
63
|
+
rowOffset += rowSize;
|
|
64
|
+
paddingSize <<= 1;
|
|
65
|
+
rowSize >>= 1;
|
|
66
|
+
}
|
|
67
|
+
return levels
|
|
68
|
+
.reverse()
|
|
69
|
+
.map(row => row.join(' '))
|
|
70
|
+
.join('\n');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { pedersenHash } from '@aztec/foundation/crypto';
|
|
2
|
+
|
|
3
|
+
import type { AsyncHasher } from './hasher.js';
|
|
4
|
+
import { MerkleTree } from './merkle_tree.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Merkle tree calculator.
|
|
8
|
+
*/
|
|
9
|
+
export class MerkleTreeCalculator {
|
|
10
|
+
private constructor(private height: number, private zeroHashes: Buffer[], private hasher: AsyncHasher['hash']) {
|
|
11
|
+
this.hasher = hasher;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static async create(
|
|
15
|
+
height: number,
|
|
16
|
+
zeroLeaf = Buffer.alloc(32),
|
|
17
|
+
hasher = async (left: Buffer, right: Buffer) => (await pedersenHash([left, right])).toBuffer(),
|
|
18
|
+
) {
|
|
19
|
+
const zeroHashes = [zeroLeaf];
|
|
20
|
+
for (let i = 0; i < height; i++) {
|
|
21
|
+
zeroHashes.push(await hasher(zeroHashes[i], zeroHashes[i]));
|
|
22
|
+
}
|
|
23
|
+
return new MerkleTreeCalculator(height, zeroHashes, hasher);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async computeTree(leaves: Buffer[] = []): Promise<MerkleTree> {
|
|
27
|
+
if (leaves.length === 0) {
|
|
28
|
+
leaves = new Array(2 ** this.height).fill(this.zeroHashes[0]);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
let result = leaves.slice();
|
|
32
|
+
|
|
33
|
+
for (let i = 0; i < this.height; ++i) {
|
|
34
|
+
const numLeaves = 2 ** (this.height - i);
|
|
35
|
+
const newLeaves: Buffer[] = [];
|
|
36
|
+
for (let j = 0; j < leaves.length / 2; ++j) {
|
|
37
|
+
const l = leaves[j * 2];
|
|
38
|
+
const r = leaves[j * 2 + 1] || this.zeroHashes[i];
|
|
39
|
+
newLeaves[j] = await this.hasher(l, r);
|
|
40
|
+
}
|
|
41
|
+
result = result.concat(new Array(numLeaves - leaves.length).fill(this.zeroHashes[i]), newLeaves);
|
|
42
|
+
leaves = newLeaves;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return new MerkleTree(this.height, result);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async computeTreeRoot(leaves: Buffer[] = []): Promise<Buffer> {
|
|
49
|
+
if (leaves.length === 0) {
|
|
50
|
+
return this.zeroHashes[this.zeroHashes.length - 1];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
leaves = leaves.slice();
|
|
54
|
+
|
|
55
|
+
for (let i = 0; i < this.height; ++i) {
|
|
56
|
+
let j = 0;
|
|
57
|
+
for (; j < leaves.length / 2; ++j) {
|
|
58
|
+
const l = leaves[j * 2];
|
|
59
|
+
const r = leaves[j * 2 + 1] || this.zeroHashes[i];
|
|
60
|
+
leaves[j] = await this.hasher(l, r);
|
|
61
|
+
}
|
|
62
|
+
leaves = leaves.slice(0, j);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return leaves[0];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { makeTuple } from '../array/array.js';
|
|
2
|
+
import { pedersenHash } from '../crypto/index.js';
|
|
3
|
+
import { Fr } from '../fields/index.js';
|
|
4
|
+
import { schemas } from '../schemas/index.js';
|
|
5
|
+
import {
|
|
6
|
+
type Tuple,
|
|
7
|
+
assertLength,
|
|
8
|
+
deserializeArrayFromVector,
|
|
9
|
+
serializeArrayOfBufferableToVector,
|
|
10
|
+
} from '../serialize/index.js';
|
|
11
|
+
import { bufferToHex, hexToBuffer } from '../string/index.js';
|
|
12
|
+
import type { Hasher } from './hasher.js';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Contains functionality to compute and serialize/deserialize a sibling path.
|
|
16
|
+
* E.g. Sibling path for a leaf at index 3 in a tree of depth 3 consists of:
|
|
17
|
+
* d0: [ root ]
|
|
18
|
+
* d1: [ ] [*]
|
|
19
|
+
* d2: [*] [ ] [ ] [ ]
|
|
20
|
+
* d3: [ ] [ ] [*] [ ] [ ] [ ] [ ] [ ].
|
|
21
|
+
*
|
|
22
|
+
* And the elements would be ordered as: [ leaf_at_index_2, node_at_level_2_index_0, node_at_level_1_index_1 ].
|
|
23
|
+
*/
|
|
24
|
+
export class SiblingPath<N extends number> {
|
|
25
|
+
private data: Tuple<Buffer, N>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Constructor.
|
|
29
|
+
* @param pathSize - The size of the sibling path.
|
|
30
|
+
* @param path - The sibling path data.
|
|
31
|
+
*/
|
|
32
|
+
constructor(
|
|
33
|
+
/** Size of the sibling path (number of fields it contains). */
|
|
34
|
+
public pathSize: N,
|
|
35
|
+
/** The sibling path data. */
|
|
36
|
+
path: Buffer[],
|
|
37
|
+
) {
|
|
38
|
+
this.data = assertLength(path, pathSize);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static get schema() {
|
|
42
|
+
return schemas.Buffer.transform(b => SiblingPath.fromBuffer(b));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static schemaFor<N extends number>(size: N) {
|
|
46
|
+
return schemas.Buffer.transform(b => SiblingPath.fromBuffer(b) as SiblingPath<N>).refine(
|
|
47
|
+
path => path.pathSize === size,
|
|
48
|
+
path => ({ message: `Expected sibling path size ${size} but got ${path.pathSize}` }),
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
toJSON() {
|
|
53
|
+
return this.toBuffer();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Returns sibling path hashed up from the a element.
|
|
58
|
+
* @param size - The number of elements in a given path.
|
|
59
|
+
* @param zeroElement - Value of the zero element.
|
|
60
|
+
* @param hasher - Implementation of a hasher interface.
|
|
61
|
+
* @returns A sibling path hashed up from a zero element.
|
|
62
|
+
*/
|
|
63
|
+
public static ZERO<N extends number>(size: N, zeroElement: Buffer, hasher: Hasher): SiblingPath<N> {
|
|
64
|
+
const bufs: Buffer[] = [];
|
|
65
|
+
let current = zeroElement;
|
|
66
|
+
for (let i = 0; i < size; ++i) {
|
|
67
|
+
bufs.push(current);
|
|
68
|
+
current = hasher.hash(current, current);
|
|
69
|
+
}
|
|
70
|
+
return new SiblingPath(size, bufs);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
static random<N extends number>(number: N) {
|
|
74
|
+
const data = Array.from({ length: number }, () => Fr.random().toBuffer());
|
|
75
|
+
return new SiblingPath(number, data);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Serializes this SiblingPath object to a buffer.
|
|
80
|
+
* @returns The buffer representation of this object.
|
|
81
|
+
*/
|
|
82
|
+
public toBuffer(): Buffer {
|
|
83
|
+
return serializeArrayOfBufferableToVector(this.data);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Returns the path buffer underlying the sibling path.
|
|
88
|
+
* @returns The Buffer array representation of this object.
|
|
89
|
+
*/
|
|
90
|
+
public toBufferArray(): Buffer[] {
|
|
91
|
+
return this.data;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Convert the Sibling Path object into an array of field elements.
|
|
96
|
+
* @returns The field array representation of this object.
|
|
97
|
+
*/
|
|
98
|
+
public toFields(): Fr[] {
|
|
99
|
+
return this.data.map(buf => Fr.fromBuffer(buf));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Convert Sibling Path object into a tuple of field elements.
|
|
104
|
+
* @returns A tuple representation of the sibling path.
|
|
105
|
+
*/
|
|
106
|
+
public toTuple(): Tuple<Fr, N> {
|
|
107
|
+
const array = this.toFields();
|
|
108
|
+
return makeTuple(array.length as N, i => array[i], 0);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Deserializes a SiblingPath from a buffer.
|
|
113
|
+
* @param buf - A buffer containing the buffer representation of SiblingPath.
|
|
114
|
+
* @param offset - An offset to start deserializing from.
|
|
115
|
+
* @returns A SiblingPath object.
|
|
116
|
+
*/
|
|
117
|
+
static fromBuffer<N extends number>(buf: Buffer, offset = 0): SiblingPath<N> {
|
|
118
|
+
const { elem } = SiblingPath.deserialize<N>(buf, offset);
|
|
119
|
+
return elem;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Deserializes a SiblingPath object from a slice of a part of a buffer and returns the amount of bytes advanced.
|
|
124
|
+
* @param buf - A buffer representation of the sibling path.
|
|
125
|
+
* @param offset - An offset to start deserializing from.
|
|
126
|
+
* @returns The deserialized sibling path and the number of bytes advanced.
|
|
127
|
+
*/
|
|
128
|
+
static deserialize<N extends number>(buf: Buffer, offset = 0) {
|
|
129
|
+
const deserializePath = (buf: Buffer, offset: number) => ({
|
|
130
|
+
elem: buf.slice(offset, offset + 32),
|
|
131
|
+
adv: 32,
|
|
132
|
+
});
|
|
133
|
+
const { elem, adv } = deserializeArrayFromVector(deserializePath, buf, offset);
|
|
134
|
+
const size = elem.length;
|
|
135
|
+
return { elem: new SiblingPath<N>(size as N, elem), adv };
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Serializes this SiblingPath object to a hex string representation.
|
|
140
|
+
* @returns A hex string representation of the sibling path.
|
|
141
|
+
*/
|
|
142
|
+
public toString(): string {
|
|
143
|
+
return bufferToHex(this.toBuffer());
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Deserializes a SiblingPath object from a hex string representation.
|
|
148
|
+
* @param repr - A hex string representation of the sibling path.
|
|
149
|
+
* @returns A SiblingPath object.
|
|
150
|
+
*/
|
|
151
|
+
public static fromString<N extends number>(repr: string): SiblingPath<N> {
|
|
152
|
+
return SiblingPath.fromBuffer<N>(hexToBuffer(repr));
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Generate a subtree path from the current sibling path.
|
|
157
|
+
* @param subtreeHeight - The size of the subtree that we are getting the path for.
|
|
158
|
+
* @returns A new sibling path that is the for the requested subtree.
|
|
159
|
+
*/
|
|
160
|
+
public getSubtreeSiblingPath<SubtreeHeight extends number, SubtreeSiblingPathHeight extends number>(
|
|
161
|
+
subtreeHeight: SubtreeHeight,
|
|
162
|
+
): SiblingPath<SubtreeSiblingPathHeight> {
|
|
163
|
+
// Drop the size of the subtree from the path, and return the rest.
|
|
164
|
+
const subtreeData = this.data.slice(subtreeHeight);
|
|
165
|
+
const subtreePathSize = (this.pathSize - subtreeHeight) as SubtreeSiblingPathHeight;
|
|
166
|
+
return new SiblingPath(subtreePathSize, subtreeData);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/** Computes the expected root of a merkle tree given a leaf and its sibling path. */
|
|
171
|
+
export async function computeRootFromSiblingPath(
|
|
172
|
+
leaf: Buffer,
|
|
173
|
+
siblingPath: Buffer[],
|
|
174
|
+
index: number,
|
|
175
|
+
hasher = async (left: Buffer, right: Buffer) => (await pedersenHash([left, right])).toBuffer(),
|
|
176
|
+
) {
|
|
177
|
+
let result = leaf;
|
|
178
|
+
for (const sibling of siblingPath) {
|
|
179
|
+
result = index & 1 ? await hasher(sibling, result) : await hasher(result, sibling);
|
|
180
|
+
index >>= 1;
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { padArrayEnd } from '
|
|
2
|
-
import { sha256Trunc } from '
|
|
1
|
+
import { padArrayEnd } from '../collection/array.js';
|
|
2
|
+
import { sha256Trunc } from '../crypto/sha256/index.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Computes the merkle root for an unbalanced tree.
|
package/src/wasm/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { WasmModule, IWasmModule } from './wasm_module.js';
|
|
1
|
+
export { WasmModule, type IWasmModule } from './wasm_module.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DispatchMsg, TransportServer, WorkerListener } from '../../transport/index.js';
|
|
2
|
-
import {
|
|
2
|
+
import type { WasmModule } from '../../wasm/index.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Start the transport server corresponding to this module.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type DispatchMsg, TransportClient, WorkerConnector, createDispatchProxy } from '../../transport/index.js';
|
|
2
2
|
import { WasmModule } from '../../wasm/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { WasmWorker } from '../wasm_worker.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Instantiate a web worker.
|
package/src/worker/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { WorkerPool } from './worker_pool.js';
|
|
2
|
-
export { WasmWorker } from './wasm_worker.js';
|
|
2
|
+
export type { WasmWorker } from './wasm_worker.js';
|
|
@@ -2,7 +2,7 @@ import leveldown from 'leveldown';
|
|
|
2
2
|
import levelup, { type LevelUp } from 'levelup';
|
|
3
3
|
import memdown from 'memdown';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import type { DataStore } from '../data_store.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Cache for data used by wasm module.
|
|
@@ -2,7 +2,7 @@ import { Worker } from 'worker_threads';
|
|
|
2
2
|
|
|
3
3
|
import { type DispatchMsg, NodeConnector, TransportClient, createDispatchProxy } from '../../transport/index.js';
|
|
4
4
|
import { WasmModule } from '../../wasm/wasm_module.js';
|
|
5
|
-
import {
|
|
5
|
+
import type { WasmWorker } from '../wasm_worker.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Creates a node worker.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parentPort } from 'worker_threads';
|
|
2
2
|
|
|
3
3
|
import { type DispatchMsg, NodeListener, TransportServer } from '../../transport/index.js';
|
|
4
|
-
import {
|
|
4
|
+
import type { WasmModule } from '../../wasm/wasm_module.js';
|
|
5
5
|
|
|
6
6
|
if (!parentPort) {
|
|
7
7
|
throw new Error('InvalidWorker');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { Proxify } from '../transport/index.js';
|
|
2
|
+
import type { WasmModule } from '../wasm/wasm_module.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Represents either a WASM web worker, or node.js worker.
|