@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
|
@@ -1,7 +1,22 @@
|
|
|
1
|
-
import { createLogger } from '../log/pino-logger.js';
|
|
1
|
+
import { type Logger, createLogger } from '../log/pino-logger.js';
|
|
2
2
|
import { InterruptibleSleep } from '../sleep/index.js';
|
|
3
3
|
import { type PromiseWithResolvers, promiseWithResolvers } from './utils.js';
|
|
4
4
|
|
|
5
|
+
const EXIT = Symbol.for('RunningPromise.EXIT');
|
|
6
|
+
|
|
7
|
+
export type ErrorHandler = (err: unknown) => typeof EXIT | void | Promise<typeof EXIT | void>;
|
|
8
|
+
|
|
9
|
+
export function makeLoggingErrorHandler(
|
|
10
|
+
logger: Logger,
|
|
11
|
+
...ignoredErrors: (new (...args: any[]) => Error)[]
|
|
12
|
+
): ErrorHandler {
|
|
13
|
+
return err => {
|
|
14
|
+
if (err instanceof Error && !ignoredErrors.some(ErrorType => err instanceof ErrorType)) {
|
|
15
|
+
logger.error('Error in running promise', err);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
5
20
|
/**
|
|
6
21
|
* RunningPromise is a utility class that helps manage the execution of an asynchronous function
|
|
7
22
|
* at a specified polling interval. It allows starting, stopping, and checking the status of the
|
|
@@ -13,11 +28,13 @@ export class RunningPromise {
|
|
|
13
28
|
private interruptibleSleep = new InterruptibleSleep();
|
|
14
29
|
private requested: PromiseWithResolvers<void> | undefined = undefined;
|
|
15
30
|
|
|
31
|
+
public static readonly EXIT: typeof EXIT = EXIT;
|
|
32
|
+
|
|
16
33
|
constructor(
|
|
17
34
|
private fn: () => void | Promise<void>,
|
|
18
35
|
private logger = createLogger('running-promise'),
|
|
19
36
|
private pollingIntervalMS = 10000,
|
|
20
|
-
private
|
|
37
|
+
private handleError: ErrorHandler = makeLoggingErrorHandler(logger),
|
|
21
38
|
) {}
|
|
22
39
|
|
|
23
40
|
/**
|
|
@@ -36,8 +53,10 @@ export class RunningPromise {
|
|
|
36
53
|
try {
|
|
37
54
|
await this.fn();
|
|
38
55
|
} catch (err) {
|
|
39
|
-
|
|
40
|
-
|
|
56
|
+
const code = await this.handleError(err);
|
|
57
|
+
if (code === RunningPromise.EXIT) {
|
|
58
|
+
this.logger.warn('Error handler has requested to exit', { err });
|
|
59
|
+
this.running = false;
|
|
41
60
|
}
|
|
42
61
|
}
|
|
43
62
|
|
|
@@ -48,7 +67,7 @@ export class RunningPromise {
|
|
|
48
67
|
}
|
|
49
68
|
|
|
50
69
|
// If no immediate run was requested, sleep for the polling interval.
|
|
51
|
-
if (this.requested === undefined) {
|
|
70
|
+
if (this.requested === undefined && this.running) {
|
|
52
71
|
await this.interruptibleSleep.sleep(this.pollingIntervalMS);
|
|
53
72
|
}
|
|
54
73
|
}
|
package/src/schemas/api.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { z } from 'zod';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import type { ZodNullableOptional } from './utils.js';
|
|
4
4
|
|
|
5
5
|
// Forces usage of ZodNullableOptional in parameters schemas so we properly accept nulls for optional parameters.
|
|
6
6
|
type ZodParameterTypeFor<T> = undefined extends T
|
package/src/schemas/index.ts
CHANGED
package/src/schemas/schemas.ts
CHANGED
|
@@ -1,35 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
|
-
import { type AbiDecoded } from '../abi/decoder.js';
|
|
4
|
-
import { EventSelector } from '../abi/event_selector.js';
|
|
5
|
-
import { FunctionSelector } from '../abi/function_selector.js';
|
|
6
|
-
import { NoteSelector } from '../abi/note_selector.js';
|
|
7
|
-
import { AztecAddress } from '../aztec-address/index.js';
|
|
8
3
|
import { Buffer32 } from '../buffer/buffer32.js';
|
|
9
4
|
import { EthAddress } from '../eth-address/index.js';
|
|
10
5
|
import { Fq, Fr } from '../fields/fields.js';
|
|
11
6
|
import { Point } from '../fields/point.js';
|
|
12
7
|
import { isHex, withoutHexPrefix } from '../string/index.js';
|
|
13
|
-
import { type ZodFor } from './types.js';
|
|
14
8
|
import { bufferSchema, hexSchema } from './utils.js';
|
|
15
9
|
|
|
16
|
-
/** Validation schemas for common types. Every schema must match its toJSON. */
|
|
17
10
|
export const schemas = {
|
|
18
11
|
/** Accepts a hex string. */
|
|
19
12
|
EthAddress: EthAddress.schema,
|
|
20
13
|
|
|
21
|
-
/** Accepts a hex string. */
|
|
22
|
-
AztecAddress: AztecAddress.schema,
|
|
23
|
-
|
|
24
|
-
/** Accepts a hex string. */
|
|
25
|
-
FunctionSelector: FunctionSelector.schema,
|
|
26
|
-
|
|
27
|
-
/** Accepts a hex string. */
|
|
28
|
-
NoteSelector: NoteSelector.schema,
|
|
29
|
-
|
|
30
|
-
/** Accepts a hex string. */
|
|
31
|
-
EventSelector: EventSelector.schema,
|
|
32
|
-
|
|
33
14
|
/** Accepts a hex string. */
|
|
34
15
|
Fr: Fr.schema,
|
|
35
16
|
|
|
@@ -79,10 +60,5 @@ export const schemas = {
|
|
|
79
60
|
HexString: hexSchema,
|
|
80
61
|
};
|
|
81
62
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
z.boolean(),
|
|
85
|
-
schemas.AztecAddress,
|
|
86
|
-
z.array(z.lazy(() => AbiDecodedSchema)),
|
|
87
|
-
z.record(z.lazy(() => AbiDecodedSchema)),
|
|
88
|
-
]);
|
|
63
|
+
// These are needed to avoid errors such as: "The inferred type of 'YourClassSchema' cannot be named without a reference to..."
|
|
64
|
+
export { EthAddress, Point, Fr, Fq };
|
package/src/schemas/types.ts
CHANGED
package/src/schemas/utils.ts
CHANGED
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
|
|
15
15
|
import { pick } from '../collection/object.js';
|
|
16
16
|
import { isHex, withoutHexPrefix } from '../string/index.js';
|
|
17
|
-
import {
|
|
17
|
+
import type { ZodFor } from './types.js';
|
|
18
18
|
|
|
19
19
|
export const hexSchema = z.string().refine(isHex, 'Not a valid hex string').transform(withoutHexPrefix);
|
|
20
20
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
|
|
3
3
|
import { type TransferDescriptor, isTransferDescriptor } from '../interface/transferable.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import type { TransportClient } from '../transport_client.js';
|
|
5
|
+
import type { DispatchMsg } from './create_dispatch_fn.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* FilterOutAttributes type filters out all non-method properties of an object, leaving only the attributes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Worker } from 'worker_threads';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import type { Connector } from '../interface/connector.js';
|
|
4
4
|
import { NodeConnectorSocket } from './node_connector_socket.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { TransferListItem, Worker } from 'worker_threads';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import type { Socket } from '../interface/socket.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* NodeConnectorSocket is a wrapper class that implements the Socket interface for messaging between
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
2
|
import { parentPort } from 'worker_threads';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import type { Listener } from '../interface/listener.js';
|
|
5
5
|
import { NodeListenerSocket } from './node_listener_socket.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { MessagePort, TransferListItem } from 'worker_threads';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import type { Socket } from '../interface/socket.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* An implementation of a TransportSocket using MessagePorts.
|
|
@@ -3,8 +3,8 @@ import { format } from 'util';
|
|
|
3
3
|
|
|
4
4
|
import { createLogger } from '../log/index.js';
|
|
5
5
|
import { type EventMessage, type ResponseMessage, isEventMessage } from './dispatch/messages.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import type { Connector } from './interface/connector.js';
|
|
7
|
+
import type { Socket } from './interface/socket.js';
|
|
8
8
|
|
|
9
9
|
const log = createLogger('foundation:transport_client');
|
|
10
10
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { RequestMessage, ResponseMessage } from './dispatch/messages.js';
|
|
2
|
+
import type { Listener } from './interface/listener.js';
|
|
3
|
+
import type { Socket } from './interface/socket.js';
|
|
4
4
|
import { isTransferDescriptor } from './interface/transferable.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines hasher interface used by Merkle trees.
|
|
3
|
+
*/
|
|
4
|
+
export interface Hasher {
|
|
5
|
+
/**
|
|
6
|
+
* Hash two arrays.
|
|
7
|
+
* @param lhs - The first array.
|
|
8
|
+
* @param rhs - The second array.
|
|
9
|
+
* @returns The new 32-byte hash.
|
|
10
|
+
*/
|
|
11
|
+
hash(lhs: Uint8Array, rhs: Uint8Array): Buffer;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Hashes an array of buffers.
|
|
15
|
+
* @param inputs - The array of buffers to hash.
|
|
16
|
+
* @returns The resulting 32-byte hash.
|
|
17
|
+
*/
|
|
18
|
+
hashInputs(inputs: Buffer[]): Buffer;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Defines an async hasher interface used by Merkle trees.
|
|
23
|
+
*/
|
|
24
|
+
export interface AsyncHasher {
|
|
25
|
+
/**
|
|
26
|
+
* Hash two arrays.
|
|
27
|
+
* @param lhs - The first array.
|
|
28
|
+
* @param rhs - The second array.
|
|
29
|
+
* @returns The new 32-byte hash.
|
|
30
|
+
*/
|
|
31
|
+
hash(lhs: Uint8Array, rhs: Uint8Array): Promise<Buffer>;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Hashes an array of buffers.
|
|
35
|
+
* @param inputs - The array of buffers to hash.
|
|
36
|
+
* @returns The resulting 32-byte hash.
|
|
37
|
+
*/
|
|
38
|
+
hashInputs(inputs: Buffer[]): Promise<Buffer>;
|
|
39
|
+
}
|
package/src/trees/index.ts
CHANGED
|
@@ -1,59 +1,10 @@
|
|
|
1
1
|
export * from './unbalanced_merkle_tree.js';
|
|
2
2
|
export * from './unbalanced_tree_store.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
getKey(): bigint;
|
|
12
|
-
/**
|
|
13
|
-
* Serializes the leaf into a buffer.
|
|
14
|
-
*/
|
|
15
|
-
toBuffer(): Buffer;
|
|
16
|
-
/**
|
|
17
|
-
* Returns true if the leaf is empty.
|
|
18
|
-
*/
|
|
19
|
-
isEmpty(): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Updates the leaf with the data of another leaf.
|
|
22
|
-
* @param another - The leaf to update to.
|
|
23
|
-
* @returns The updated leaf.
|
|
24
|
-
*/
|
|
25
|
-
updateTo(another: IndexedTreeLeaf): IndexedTreeLeaf;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Preimage of a merkle tree leaf.
|
|
30
|
-
*/
|
|
31
|
-
export interface TreeLeafPreimage {
|
|
32
|
-
/**
|
|
33
|
-
* Returns key of the leaf corresponding to this preimage.
|
|
34
|
-
*/
|
|
35
|
-
getKey(): bigint;
|
|
36
|
-
/**
|
|
37
|
-
* Returns the preimage as a leaf.
|
|
38
|
-
*/
|
|
39
|
-
asLeaf(): IndexedTreeLeaf;
|
|
40
|
-
/**
|
|
41
|
-
* Serializes the preimage into a buffer.
|
|
42
|
-
*/
|
|
43
|
-
toBuffer(): Buffer;
|
|
44
|
-
/**
|
|
45
|
-
* Serializes the preimage to an array of buffers for hashing.
|
|
46
|
-
*/
|
|
47
|
-
toHashInputs(): Buffer[];
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Preimage of an indexed merkle tree leaf.
|
|
52
|
-
*/
|
|
53
|
-
export interface IndexedTreeLeafPreimage extends TreeLeafPreimage {
|
|
54
|
-
getNextKey(): bigint;
|
|
55
|
-
/**
|
|
56
|
-
* Returns the index of the next leaf.
|
|
57
|
-
*/
|
|
58
|
-
getNextIndex(): bigint;
|
|
59
|
-
}
|
|
3
|
+
export * from './merkle_tree_calculator.js';
|
|
4
|
+
export * from './merkle_tree.js';
|
|
5
|
+
export * from './indexed_merkle_tree_calculator.js';
|
|
6
|
+
export * from './indexed_merkle_tree.js';
|
|
7
|
+
export * from './sibling_path.js';
|
|
8
|
+
export * from './membership_witness.js';
|
|
9
|
+
export * from './hasher.js';
|
|
10
|
+
export * from './indexed_tree_leaf.js';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Fr } from '../fields/index.js';
|
|
2
|
+
import { assertLength } from '../serialize/index.js';
|
|
3
|
+
import type { IndexedTreeLeafPreimage } from './indexed_tree_leaf.js';
|
|
4
|
+
import { MembershipWitness } from './membership_witness.js';
|
|
5
|
+
import { MerkleTree } from './merkle_tree.js';
|
|
6
|
+
|
|
7
|
+
/** A simple immutable indexed merkle tree container. Use a IndexedMerkleTreeCalculator to create a new instance from a set of leaves. */
|
|
8
|
+
export class IndexedMerkleTree<T extends IndexedTreeLeafPreimage, N extends number> extends MerkleTree {
|
|
9
|
+
constructor(height: N, nodes: Buffer[], public readonly leafPreimages: T[]) {
|
|
10
|
+
super(height, nodes);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public getLowLeaf(value: bigint): T {
|
|
14
|
+
let lowLeaf: T | undefined;
|
|
15
|
+
this.leafPreimages.forEach(leaf => {
|
|
16
|
+
if (leaf.getKey() < value && (leaf.getNextKey() > value || leaf.getNextKey() == BigInt(0))) {
|
|
17
|
+
lowLeaf = leaf;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
if (!lowLeaf) {
|
|
21
|
+
throw new Error(`Couldn't find low leaf for ${value}`);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return lowLeaf;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public getMembershipWitness(leafIndexOrLeaf: number | Buffer): MembershipWitness<N> {
|
|
28
|
+
const index = Buffer.isBuffer(leafIndexOrLeaf) ? this.getIndex(leafIndexOrLeaf) : leafIndexOrLeaf;
|
|
29
|
+
const siblingPath = this.getSiblingPath(index);
|
|
30
|
+
return new MembershipWitness<N>(
|
|
31
|
+
this.height as N,
|
|
32
|
+
BigInt(index),
|
|
33
|
+
assertLength<Fr, N>(siblingPath.map(Fr.fromBuffer), this.height as N),
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
|
|
2
|
+
import { numToUInt32BE } from '@aztec/foundation/serialize';
|
|
3
|
+
import type { IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
|
|
4
|
+
|
|
5
|
+
import type { AsyncHasher } from './hasher.js';
|
|
6
|
+
import { IndexedMerkleTree } from './indexed_merkle_tree.js';
|
|
7
|
+
|
|
8
|
+
interface LeafPreimageFactory<T extends IndexedTreeLeafPreimage> {
|
|
9
|
+
fromBuffer(buffer: Buffer): T;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Indexed merkle tree calculator.
|
|
14
|
+
*/
|
|
15
|
+
export class IndexedMerkleTreeCalculator<T extends IndexedTreeLeafPreimage, N extends number> {
|
|
16
|
+
private constructor(
|
|
17
|
+
private height: N,
|
|
18
|
+
private zeroHashes: Buffer[],
|
|
19
|
+
private hasher: AsyncHasher,
|
|
20
|
+
private factory: LeafPreimageFactory<T>,
|
|
21
|
+
) {}
|
|
22
|
+
|
|
23
|
+
static async create<T extends IndexedTreeLeafPreimage, N extends number>(
|
|
24
|
+
height: N,
|
|
25
|
+
hasher: AsyncHasher,
|
|
26
|
+
factory: LeafPreimageFactory<T>,
|
|
27
|
+
zeroLeaf = Buffer.alloc(32),
|
|
28
|
+
) {
|
|
29
|
+
const zeroHashes = [zeroLeaf];
|
|
30
|
+
for (let i = 0; i < height; i++) {
|
|
31
|
+
zeroHashes.push(await hasher.hash(zeroHashes[i], zeroHashes[i]));
|
|
32
|
+
}
|
|
33
|
+
return new IndexedMerkleTreeCalculator(height, zeroHashes, hasher, factory);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async computeTree(values: Buffer[]): Promise<IndexedMerkleTree<T, N>> {
|
|
37
|
+
if (!values.find(v => toBigIntBE(v) == BigInt(0))) {
|
|
38
|
+
// If we have no zero value, add one to form the zero leaf
|
|
39
|
+
values = [Buffer.alloc(32), ...values];
|
|
40
|
+
}
|
|
41
|
+
const sorted = values
|
|
42
|
+
.map((v, i) => ({ value: v, index: i }))
|
|
43
|
+
.sort((a, b) => Number(toBigIntBE(b.value) - toBigIntBE(a.value)));
|
|
44
|
+
const indexedLeaves = sorted.map((item, i) => ({
|
|
45
|
+
leaf: this.factory.fromBuffer(
|
|
46
|
+
Buffer.concat([
|
|
47
|
+
item.value,
|
|
48
|
+
...(i == 0
|
|
49
|
+
? [Buffer.alloc(32), Buffer.alloc(32)]
|
|
50
|
+
: [sorted[i - 1].value, numToUInt32BE(sorted[i - 1].index, 32)]),
|
|
51
|
+
]),
|
|
52
|
+
),
|
|
53
|
+
index: item.index,
|
|
54
|
+
}));
|
|
55
|
+
const resortedIndexedLeaves = indexedLeaves.sort((a, b) => a.index - b.index).map(item => item.leaf);
|
|
56
|
+
let leaves = await Promise.all(resortedIndexedLeaves.map(l => this.hasher.hashInputs(l.toHashInputs())));
|
|
57
|
+
|
|
58
|
+
let result = leaves.slice();
|
|
59
|
+
|
|
60
|
+
for (let i = 0; i < this.height; ++i) {
|
|
61
|
+
const numLeaves = 2 ** (this.height - i);
|
|
62
|
+
const newLeaves: Buffer[] = [];
|
|
63
|
+
for (let j = 0; j < leaves.length / 2; ++j) {
|
|
64
|
+
const l = leaves[j * 2];
|
|
65
|
+
const r = leaves[j * 2 + 1] || this.zeroHashes[i];
|
|
66
|
+
newLeaves[j] = await this.hasher.hash(l, r);
|
|
67
|
+
}
|
|
68
|
+
result = result.concat(new Array(numLeaves - leaves.length).fill(this.zeroHashes[i]), newLeaves);
|
|
69
|
+
leaves = newLeaves;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return new IndexedMerkleTree(this.height, result, resortedIndexedLeaves);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async computeTreeRoot(leaves: Buffer[] = []): Promise<Buffer> {
|
|
76
|
+
if (leaves.length === 0) {
|
|
77
|
+
return this.zeroHashes[this.zeroHashes.length - 1];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
leaves = leaves.slice();
|
|
81
|
+
|
|
82
|
+
for (let i = 0; i < this.height; ++i) {
|
|
83
|
+
let j = 0;
|
|
84
|
+
for (; j < leaves.length / 2; ++j) {
|
|
85
|
+
const l = leaves[j * 2];
|
|
86
|
+
const r = leaves[j * 2 + 1] || this.zeroHashes[i];
|
|
87
|
+
leaves[j] = await this.hasher.hash(l, r);
|
|
88
|
+
}
|
|
89
|
+
leaves = leaves.slice(0, j);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return leaves[0];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A leaf of an indexed merkle tree.
|
|
3
|
+
*/
|
|
4
|
+
export interface IndexedTreeLeaf {
|
|
5
|
+
/**
|
|
6
|
+
* Returns key of the leaf. It's used for indexing.
|
|
7
|
+
*/
|
|
8
|
+
getKey(): bigint;
|
|
9
|
+
/**
|
|
10
|
+
* Serializes the leaf into a buffer.
|
|
11
|
+
*/
|
|
12
|
+
toBuffer(): Buffer;
|
|
13
|
+
/**
|
|
14
|
+
* Returns true if the leaf is empty.
|
|
15
|
+
*/
|
|
16
|
+
isEmpty(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Updates the leaf with the data of another leaf.
|
|
19
|
+
* @param another - The leaf to update to.
|
|
20
|
+
* @returns The updated leaf.
|
|
21
|
+
*/
|
|
22
|
+
updateTo(another: IndexedTreeLeaf): IndexedTreeLeaf;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Preimage of a merkle tree leaf.
|
|
27
|
+
*/
|
|
28
|
+
export interface TreeLeafPreimage {
|
|
29
|
+
/**
|
|
30
|
+
* Returns key of the leaf corresponding to this preimage.
|
|
31
|
+
*/
|
|
32
|
+
getKey(): bigint;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the preimage as a leaf.
|
|
35
|
+
*/
|
|
36
|
+
asLeaf(): IndexedTreeLeaf;
|
|
37
|
+
/**
|
|
38
|
+
* Serializes the preimage into a buffer.
|
|
39
|
+
*/
|
|
40
|
+
toBuffer(): Buffer;
|
|
41
|
+
/**
|
|
42
|
+
* Serializes the preimage to an array of buffers for hashing.
|
|
43
|
+
*/
|
|
44
|
+
toHashInputs(): Buffer[];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Preimage of an indexed merkle tree leaf.
|
|
49
|
+
*/
|
|
50
|
+
export interface IndexedTreeLeafPreimage extends TreeLeafPreimage {
|
|
51
|
+
getNextKey(): bigint;
|
|
52
|
+
/**
|
|
53
|
+
* Returns the index of the next leaf.
|
|
54
|
+
*/
|
|
55
|
+
getNextIndex(): bigint;
|
|
56
|
+
}
|