@aztec/stdlib 0.0.1-commit.2f68f620 → 0.0.1-commit.321f6a9
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/abi/abi.d.ts +8 -1
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/buffer.d.ts +6 -2
- package/dest/abi/buffer.d.ts.map +1 -1
- package/dest/abi/buffer.js +13 -1
- package/dest/abi/contract_artifact.d.ts +1 -1
- package/dest/abi/contract_artifact.d.ts.map +1 -1
- package/dest/abi/contract_artifact.js +26 -8
- package/dest/avm/avm.js +1 -1
- package/dest/aztec-address/index.d.ts +35 -5
- package/dest/aztec-address/index.d.ts.map +1 -1
- package/dest/aztec-address/index.js +32 -8
- package/dest/block/attestation_info.d.ts +1 -1
- package/dest/block/attestation_info.d.ts.map +1 -1
- package/dest/block/attestation_info.js +7 -4
- package/dest/block/l2_block_source.d.ts +46 -23
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +15 -1
- package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts +39 -0
- package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts.map +1 -0
- package/dest/block/l2_block_stream/event_driven_l2_block_stream.js +165 -0
- package/dest/block/l2_block_stream/index.d.ts +2 -1
- package/dest/block/l2_block_stream/index.d.ts.map +1 -1
- package/dest/block/l2_block_stream/index.js +1 -0
- package/dest/block/l2_block_stream/interfaces.d.ts +81 -11
- package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
- package/dest/block/l2_block_stream/interfaces.js +25 -1
- package/dest/block/l2_block_stream/l2_block_stream.d.ts +23 -15
- package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_block_stream.js +149 -152
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +6 -12
- package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_memory_store.js +8 -32
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +17 -18
- package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
- package/dest/block/l2_block_stream/l2_tips_store_base.js +70 -58
- package/dest/block/proposal/attestations_and_signers.d.ts +19 -1
- package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
- package/dest/block/proposal/attestations_and_signers.js +47 -7
- package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
- package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
- package/dest/block/test/l2_tips_store_test_suite.js +296 -37
- package/dest/block/validate_block_result.d.ts +16 -1
- package/dest/block/validate_block_result.d.ts.map +1 -1
- package/dest/block/validate_block_result.js +18 -3
- package/dest/checkpoint/checkpoint.js +2 -2
- package/dest/checkpoint/index.d.ts +2 -1
- package/dest/checkpoint/index.d.ts.map +1 -1
- package/dest/checkpoint/index.js +1 -0
- package/dest/checkpoint/simulation_overrides.d.ts +61 -0
- package/dest/checkpoint/simulation_overrides.d.ts.map +1 -0
- package/dest/checkpoint/simulation_overrides.js +98 -0
- package/dest/checkpoint/validate.d.ts +11 -3
- package/dest/checkpoint/validate.d.ts.map +1 -1
- package/dest/checkpoint/validate.js +9 -6
- package/dest/config/index.d.ts +2 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -0
- package/dest/config/network-consensus-config.d.ts +72 -0
- package/dest/config/network-consensus-config.d.ts.map +1 -0
- package/dest/config/network-consensus-config.js +223 -0
- package/dest/config/sequencer-config.d.ts +4 -2
- package/dest/config/sequencer-config.d.ts.map +1 -1
- package/dest/config/sequencer-config.js +22 -3
- package/dest/contract/contract_address.d.ts +5 -4
- package/dest/contract/contract_address.d.ts.map +1 -1
- package/dest/contract/contract_class.d.ts +1 -1
- package/dest/contract/contract_class.d.ts.map +1 -1
- package/dest/contract/contract_class.js +3 -2
- package/dest/contract/contract_instance.d.ts +16 -2
- package/dest/contract/contract_instance.d.ts.map +1 -1
- package/dest/contract/contract_instance.js +45 -0
- package/dest/contract/interfaces/contract_data_source.d.ts +3 -5
- package/dest/contract/interfaces/contract_data_source.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance.d.ts +71 -10
- package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
- package/dest/contract/interfaces/contract_instance.js +7 -2
- package/dest/contract/interfaces/node-info.d.ts +11 -1
- package/dest/contract/interfaces/node-info.d.ts.map +1 -1
- package/dest/contract/interfaces/node-info.js +7 -1
- package/dest/contract/partial_address.d.ts +9 -3
- package/dest/contract/partial_address.d.ts.map +1 -1
- package/dest/contract/partial_address.js +8 -2
- package/dest/database-version/version_manager.d.ts +18 -4
- package/dest/database-version/version_manager.d.ts.map +1 -1
- package/dest/database-version/version_manager.js +76 -6
- package/dest/deserialization/index.d.ts +35 -3
- package/dest/deserialization/index.d.ts.map +1 -1
- package/dest/deserialization/index.js +32 -1
- package/dest/file-store/factory.d.ts +1 -1
- package/dest/file-store/factory.d.ts.map +1 -1
- package/dest/file-store/factory.js +7 -0
- package/dest/file-store/index.d.ts +2 -1
- package/dest/file-store/index.d.ts.map +1 -1
- package/dest/file-store/index.js +1 -0
- package/dest/file-store/memory.d.ts +24 -0
- package/dest/file-store/memory.d.ts.map +1 -0
- package/dest/file-store/memory.js +80 -0
- package/dest/gas/gas_settings.d.ts +7 -13
- package/dest/gas/gas_settings.d.ts.map +1 -1
- package/dest/gas/gas_settings.js +9 -16
- package/dest/gas/index.d.ts +2 -1
- package/dest/gas/index.d.ts.map +1 -1
- package/dest/gas/index.js +1 -0
- package/dest/gas/tx_gas_limits.d.ts +72 -0
- package/dest/gas/tx_gas_limits.d.ts.map +1 -0
- package/dest/gas/tx_gas_limits.js +85 -0
- package/dest/ha-signing/config.d.ts +19 -5
- package/dest/ha-signing/config.d.ts.map +1 -1
- package/dest/ha-signing/config.js +9 -3
- package/dest/ha-signing/local_config.d.ts +10 -2
- package/dest/ha-signing/local_config.d.ts.map +1 -1
- package/dest/ha-signing/local_config.js +8 -2
- package/dest/hash/hash.d.ts +1 -2
- package/dest/hash/hash.d.ts.map +1 -1
- package/dest/hash/hash.js +0 -7
- package/dest/interfaces/archiver.d.ts +12 -7
- package/dest/interfaces/archiver.d.ts.map +1 -1
- package/dest/interfaces/archiver.js +4 -2
- package/dest/interfaces/aztec-node-admin.d.ts +24 -17
- package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-admin.js +1 -1
- package/dest/interfaces/aztec-node-debug.d.ts +40 -2
- package/dest/interfaces/aztec-node-debug.d.ts.map +1 -1
- package/dest/interfaces/aztec-node-debug.js +29 -1
- package/dest/interfaces/aztec-node.d.ts +69 -28
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +56 -20
- package/dest/interfaces/block-builder.d.ts +9 -2
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/chain_tips.d.ts +8 -47
- package/dest/interfaces/chain_tips.d.ts.map +1 -1
- package/dest/interfaces/chain_tips.js +1 -6
- package/dest/interfaces/checkpoint_parameter.d.ts +3 -3
- package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -1
- package/dest/interfaces/checkpoint_parameter.js +3 -3
- package/dest/interfaces/client.d.ts +2 -1
- package/dest/interfaces/client.d.ts.map +1 -1
- package/dest/interfaces/configs.d.ts +27 -6
- package/dest/interfaces/configs.d.ts.map +1 -1
- package/dest/interfaces/configs.js +5 -1
- package/dest/interfaces/get_tx_by_hash_options.d.ts +9 -0
- package/dest/interfaces/get_tx_by_hash_options.d.ts.map +1 -0
- package/dest/interfaces/get_tx_by_hash_options.js +4 -0
- package/dest/interfaces/merkle_tree_operations.d.ts +3 -4
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/p2p.d.ts +38 -9
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +14 -2
- package/dest/interfaces/private_kernel_prover.d.ts +71 -12
- package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
- package/dest/interfaces/prover-client.d.ts +2 -3
- package/dest/interfaces/prover-client.d.ts.map +1 -1
- package/dest/interfaces/prover-node.d.ts +12 -8
- package/dest/interfaces/prover-node.d.ts.map +1 -1
- package/dest/interfaces/prover-node.js +24 -17
- package/dest/interfaces/proving-job.d.ts +87 -74
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +13 -4
- package/dest/interfaces/server.d.ts +1 -2
- package/dest/interfaces/server.d.ts.map +1 -1
- package/dest/interfaces/server.js +0 -1
- package/dest/interfaces/server_circuit_prover.d.ts +3 -3
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/interfaces/validator.d.ts +15 -4
- package/dest/interfaces/validator.d.ts.map +1 -1
- package/dest/interfaces/validator.js +3 -1
- package/dest/interfaces/world_state.d.ts +14 -1
- package/dest/interfaces/world_state.d.ts.map +1 -1
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +8 -2
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +12 -74
- package/dest/kernel/hints/read_request.js +1 -1
- package/dest/kernel/index.d.ts +6 -2
- package/dest/kernel/index.d.ts.map +1 -1
- package/dest/kernel/index.js +5 -1
- package/dest/kernel/log_hash.d.ts +1 -1
- package/dest/kernel/log_hash.d.ts.map +1 -1
- package/dest/kernel/log_hash.js +2 -2
- package/dest/kernel/note_hash.js +1 -1
- package/dest/kernel/nullifier.js +1 -1
- package/dest/kernel/private_circuit_public_inputs.d.ts +13 -3
- package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_circuit_public_inputs.js +14 -7
- package/dest/kernel/private_context_inputs.d.ts +4 -3
- package/dest/kernel/private_context_inputs.d.ts.map +1 -1
- package/dest/kernel/private_context_inputs.js +7 -3
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +7 -9
- package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_circuit_public_inputs.js +10 -7
- package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +2 -3
- package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +3 -5
- package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +2 -3
- package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +3 -5
- package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts +24 -0
- package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_init_4_circuit_private_inputs.js +37 -0
- package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts +25 -0
- package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_init_5_circuit_private_inputs.js +39 -0
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +1 -9
- package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_init_circuit_private_inputs.js +2 -6
- package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts +18 -0
- package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.js +27 -0
- package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts +19 -0
- package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.js +29 -0
- package/dest/kernel/private_kernel_prover_output.d.ts +4 -1
- package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
- package/dest/kernel/private_kernel_prover_output.js +4 -1
- package/dest/kernel/private_kernel_reset_dimensions.d.ts +7 -8
- package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
- package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts +29 -0
- package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts.map +1 -0
- package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.js +36 -0
- package/dest/kernel/private_log_data.d.ts +1 -1
- package/dest/kernel/private_log_data.d.ts.map +1 -1
- package/dest/kernel/private_log_data.js +1 -1
- package/dest/keys/derivation.d.ts +41 -6
- package/dest/keys/derivation.d.ts.map +1 -1
- package/dest/keys/derivation.js +49 -26
- package/dest/logs/app_tagging_secret.d.ts +30 -7
- package/dest/logs/app_tagging_secret.d.ts.map +1 -1
- package/dest/logs/app_tagging_secret.js +46 -39
- package/dest/logs/app_tagging_secret_kind.js +1 -1
- package/dest/logs/contract_class_log.d.ts +1 -2
- package/dest/logs/contract_class_log.d.ts.map +1 -1
- package/dest/logs/contract_class_log.js +0 -4
- package/dest/logs/message_context.d.ts +5 -15
- package/dest/logs/message_context.d.ts.map +1 -1
- package/dest/logs/message_context.js +1 -66
- package/dest/logs/pending_tagged_log.d.ts +6 -8
- package/dest/logs/pending_tagged_log.d.ts.map +1 -1
- package/dest/logs/pending_tagged_log.js +1 -31
- package/dest/logs/shared_secret_derivation.d.ts +29 -6
- package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
- package/dest/logs/shared_secret_derivation.js +44 -11
- package/dest/messaging/l1_to_l2_message.d.ts +23 -2
- package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
- package/dest/messaging/l1_to_l2_message.js +36 -11
- package/dest/noir/index.d.ts +3 -3
- package/dest/noir/index.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.d.ts +1 -1
- package/dest/p2p/attestation_utils.d.ts.map +1 -1
- package/dest/p2p/attestation_utils.js +8 -1
- package/dest/p2p/checkpoint_attestation.d.ts +10 -1
- package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
- package/dest/p2p/checkpoint_attestation.js +10 -0
- package/dest/p2p/checkpoint_proposal.d.ts +2 -1
- package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
- package/dest/p2p/consensus_payload.d.ts +2 -1
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- package/dest/p2p/signature_utils.d.ts +10 -1
- package/dest/p2p/signature_utils.d.ts.map +1 -1
- package/dest/p2p/signature_utils.js +9 -1
- package/dest/rollup/avm_proof_data.d.ts +3 -3
- package/dest/rollup/avm_proof_data.d.ts.map +1 -1
- package/dest/rollup/checkpoint_header.d.ts +8 -3
- package/dest/rollup/checkpoint_header.d.ts.map +1 -1
- package/dest/rollup/checkpoint_header.js +20 -10
- package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +1 -1
- package/dest/stats/stats.d.ts +2 -2
- package/dest/stats/stats.d.ts.map +1 -1
- package/dest/tests/factories.d.ts +1 -1
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +10 -15
- package/dest/tests/mocks.d.ts +1 -1
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +3 -2
- package/dest/timetable/budgets.d.ts +57 -0
- package/dest/timetable/budgets.d.ts.map +1 -0
- package/dest/timetable/budgets.js +56 -0
- package/dest/timetable/build_proposer_timetable.d.ts +21 -0
- package/dest/timetable/build_proposer_timetable.d.ts.map +1 -0
- package/dest/timetable/build_proposer_timetable.js +17 -0
- package/dest/timetable/consensus_timetable.d.ts +70 -0
- package/dest/timetable/consensus_timetable.d.ts.map +1 -0
- package/dest/timetable/consensus_timetable.js +89 -0
- package/dest/timetable/index.d.ts +5 -84
- package/dest/timetable/index.d.ts.map +1 -1
- package/dest/timetable/index.js +4 -209
- package/dest/timetable/proposer_timetable.d.ts +106 -0
- package/dest/timetable/proposer_timetable.d.ts.map +1 -0
- package/dest/timetable/proposer_timetable.js +132 -0
- package/dest/trees/nullifier_membership_witness.d.ts +5 -8
- package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
- package/dest/trees/nullifier_membership_witness.js +0 -9
- package/dest/trees/public_data_witness.d.ts +7 -17
- package/dest/trees/public_data_witness.d.ts.map +1 -1
- package/dest/trees/public_data_witness.js +0 -27
- package/dest/tx/execution_payload.d.ts +1 -1
- package/dest/tx/execution_payload.d.ts.map +1 -1
- package/dest/tx/execution_payload.js +1 -1
- package/dest/tx/fee_provider.d.ts +2 -2
- package/dest/tx/fee_provider.d.ts.map +1 -1
- package/dest/tx/global_variable_builder.d.ts +2 -12
- package/dest/tx/global_variable_builder.d.ts.map +1 -1
- package/dest/tx/global_variables.js +2 -2
- package/dest/tx/private_tx_constant_data.d.ts +18 -2
- package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
- package/dest/tx/private_tx_constant_data.js +13 -4
- package/dest/tx/profiling.d.ts +1 -1
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +2 -0
- package/dest/tx/simulated_tx.d.ts +10 -6
- package/dest/tx/simulated_tx.d.ts.map +1 -1
- package/dest/tx/tx.d.ts +9 -1
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +15 -0
- package/dest/tx/validator/error_texts.d.ts +2 -2
- package/dest/tx/validator/error_texts.d.ts.map +1 -1
- package/dest/tx/validator/error_texts.js +1 -1
- package/dest/world-state/genesis_data.d.ts +9 -1
- package/dest/world-state/genesis_data.d.ts.map +1 -1
- package/dest/world-state/genesis_data.js +1 -0
- package/package.json +8 -8
- package/src/abi/abi.ts +8 -0
- package/src/abi/buffer.ts +13 -1
- package/src/abi/contract_artifact.ts +33 -9
- package/src/avm/avm.ts +1 -1
- package/src/aztec-address/index.ts +36 -6
- package/src/block/attestation_info.ts +7 -2
- package/src/block/l2_block_source.ts +67 -13
- package/src/block/l2_block_stream/event_driven_l2_block_stream.ts +207 -0
- package/src/block/l2_block_stream/index.ts +1 -0
- package/src/block/l2_block_stream/interfaces.ts +96 -10
- package/src/block/l2_block_stream/l2_block_stream.ts +216 -175
- package/src/block/l2_block_stream/l2_tips_memory_store.ts +12 -41
- package/src/block/l2_block_stream/l2_tips_store_base.ts +84 -93
- package/src/block/proposal/attestations_and_signers.ts +53 -7
- package/src/block/test/l2_tips_store_test_suite.ts +270 -28
- package/src/block/validate_block_result.ts +48 -2
- package/src/checkpoint/checkpoint.ts +2 -2
- package/src/checkpoint/index.ts +1 -0
- package/src/checkpoint/simulation_overrides.ts +171 -0
- package/src/checkpoint/validate.ts +16 -6
- package/src/config/index.ts +1 -0
- package/src/config/network-consensus-config.ts +291 -0
- package/src/config/sequencer-config.ts +36 -5
- package/src/contract/contract_address.ts +4 -3
- package/src/contract/contract_class.ts +3 -2
- package/src/contract/contract_instance.ts +62 -1
- package/src/contract/interfaces/contract_data_source.ts +2 -4
- package/src/contract/interfaces/contract_instance.ts +26 -8
- package/src/contract/interfaces/node-info.ts +11 -0
- package/src/contract/partial_address.ts +8 -2
- package/src/database-version/version_manager.ts +96 -6
- package/src/deserialization/index.ts +35 -2
- package/src/file-store/factory.ts +7 -0
- package/src/file-store/index.ts +1 -0
- package/src/file-store/memory.ts +94 -0
- package/src/gas/README.md +199 -35
- package/src/gas/gas_settings.ts +11 -21
- package/src/gas/index.ts +1 -0
- package/src/gas/tx_gas_limits.ts +123 -0
- package/src/ha-signing/config.ts +23 -5
- package/src/ha-signing/local_config.ts +20 -1
- package/src/hash/hash.ts +0 -8
- package/src/interfaces/archiver.ts +14 -7
- package/src/interfaces/aztec-node-admin.ts +1 -1
- package/src/interfaces/aztec-node-debug.ts +54 -2
- package/src/interfaces/aztec-node.ts +121 -43
- package/src/interfaces/block-builder.ts +8 -1
- package/src/interfaces/chain_tips.ts +8 -16
- package/src/interfaces/checkpoint_parameter.ts +3 -3
- package/src/interfaces/client.ts +1 -0
- package/src/interfaces/configs.ts +27 -6
- package/src/interfaces/get_tx_by_hash_options.ts +14 -0
- package/src/interfaces/merkle_tree_operations.ts +2 -3
- package/src/interfaces/p2p.ts +29 -9
- package/src/interfaces/private_kernel_prover.ts +104 -13
- package/src/interfaces/prover-client.ts +1 -3
- package/src/interfaces/prover-node.ts +32 -17
- package/src/interfaces/proving-job.ts +15 -3
- package/src/interfaces/server.ts +0 -1
- package/src/interfaces/server_circuit_prover.ts +2 -2
- package/src/interfaces/validator.ts +11 -0
- package/src/interfaces/world_state.ts +14 -0
- package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +22 -112
- package/src/kernel/hints/read_request.ts +1 -1
- package/src/kernel/index.ts +5 -1
- package/src/kernel/log_hash.ts +5 -2
- package/src/kernel/note_hash.ts +1 -1
- package/src/kernel/nullifier.ts +1 -1
- package/src/kernel/private_circuit_public_inputs.ts +12 -1
- package/src/kernel/private_context_inputs.ts +10 -3
- package/src/kernel/private_kernel_circuit_public_inputs.ts +9 -7
- package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +0 -3
- package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +0 -3
- package/src/kernel/private_kernel_init_4_circuit_private_inputs.ts +52 -0
- package/src/kernel/private_kernel_init_5_circuit_private_inputs.ts +55 -0
- package/src/kernel/private_kernel_init_circuit_private_inputs.ts +0 -6
- package/src/kernel/private_kernel_inner_4_circuit_private_inputs.ts +39 -0
- package/src/kernel/private_kernel_inner_5_circuit_private_inputs.ts +42 -0
- package/src/kernel/private_kernel_prover_output.ts +4 -0
- package/src/kernel/private_kernel_reset_dimensions.ts +15 -5
- package/src/kernel/private_kernel_reset_tail_circuit_private_inputs.ts +69 -0
- package/src/kernel/private_log_data.ts +4 -1
- package/src/keys/derivation.ts +69 -24
- package/src/logs/app_tagging_secret.ts +62 -39
- package/src/logs/app_tagging_secret_kind.ts +1 -1
- package/src/logs/contract_class_log.ts +0 -9
- package/src/logs/message_context.ts +7 -65
- package/src/logs/pending_tagged_log.ts +6 -33
- package/src/logs/shared_secret_derivation.ts +47 -14
- package/src/messaging/l1_to_l2_message.ts +51 -13
- package/src/noir/index.ts +2 -1
- package/src/p2p/attestation_utils.ts +8 -1
- package/src/p2p/checkpoint_attestation.ts +12 -0
- package/src/p2p/signature_utils.ts +9 -0
- package/src/rollup/avm_proof_data.ts +2 -2
- package/src/rollup/checkpoint_header.ts +16 -2
- package/src/stats/stats.ts +6 -2
- package/src/tests/factories.ts +13 -13
- package/src/tests/mocks.ts +7 -2
- package/src/timetable/README.md +609 -0
- package/src/timetable/budgets.ts +87 -0
- package/src/timetable/build_proposer_timetable.ts +42 -0
- package/src/timetable/consensus_timetable.ts +126 -0
- package/src/timetable/index.ts +4 -304
- package/src/timetable/proposer_timetable.ts +190 -0
- package/src/timetable/timetable-example.svg +108 -0
- package/src/trees/nullifier_membership_witness.ts +0 -11
- package/src/trees/public_data_witness.ts +0 -31
- package/src/tx/execution_payload.ts +2 -1
- package/src/tx/fee_provider.ts +1 -1
- package/src/tx/global_variable_builder.ts +1 -17
- package/src/tx/global_variables.ts +2 -2
- package/src/tx/private_tx_constant_data.ts +25 -2
- package/src/tx/profiling.ts +2 -0
- package/src/tx/tx.ts +17 -0
- package/src/tx/validator/error_texts.ts +2 -1
- package/src/world-state/genesis_data.ts +10 -0
- package/dest/interfaces/epoch-prover.d.ts +0 -57
- package/dest/interfaces/epoch-prover.d.ts.map +0 -1
- package/dest/interfaces/epoch-prover.js +0 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +0 -47
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +0 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +0 -38
- package/src/interfaces/epoch-prover.ts +0 -72
- package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +0 -58
package/dest/keys/derivation.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DomainSeparator } from '@aztec/constants';
|
|
2
2
|
import { Grumpkin } from '@aztec/foundation/crypto/grumpkin';
|
|
3
3
|
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
4
4
|
import { sha512ToGrumpkinScalar } from '@aztec/foundation/crypto/sha512';
|
|
5
5
|
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
|
|
7
7
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
8
|
-
import { hashPublicKey } from './public_key.js';
|
|
8
|
+
import { PublicKey, hashPublicKey } from './public_key.js';
|
|
9
9
|
import { PublicKeys } from './public_keys.js';
|
|
10
10
|
import { getKeyGenerator } from './utils.js';
|
|
11
|
-
export function computeAppNullifierHidingKey(
|
|
12
|
-
return computeAppSecretKey(
|
|
11
|
+
export function computeAppNullifierHidingKey(masterNullifierHidingSecretKey, app) {
|
|
12
|
+
return computeAppSecretKey(masterNullifierHidingSecretKey, app, 'n'); // 'n' is the key prefix for nullifier hiding key
|
|
13
13
|
}
|
|
14
14
|
export function computeAppSecretKey(skM, app, keyPrefix) {
|
|
15
15
|
const generator = getKeyGenerator(keyPrefix);
|
|
@@ -25,7 +25,7 @@ export async function computeOvskApp(ovsk, app) {
|
|
|
25
25
|
// P = s * G will not be uniform because 2 * (q - r) / q is small.
|
|
26
26
|
return GrumpkinScalar.fromBuffer(ovskAppFr.toBuffer());
|
|
27
27
|
}
|
|
28
|
-
export function
|
|
28
|
+
export function deriveMasterNullifierHidingSecretKey(secretKey) {
|
|
29
29
|
return sha512ToGrumpkinScalar([
|
|
30
30
|
secretKey,
|
|
31
31
|
DomainSeparator.NHK_M
|
|
@@ -43,11 +43,16 @@ export function deriveMasterOutgoingViewingSecretKey(secretKey) {
|
|
|
43
43
|
DomainSeparator.OVSK_M
|
|
44
44
|
]);
|
|
45
45
|
}
|
|
46
|
-
export function
|
|
47
|
-
// TODO(#5837): come up with a standard signing key derivation scheme instead of using ivsk_m as signing keys here
|
|
46
|
+
export function deriveMasterMessageSigningSecretKey(secretKey) {
|
|
48
47
|
return sha512ToGrumpkinScalar([
|
|
49
48
|
secretKey,
|
|
50
|
-
DomainSeparator.
|
|
49
|
+
DomainSeparator.MSSK_M
|
|
50
|
+
]);
|
|
51
|
+
}
|
|
52
|
+
export function deriveMasterFallbackSecretKey(secretKey) {
|
|
53
|
+
return sha512ToGrumpkinScalar([
|
|
54
|
+
secretKey,
|
|
55
|
+
DomainSeparator.FBSK_M
|
|
51
56
|
]);
|
|
52
57
|
}
|
|
53
58
|
export function computePreaddress(publicKeysHash, partialAddress) {
|
|
@@ -85,43 +90,61 @@ export async function computeAddressSecret(preaddress, ivsk) {
|
|
|
85
90
|
return addressSecretCandidate;
|
|
86
91
|
}
|
|
87
92
|
export function derivePublicKeyFromSecretKey(secretKey) {
|
|
93
|
+
// 0 * G is the point at infinity. The WASM encodes infinity with an out-of-field x coordinate that Point cannot
|
|
94
|
+
// deserialize, so return the point directly instead of calling into it.
|
|
95
|
+
if (secretKey.isZero()) {
|
|
96
|
+
return Promise.resolve(PublicKey.INFINITY);
|
|
97
|
+
}
|
|
88
98
|
return Grumpkin.mul(Grumpkin.generator, secretKey);
|
|
89
99
|
}
|
|
90
100
|
/**
|
|
91
101
|
* Computes secret and public keys and public keys hash from a secret key.
|
|
92
102
|
* @param secretKey - The secret key to derive keys from.
|
|
93
103
|
* @returns The derived keys.
|
|
94
|
-
*/ export
|
|
104
|
+
*/ export function deriveKeys(secretKey) {
|
|
95
105
|
// First we derive master secret/hiding keys - we use sha512 here because this derivation will never take place
|
|
96
106
|
// in a circuit
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
107
|
+
return deriveKeysFromMasterSecretKeys({
|
|
108
|
+
masterNullifierHidingSecretKey: deriveMasterNullifierHidingSecretKey(secretKey),
|
|
109
|
+
masterIncomingViewingSecretKey: deriveMasterIncomingViewingSecretKey(secretKey),
|
|
110
|
+
masterOutgoingViewingSecretKey: deriveMasterOutgoingViewingSecretKey(secretKey),
|
|
111
|
+
masterTaggingSecretKey: sha512ToGrumpkinScalar([
|
|
112
|
+
secretKey,
|
|
113
|
+
DomainSeparator.TSK_M
|
|
114
|
+
]),
|
|
115
|
+
masterMessageSigningSecretKey: deriveMasterMessageSigningSecretKey(secretKey),
|
|
116
|
+
masterFallbackSecretKey: deriveMasterFallbackSecretKey(secretKey)
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Derives the master public keys and the {@link PublicKeys} struct from a set of master secret keys.
|
|
121
|
+
* @param secretKeys - The master secret keys to derive public keys from.
|
|
122
|
+
* @returns The provided secret keys alongside the derived public keys.
|
|
123
|
+
*/ export async function deriveKeysFromMasterSecretKeys(secretKeys) {
|
|
124
|
+
const { masterNullifierHidingSecretKey, masterIncomingViewingSecretKey, masterOutgoingViewingSecretKey, masterTaggingSecretKey, masterMessageSigningSecretKey, masterFallbackSecretKey } = secretKeys;
|
|
125
|
+
const masterNullifierHidingPublicKey = await derivePublicKeyFromSecretKey(masterNullifierHidingSecretKey);
|
|
106
126
|
const masterIncomingViewingPublicKey = await derivePublicKeyFromSecretKey(masterIncomingViewingSecretKey);
|
|
107
127
|
const masterOutgoingViewingPublicKey = await derivePublicKeyFromSecretKey(masterOutgoingViewingSecretKey);
|
|
108
128
|
const masterTaggingPublicKey = await derivePublicKeyFromSecretKey(masterTaggingSecretKey);
|
|
129
|
+
const masterMessageSigningPublicKey = await derivePublicKeyFromSecretKey(masterMessageSigningSecretKey);
|
|
130
|
+
const masterFallbackPublicKey = await derivePublicKeyFromSecretKey(masterFallbackSecretKey);
|
|
109
131
|
// The non-owner-visible PublicKeys carries hashes for npk/ovpk/tpk/mspk/fbpk and the raw
|
|
110
|
-
// point only for ivpk_m. The npk/ovpk/tpk raw points are also returned alongside so the key
|
|
111
|
-
// store can persist them under `${account}-{n|ov|t}pk_m` (only their hashes live in publicKeys).
|
|
132
|
+
// point only for ivpk_m. The npk/ovpk/tpk/mspk/fbpk raw points are also returned alongside so the key
|
|
133
|
+
// store can persist them under `${account}-{n|ov|t|ms|fb}pk_m` (only their hashes live in publicKeys).
|
|
112
134
|
// The ivpk_m point isn't returned separately because it already lives in publicKeys.ivpkM.
|
|
113
|
-
|
|
114
|
-
// TODO: There isn't a derivation path for the message signing(msk) and fallback(fbk) keys yet. So we just use the the
|
|
115
|
-
// default values for now.
|
|
116
|
-
const publicKeys = new PublicKeys(await hashPublicKey(masterNullifierPublicKey), masterIncomingViewingPublicKey, await hashPublicKey(masterOutgoingViewingPublicKey), await hashPublicKey(masterTaggingPublicKey), new Fr(DEFAULT_MSPK_M_HASH), new Fr(DEFAULT_FBPK_M_HASH));
|
|
135
|
+
const publicKeys = new PublicKeys(await hashPublicKey(masterNullifierHidingPublicKey), masterIncomingViewingPublicKey, await hashPublicKey(masterOutgoingViewingPublicKey), await hashPublicKey(masterTaggingPublicKey), await hashPublicKey(masterMessageSigningPublicKey), await hashPublicKey(masterFallbackPublicKey));
|
|
117
136
|
return {
|
|
118
|
-
|
|
137
|
+
masterNullifierHidingSecretKey,
|
|
119
138
|
masterIncomingViewingSecretKey,
|
|
120
139
|
masterOutgoingViewingSecretKey,
|
|
121
140
|
masterTaggingSecretKey,
|
|
122
|
-
|
|
141
|
+
masterMessageSigningSecretKey,
|
|
142
|
+
masterFallbackSecretKey,
|
|
143
|
+
masterNullifierHidingPublicKey,
|
|
123
144
|
masterOutgoingViewingPublicKey,
|
|
124
145
|
masterTaggingPublicKey,
|
|
146
|
+
masterMessageSigningPublicKey,
|
|
147
|
+
masterFallbackPublicKey,
|
|
125
148
|
publicKeys
|
|
126
149
|
};
|
|
127
150
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { Point } from '@aztec/foundation/curves/grumpkin';
|
|
2
3
|
import { z } from 'zod';
|
|
3
4
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
4
5
|
import type { CompleteAddress } from '../contract/complete_address.js';
|
|
@@ -16,17 +17,32 @@ export declare class AppTaggingSecret {
|
|
|
16
17
|
readonly kind: AppTaggingSecretKind;
|
|
17
18
|
constructor(secret: Fr, app: AztecAddress, kind?: AppTaggingSecretKind);
|
|
18
19
|
/**
|
|
19
|
-
* Derives
|
|
20
|
-
* secret. Returns undefined if `externalAddress` is an invalid address.
|
|
20
|
+
* Derives an app-siloed, recipient-directional tagging secret from a shared tagging secret point.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* App-silos the point via {@link appSiloEcdhSharedSecretPoint}, then directs the result to `recipient`:
|
|
23
|
+
* `h([s_app, recipient])`. The directional step stops a symmetric shared secret (ECDH against an address, or an
|
|
24
|
+
* arbitrary registered point) from colliding bidirectionally, so two parties never share a tag sequence.
|
|
25
|
+
*
|
|
26
|
+
* The point is obtained either via {@link computeSharedTaggingSecret} (an ECDH key exchange against a sender) or
|
|
27
|
+
* registered directly as a pre-shared secret.
|
|
28
|
+
*
|
|
29
|
+
* @param taggingSecretPoint - The shared tagging secret point (ECDH output, or a directly registered pre-shared secret)
|
|
25
30
|
* @param app - Contract address to silo the secret to
|
|
26
31
|
* @param recipient - Recipient of the log. Defines the "direction of the secret".
|
|
27
32
|
* @returns The secret that can be used along with an index to compute a tag to be included in a log.
|
|
28
33
|
*/
|
|
29
|
-
static
|
|
34
|
+
static computeDirectional(taggingSecretPoint: Point, app: AztecAddress, recipient: AztecAddress): Promise<AppTaggingSecret>;
|
|
35
|
+
/**
|
|
36
|
+
* Derives the bare app-siloed tagging secret from a shared secret point via {@link appSiloEcdhSharedSecretPoint},
|
|
37
|
+
* under the given delivery-mode kind.
|
|
38
|
+
*/
|
|
39
|
+
static computeAppSiloed(taggingSecretPoint: Point, app: AztecAddress, kind: AppTaggingSecretKind): Promise<AppTaggingSecret>;
|
|
40
|
+
/**
|
|
41
|
+
* Derives the tagging secret for `(externalAddress, recipient, app)` by performing an ECDH key exchange against
|
|
42
|
+
* `externalAddress` to obtain the shared point, then siloing and directing it via {@link computeDirectional}.
|
|
43
|
+
* Returns undefined if `externalAddress` is not a valid address.
|
|
44
|
+
*/
|
|
45
|
+
static computeViaEcdh(localAddress: CompleteAddress, localIvsk: Fq, externalAddress: AztecAddress, app: AztecAddress, recipient: AztecAddress): Promise<AppTaggingSecret | undefined>;
|
|
30
46
|
toString(): string;
|
|
31
47
|
static fromString(str: string): AppTaggingSecret;
|
|
32
48
|
}
|
|
@@ -43,4 +59,11 @@ export declare const AppTaggingSecretSchema: z.ZodPipe<z.ZodObject<{
|
|
|
43
59
|
secret: Fr;
|
|
44
60
|
app: AztecAddress;
|
|
45
61
|
}>>;
|
|
46
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Computes the shared tagging secret point between a local address (i.e. one for which the privacy keys are known) and
|
|
64
|
+
* an external one via a Diffie-Hellman key exchange.
|
|
65
|
+
*
|
|
66
|
+
* Returns undefined if `externalAddress` is an invalid address.
|
|
67
|
+
*/
|
|
68
|
+
export declare function computeSharedTaggingSecret(localAddress: CompleteAddress, localIvsk: Fq, externalAddress: AztecAddress): Promise<Point | undefined>;
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwX3RhZ2dpbmdfc2VjcmV0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9hcHBfdGFnZ2luZ19zZWNyZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUXBFOzs7Ozs7R0FNRztBQUNILHFCQUFhLGdCQUFnQjthQUVULE1BQU0sRUFBRSxFQUFFO2FBQ1YsR0FBRyxFQUFFLFlBQVk7YUFDakIsSUFBSSxFQUFFLG9CQUFvQjtJQUg1QyxZQUNrQixNQUFNLEVBQUUsRUFBRSxFQUNWLEdBQUcsRUFBRSxZQUFZLEVBQ2pCLElBQUksR0FBRSxvQkFBeUQsRUFDN0U7SUFFSjs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILE9BQWEsa0JBQWtCLENBQzdCLGtCQUFrQixFQUFFLEtBQUssRUFDekIsR0FBRyxFQUFFLFlBQVksRUFDakIsU0FBUyxFQUFFLFlBQVksR0FDdEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBSzNCO0lBRUQ7OztPQUdHO0lBQ0gsT0FBYSxnQkFBZ0IsQ0FDM0Isa0JBQWtCLEVBQUUsS0FBSyxFQUN6QixHQUFHLEVBQUUsWUFBWSxFQUNqQixJQUFJLEVBQUUsb0JBQW9CLEdBQ3pCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUUzQjtJQUVEOzs7O09BSUc7SUFDSCxPQUFhLGNBQWMsQ0FDekIsWUFBWSxFQUFFLGVBQWUsRUFDN0IsU0FBUyxFQUFFLEVBQUUsRUFDYixlQUFlLEVBQUUsWUFBWSxFQUM3QixHQUFHLEVBQUUsWUFBWSxFQUNqQixTQUFTLEVBQUUsWUFBWSxHQUN0QixPQUFPLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLENBT3ZDO0lBRUQsUUFBUSxJQUFJLE1BQU0sQ0FFakI7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsZ0JBQWdCLENBVy9DO0NBQ0Y7QUFFRDs7R0FFRztBQUNILHdCQUFnQiwwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLGdCQUFnQixDQUV4RTtBQUVELGVBQU8sTUFBTSxzQkFBc0I7Ozs7Ozs7O0dBTTZDLENBQUM7QUFhakY7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsMEJBQTBCLENBQzlDLFlBQVksRUFBRSxlQUFlLEVBQzdCLFNBQVMsRUFBRSxFQUFFLEVBQ2IsZUFBZSxFQUFFLFlBQVksR0FDNUIsT0FBTyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FlNUIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app_tagging_secret.d.ts","sourceRoot":"","sources":["../../src/logs/app_tagging_secret.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"app_tagging_secret.d.ts","sourceRoot":"","sources":["../../src/logs/app_tagging_secret.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAQpE;;;;;;GAMG;AACH,qBAAa,gBAAgB;aAET,MAAM,EAAE,EAAE;aACV,GAAG,EAAE,YAAY;aACjB,IAAI,EAAE,oBAAoB;IAH5C,YACkB,MAAM,EAAE,EAAE,EACV,GAAG,EAAE,YAAY,EACjB,IAAI,GAAE,oBAAyD,EAC7E;IAEJ;;;;;;;;;;;;;;OAcG;IACH,OAAa,kBAAkB,CAC7B,kBAAkB,EAAE,KAAK,EACzB,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAK3B;IAED;;;OAGG;IACH,OAAa,gBAAgB,CAC3B,kBAAkB,EAAE,KAAK,EACzB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAE3B;IAED;;;;OAIG;IACH,OAAa,cAAc,CACzB,YAAY,EAAE,eAAe,EAC7B,SAAS,EAAE,EAAE,EACb,eAAe,EAAE,YAAY,EAC7B,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAOvC;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAW/C;CACF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAExE;AAED,eAAO,MAAM,sBAAsB;;;;;;;;GAM6C,CAAC;AAajF;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,YAAY,EAAE,eAAe,EAC7B,SAAS,EAAE,EAAE,EACb,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAe5B"}
|
|
@@ -5,6 +5,7 @@ import { z } from 'zod';
|
|
|
5
5
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
6
6
|
import { computeAddressSecret, computePreaddress } from '../keys/derivation.js';
|
|
7
7
|
import { AppTaggingSecretKind } from './app_tagging_secret_kind.js';
|
|
8
|
+
import { appSiloEcdhSharedSecretPoint } from './shared_secret_derivation.js';
|
|
8
9
|
const AppTaggingSecretKindSchema = z.union([
|
|
9
10
|
z.literal(AppTaggingSecretKind.UNCONSTRAINED),
|
|
10
11
|
z.literal(AppTaggingSecretKind.CONSTRAINED)
|
|
@@ -25,50 +26,54 @@ const AppTaggingSecretKindSchema = z.union([
|
|
|
25
26
|
this.kind = kind;
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
|
-
* Derives
|
|
29
|
-
* secret. Returns undefined if `externalAddress` is an invalid address.
|
|
29
|
+
* Derives an app-siloed, recipient-directional tagging secret from a shared tagging secret point.
|
|
30
30
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* App-silos the point via {@link appSiloEcdhSharedSecretPoint}, then directs the result to `recipient`:
|
|
32
|
+
* `h([s_app, recipient])`. The directional step stops a symmetric shared secret (ECDH against an address, or an
|
|
33
|
+
* arbitrary registered point) from colliding bidirectionally, so two parties never share a tag sequence.
|
|
34
|
+
*
|
|
35
|
+
* The point is obtained either via {@link computeSharedTaggingSecret} (an ECDH key exchange against a sender) or
|
|
36
|
+
* registered directly as a pre-shared secret.
|
|
37
|
+
*
|
|
38
|
+
* @param taggingSecretPoint - The shared tagging secret point (ECDH output, or a directly registered pre-shared secret)
|
|
34
39
|
* @param app - Contract address to silo the secret to
|
|
35
40
|
* @param recipient - Recipient of the log. Defines the "direction of the secret".
|
|
36
41
|
* @returns The secret that can be used along with an index to compute a tag to be included in a log.
|
|
37
|
-
*/ static async
|
|
38
|
-
const
|
|
39
|
-
if (!taggingSecretPoint) {
|
|
40
|
-
return undefined;
|
|
41
|
-
}
|
|
42
|
-
const appTaggingSecret = await poseidon2Hash([
|
|
43
|
-
taggingSecretPoint.x,
|
|
44
|
-
taggingSecretPoint.y,
|
|
45
|
-
app
|
|
46
|
-
]);
|
|
42
|
+
*/ static async computeDirectional(taggingSecretPoint, app, recipient) {
|
|
43
|
+
const appSiloedSecret = await appSiloEcdhSharedSecretPoint(taggingSecretPoint, app);
|
|
47
44
|
const directionalAppTaggingSecret = await poseidon2Hash([
|
|
48
|
-
|
|
45
|
+
appSiloedSecret,
|
|
49
46
|
recipient
|
|
50
47
|
]);
|
|
51
48
|
return new AppTaggingSecret(directionalAppTaggingSecret, app);
|
|
52
49
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Derives the bare app-siloed tagging secret from a shared secret point via {@link appSiloEcdhSharedSecretPoint},
|
|
52
|
+
* under the given delivery-mode kind.
|
|
53
|
+
*/ static async computeAppSiloed(taggingSecretPoint, app, kind) {
|
|
54
|
+
return new AppTaggingSecret(await appSiloEcdhSharedSecretPoint(taggingSecretPoint, app), app, kind);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Derives the tagging secret for `(externalAddress, recipient, app)` by performing an ECDH key exchange against
|
|
58
|
+
* `externalAddress` to obtain the shared point, then siloing and directing it via {@link computeDirectional}.
|
|
59
|
+
* Returns undefined if `externalAddress` is not a valid address.
|
|
60
|
+
*/ static async computeViaEcdh(localAddress, localIvsk, externalAddress, app, recipient) {
|
|
61
|
+
const taggingSecretPoint = await computeSharedTaggingSecret(localAddress, localIvsk, externalAddress);
|
|
62
|
+
if (!taggingSecretPoint) {
|
|
63
|
+
return undefined;
|
|
57
64
|
}
|
|
65
|
+
return AppTaggingSecret.computeDirectional(taggingSecretPoint, app, recipient);
|
|
66
|
+
}
|
|
67
|
+
toString() {
|
|
58
68
|
return `${this.kind}:${this.secret.toString()}:${this.app.toString()}`;
|
|
59
69
|
}
|
|
60
70
|
static fromString(str) {
|
|
61
71
|
const parts = str.split(':');
|
|
62
|
-
if (parts.length
|
|
63
|
-
|
|
64
|
-
const [secretStr, appStr] = parts;
|
|
65
|
-
return new AppTaggingSecret(Fr.fromString(secretStr), AztecAddress.fromString(appStr));
|
|
66
|
-
}
|
|
67
|
-
if (parts.length === 3) {
|
|
68
|
-
const [kindStr, secretStr, appStr] = parts;
|
|
69
|
-
return new AppTaggingSecret(Fr.fromString(secretStr), AztecAddress.fromString(appStr), appTaggingSecretKindFromString(kindStr));
|
|
72
|
+
if (parts.length !== 3) {
|
|
73
|
+
throw new Error(`Invalid AppTaggingSecret string: ${str}`);
|
|
70
74
|
}
|
|
71
|
-
|
|
75
|
+
const [kindStr, secretStr, appStr] = parts;
|
|
76
|
+
return new AppTaggingSecret(Fr.fromString(secretStr), AztecAddress.fromStringUnsafe(appStr), appTaggingSecretKindFromString(kindStr));
|
|
72
77
|
}
|
|
73
78
|
}
|
|
74
79
|
/**
|
|
@@ -91,19 +96,21 @@ function appTaggingSecretKindFromString(kind) {
|
|
|
91
96
|
throw new Error(`Invalid AppTaggingSecret kind: ${kind}`);
|
|
92
97
|
}
|
|
93
98
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
/**
|
|
100
|
+
* Computes the shared tagging secret point between a local address (i.e. one for which the privacy keys are known) and
|
|
101
|
+
* an external one via a Diffie-Hellman key exchange.
|
|
102
|
+
*
|
|
103
|
+
* Returns undefined if `externalAddress` is an invalid address.
|
|
104
|
+
*/ export async function computeSharedTaggingSecret(localAddress, localIvsk, externalAddress) {
|
|
100
105
|
// An invalid address has no corresponding address point
|
|
101
106
|
if (!await externalAddress.isValid()) {
|
|
102
107
|
return undefined;
|
|
103
108
|
}
|
|
104
109
|
const externalAddressPoint = await externalAddress.toAddressPoint();
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
//
|
|
108
|
-
|
|
110
|
+
const localPreaddress = await computePreaddress(await localAddress.publicKeys.hash(), localAddress.partialAddress);
|
|
111
|
+
const localAddressSecret = await computeAddressSecret(localPreaddress, localIvsk);
|
|
112
|
+
// For a given local address A and external address B, the shared tagging secret S is (h_A + ivsk_A) * Addr_Point_B
|
|
113
|
+
// (conceptually, in reality we don't use h_A + ivsk_A directly but rather the actual address secret, which is the
|
|
114
|
+
// same but with an optional sign adjustment to prevent A's address point from having a negative y-coordinate).
|
|
115
|
+
return Grumpkin.mul(externalAddressPoint, localAddressSecret);
|
|
109
116
|
}
|
|
@@ -2,7 +2,7 @@ export const AppTaggingSecretKind = {
|
|
|
2
2
|
UNCONSTRAINED: 'unconstrained',
|
|
3
3
|
CONSTRAINED: 'constrained'
|
|
4
4
|
};
|
|
5
|
-
// Keep in sync with aztec::messages::
|
|
5
|
+
// Keep in sync with aztec::messages::delivery::OnchainDeliveryMode.
|
|
6
6
|
const ONCHAIN_UNCONSTRAINED_DELIVERY_MODE = 2;
|
|
7
7
|
const ONCHAIN_CONSTRAINED_DELIVERY_MODE = 3;
|
|
8
8
|
export function appTaggingSecretKindFromDeliveryMode(deliveryMode) {
|
|
@@ -43,7 +43,6 @@ export declare class ContractClassLog {
|
|
|
43
43
|
static from(fields: FieldsOf<ContractClassLog>): ContractClassLog;
|
|
44
44
|
toFields(): Fr[];
|
|
45
45
|
equals(other: ContractClassLog): boolean;
|
|
46
|
-
static fromFields(fields: Fr[] | FieldReader): ContractClassLog;
|
|
47
46
|
getEmittedFields(): Fr[];
|
|
48
47
|
toBlobFields(): Fr[];
|
|
49
48
|
static fromBlobFields(emittedLength: number, fields: Fr[] | FieldReader): ContractClassLog;
|
|
@@ -77,4 +76,4 @@ export declare class ContractClassLog {
|
|
|
77
76
|
static fromPlainObject(obj: any): ContractClassLog;
|
|
78
77
|
[inspect.custom](): string;
|
|
79
78
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfY2xhc3NfbG9nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9jb250cmFjdF9jbGFzc19sb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBc0MsTUFBTSw2QkFBNkIsQ0FBQztBQUN4SCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELHFCQUFhLHNCQUFzQjtJQUdkLE1BQU0sRUFBRSxFQUFFLEVBQUU7SUFBL0IsWUFBbUIsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQU05QjtJQUVELE1BQU0sS0FBSyxNQUFNOzs7O1FBTWhCO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLHNCQUFzQixDQUt2RDtJQUVELFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FFZjtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLFdBQVcsMEJBTzNDO0lBRUQsUUFBUSxJQUFJLE1BQU0sQ0FBQztJQUNuQixRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFRakMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksMEJBTzlDO0lBRUQsTUFBTSxDQUFDLEtBQUssRUFBRSxzQkFBc0IsV0FFbkM7SUFFRCxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxRQUVyQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLDBCQUkzQztJQUVELE9BQU8sWUFFTjtJQUVELE1BQU0sQ0FBQyxLQUFLLDJCQUVYO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLFNBQW9DLDBCQU05RDtJQUVLLElBQUksZ0JBRVQ7SUFFRCxLQUFLLDJCQUVKO0NBQ0Y7QUFFRCxxQkFBYSxnQkFBZ0I7SUFJbEIsZUFBZSxFQUFFLFlBQVk7SUFDN0IsTUFBTSxFQUFFLHNCQUFzQjtJQUM5QixhQUFhLEVBQUUsTUFBTTtJQUw5QixNQUFNLENBQUMsYUFBYSxTQUFnRDtJQUVwRSxZQUNTLGVBQWUsRUFBRSxZQUFZLEVBQzdCLE1BQU0sRUFBRSxzQkFBc0IsRUFDOUIsYUFBYSxFQUFFLE1BQU0sRUFDMUI7SUFFSixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsb0JBRTdDO0lBRUQsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUVmO0lBRUQsTUFBTSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsV0FNN0I7SUFFRCxnQkFBZ0IsU0FFZjtJQUVELFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FFbkI7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLFdBQVcsb0JBU3RFO0lBRUQsT0FBTyxZQUVOO0lBRUQsTUFBTSxDQUFDLEtBQUsscUJBRVg7SUFFRCxRQUFRLElBQUksTUFBTSxDQUFDO0lBQ25CLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLElBQUksQ0FBQztJQVFqQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxvQkFNOUM7SUFFRCxPQUFhLE1BQU0sOEJBUWxCO0lBRUssSUFBSSxnQkFFVDtJQUVELE1BQU0sS0FBSyxNQUFNOzs7Ozs7Ozs7Ozs7UUFRaEI7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsZ0JBQWdCLENBU2pEO0lBRUQsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQU16QjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_class_log.d.ts","sourceRoot":"","sources":["../../src/logs/contract_class_log.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAsC,MAAM,6BAA6B,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,sBAAsB;IAGd,MAAM,EAAE,EAAE,EAAE;IAA/B,YAAmB,MAAM,EAAE,EAAE,EAAE,EAM9B;IAED,MAAM,KAAK,MAAM;;;;QAMhB;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,sBAAsB,CAKvD;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,0BAO3C;IAED,QAAQ,IAAI,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAQjC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,0BAO9C;IAED,MAAM,CAAC,KAAK,EAAE,sBAAsB,WAEnC;IAED,gBAAgB,CAAC,aAAa,EAAE,MAAM,QAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,EAAE,0BAI3C;IAED,OAAO,YAEN;IAED,MAAM,CAAC,KAAK,2BAEX;IAED,MAAM,CAAC,MAAM,CAAC,aAAa,SAAoC,0BAM9D;IAEK,IAAI,gBAET;IAED,KAAK,2BAEJ;CACF;AAED,qBAAa,gBAAgB;IAIlB,eAAe,EAAE,YAAY;IAC7B,MAAM,EAAE,sBAAsB;IAC9B,aAAa,EAAE,MAAM;IAL9B,MAAM,CAAC,aAAa,SAAgD;IAEpE,YACS,eAAe,EAAE,YAAY,EAC7B,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,MAAM,EAC1B;IAEJ,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,oBAE7C;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,KAAK,EAAE,gBAAgB,WAM7B;IAED,
|
|
1
|
+
{"version":3,"file":"contract_class_log.d.ts","sourceRoot":"","sources":["../../src/logs/contract_class_log.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAsC,MAAM,6BAA6B,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,sBAAsB;IAGd,MAAM,EAAE,EAAE,EAAE;IAA/B,YAAmB,MAAM,EAAE,EAAE,EAAE,EAM9B;IAED,MAAM,KAAK,MAAM;;;;QAMhB;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,sBAAsB,CAKvD;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,0BAO3C;IAED,QAAQ,IAAI,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAQjC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,0BAO9C;IAED,MAAM,CAAC,KAAK,EAAE,sBAAsB,WAEnC;IAED,gBAAgB,CAAC,aAAa,EAAE,MAAM,QAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,EAAE,0BAI3C;IAED,OAAO,YAEN;IAED,MAAM,CAAC,KAAK,2BAEX;IAED,MAAM,CAAC,MAAM,CAAC,aAAa,SAAoC,0BAM9D;IAEK,IAAI,gBAET;IAED,KAAK,2BAEJ;CACF;AAED,qBAAa,gBAAgB;IAIlB,eAAe,EAAE,YAAY;IAC7B,MAAM,EAAE,sBAAsB;IAC9B,aAAa,EAAE,MAAM;IAL9B,MAAM,CAAC,aAAa,SAAgD;IAEpE,YACS,eAAe,EAAE,YAAY,EAC7B,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,MAAM,EAC1B;IAEJ,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,oBAE7C;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,KAAK,EAAE,gBAAgB,WAM7B;IAED,gBAAgB,SAEf;IAED,YAAY,IAAI,EAAE,EAAE,CAEnB;IAED,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,oBAStE;IAED,OAAO,YAEN;IAED,MAAM,CAAC,KAAK,qBAEX;IAED,QAAQ,IAAI,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAQjC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,oBAM9C;IAED,OAAa,MAAM,8BAQlB;IAEK,IAAI,gBAET;IAED,MAAM,KAAK,MAAM;;;;;;;;;;;;QAQhB;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,gBAAgB,CASjD;IAED,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAMzB;CACF"}
|
|
@@ -110,10 +110,6 @@ export class ContractClassLog {
|
|
|
110
110
|
equals(other) {
|
|
111
111
|
return this.contractAddress.equals(other.contractAddress) && this.fields.equals(other.fields) && this.emittedLength === other.emittedLength;
|
|
112
112
|
}
|
|
113
|
-
static fromFields(fields) {
|
|
114
|
-
const reader = FieldReader.asReader(fields);
|
|
115
|
-
return new ContractClassLog(reader.readObject(AztecAddress), reader.readObject(ContractClassLogFields), reader.readU32());
|
|
116
|
-
}
|
|
117
113
|
getEmittedFields() {
|
|
118
114
|
return this.fields.getEmittedFields(this.emittedLength);
|
|
119
115
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import { TxHash } from '../tx/tx_hash.js';
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { TxHash } from '../tx/tx_hash.js';
|
|
3
3
|
/**
|
|
4
4
|
* Additional information needed to process a message.
|
|
5
5
|
*
|
|
@@ -9,19 +9,9 @@ import { TxHash } from '../tx/tx_hash.js';
|
|
|
9
9
|
*
|
|
10
10
|
* A TS version of `message_context.nr`.
|
|
11
11
|
*/
|
|
12
|
-
export
|
|
12
|
+
export type MessageContext = {
|
|
13
13
|
txHash: TxHash;
|
|
14
14
|
uniqueNoteHashesInTx: Fr[];
|
|
15
15
|
firstNullifierInTx: Fr;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
toNoirStruct(): {
|
|
19
|
-
tx_hash: Fr;
|
|
20
|
-
unique_note_hashes_in_tx: Fr[];
|
|
21
|
-
first_nullifier_in_tx: Fr;
|
|
22
|
-
};
|
|
23
|
-
static empty(): MessageContext;
|
|
24
|
-
static toEmptyFields(): Fr[];
|
|
25
|
-
static toSerializedOption(response: MessageContext | null): Fr[];
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZV9jb250ZXh0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9tZXNzYWdlX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQzs7Ozs7Ozs7R0FRRztBQUNILHFCQUFhLGNBQWM7SUFFaEIsTUFBTSxFQUFFLE1BQU07SUFDZCxvQkFBb0IsRUFBRSxFQUFFLEVBQUU7SUFDMUIsa0JBQWtCLEVBQUUsRUFBRTtJQUgvQixZQUNTLE1BQU0sRUFBRSxNQUFNLEVBQ2Qsb0JBQW9CLEVBQUUsRUFBRSxFQUFFLEVBQzFCLGtCQUFrQixFQUFFLEVBQUUsRUFDM0I7SUFFSixRQUFRLElBQUksRUFBRSxFQUFFLENBTWY7SUFFRCxZQUFZOzs7O01BUVg7SUFFRCxNQUFNLENBQUMsS0FBSyxJQUFJLGNBQWMsQ0FFN0I7SUFFRCxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsRUFBRSxDQUkzQjtJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FNL0Q7Q0FDRiJ9
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZV9jb250ZXh0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9tZXNzYWdlX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0M7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE1BQU0sY0FBYyxHQUFHO0lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixvQkFBb0IsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQixrQkFBa0IsRUFBRSxFQUFFLENBQUM7Q0FDeEIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message_context.d.ts","sourceRoot":"","sources":["../../src/logs/message_context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message_context.d.ts","sourceRoot":"","sources":["../../src/logs/message_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,EAAE,EAAE,CAAC;IAC3B,kBAAkB,EAAE,EAAE,CAAC;CACxB,CAAC"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import { MAX_NOTE_HASHES_PER_TX } from '@aztec/constants';
|
|
2
|
-
import { range } from '@aztec/foundation/array';
|
|
3
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
-
import { TxHash } from '../tx/tx_hash.js';
|
|
5
1
|
/**
|
|
6
2
|
* Additional information needed to process a message.
|
|
7
3
|
*
|
|
@@ -10,65 +6,4 @@ import { TxHash } from '../tx/tx_hash.js';
|
|
|
10
6
|
* hashes and the first nullifier in order to find the note's nonce.
|
|
11
7
|
*
|
|
12
8
|
* A TS version of `message_context.nr`.
|
|
13
|
-
*/ export
|
|
14
|
-
txHash;
|
|
15
|
-
uniqueNoteHashesInTx;
|
|
16
|
-
firstNullifierInTx;
|
|
17
|
-
constructor(txHash, uniqueNoteHashesInTx, firstNullifierInTx){
|
|
18
|
-
this.txHash = txHash;
|
|
19
|
-
this.uniqueNoteHashesInTx = uniqueNoteHashesInTx;
|
|
20
|
-
this.firstNullifierInTx = firstNullifierInTx;
|
|
21
|
-
}
|
|
22
|
-
toFields() {
|
|
23
|
-
return [
|
|
24
|
-
this.txHash.hash,
|
|
25
|
-
...serializeBoundedVec(this.uniqueNoteHashesInTx, MAX_NOTE_HASHES_PER_TX),
|
|
26
|
-
this.firstNullifierInTx
|
|
27
|
-
];
|
|
28
|
-
}
|
|
29
|
-
toNoirStruct() {
|
|
30
|
-
/* eslint-disable camelcase */ return {
|
|
31
|
-
tx_hash: this.txHash.hash,
|
|
32
|
-
unique_note_hashes_in_tx: this.uniqueNoteHashesInTx,
|
|
33
|
-
first_nullifier_in_tx: this.firstNullifierInTx
|
|
34
|
-
};
|
|
35
|
-
/* eslint-enable camelcase */ }
|
|
36
|
-
static empty() {
|
|
37
|
-
return new MessageContext(TxHash.zero(), [], Fr.ZERO);
|
|
38
|
-
}
|
|
39
|
-
static toEmptyFields() {
|
|
40
|
-
const serializationLen = 1 /* txHash */ + MAX_NOTE_HASHES_PER_TX + 1 /* uniqueNoteHashesInTx BVec */ + 1; /* firstNullifierInTx */
|
|
41
|
-
return range(serializationLen).map((_)=>Fr.zero());
|
|
42
|
-
}
|
|
43
|
-
static toSerializedOption(response) {
|
|
44
|
-
if (response) {
|
|
45
|
-
return [
|
|
46
|
-
new Fr(1),
|
|
47
|
-
...response.toFields()
|
|
48
|
-
];
|
|
49
|
-
} else {
|
|
50
|
-
return [
|
|
51
|
-
new Fr(0),
|
|
52
|
-
...MessageContext.toEmptyFields()
|
|
53
|
-
];
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Helper function to serialize a bounded vector according to Noir's BoundedVec format
|
|
59
|
-
* @param values - The values to serialize
|
|
60
|
-
* @param maxLength - The maximum length of the bounded vector
|
|
61
|
-
* @returns The serialized bounded vector as Fr[]
|
|
62
|
-
* @dev Copied over from pending_tagged_log.ts.
|
|
63
|
-
*/ function serializeBoundedVec(values, maxLength) {
|
|
64
|
-
if (values.length > maxLength) {
|
|
65
|
-
throw new Error(`Attempted to serialize ${values} values into a BoundedVec with max length ${maxLength}`);
|
|
66
|
-
}
|
|
67
|
-
const lengthDiff = maxLength - values.length;
|
|
68
|
-
const zeroPaddingArray = Array(lengthDiff).fill(Fr.ZERO);
|
|
69
|
-
const storage = values.concat(zeroPaddingArray);
|
|
70
|
-
return [
|
|
71
|
-
...storage,
|
|
72
|
-
new Fr(values.length)
|
|
73
|
-
];
|
|
74
|
-
}
|
|
9
|
+
*/ export { };
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import type {
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { MessageContext } from './message_context.js';
|
|
3
3
|
/**
|
|
4
4
|
* Represents a pending tagged log as it is stored in the pending tagged log array to which the fetchTaggedLogs oracle
|
|
5
5
|
* inserts found private logs. A TS version of `pending_tagged_log.nr`.
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export type PendingTaggedLog = {
|
|
8
8
|
log: Fr[];
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ190YWdnZWRfbG9nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9wZW5kaW5nX3RhZ2dlZF9sb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRy9DOzs7R0FHRztBQUNILHFCQUFhLGdCQUFnQjtJQUlsQixHQUFHLEVBQUUsRUFBRSxFQUFFO0lBSGxCLE9BQU8sQ0FBQyxPQUFPLENBQWlCO0lBRWhDLFlBQ1MsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUNoQixNQUFNLEVBQUUsTUFBTSxFQUNkLG9CQUFvQixFQUFFLEVBQUUsRUFBRSxFQUMxQixrQkFBa0IsRUFBRSxFQUFFLEVBR3ZCO0lBRUQsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUVmO0NBQ0YifQ==
|
|
9
|
+
context: MessageContext;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ190YWdnZWRfbG9nLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9wZW5kaW5nX3RhZ2dlZF9sb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0Q7OztHQUdHO0FBQ0gsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNWLE9BQU8sRUFBRSxjQUFjLENBQUM7Q0FDekIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending_tagged_log.d.ts","sourceRoot":"","sources":["../../src/logs/pending_tagged_log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pending_tagged_log.d.ts","sourceRoot":"","sources":["../../src/logs/pending_tagged_log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC"}
|
|
@@ -1,34 +1,4 @@
|
|
|
1
|
-
import { PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
|
|
2
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
-
import { MessageContext } from './message_context.js';
|
|
4
1
|
/**
|
|
5
2
|
* Represents a pending tagged log as it is stored in the pending tagged log array to which the fetchTaggedLogs oracle
|
|
6
3
|
* inserts found private logs. A TS version of `pending_tagged_log.nr`.
|
|
7
|
-
*/ export
|
|
8
|
-
log;
|
|
9
|
-
context;
|
|
10
|
-
constructor(log, txHash, uniqueNoteHashesInTx, firstNullifierInTx){
|
|
11
|
-
this.log = log;
|
|
12
|
-
this.context = new MessageContext(txHash, uniqueNoteHashesInTx, firstNullifierInTx);
|
|
13
|
-
}
|
|
14
|
-
toFields() {
|
|
15
|
-
return [
|
|
16
|
-
...serializeBoundedVec(this.log, PRIVATE_LOG_SIZE_IN_FIELDS),
|
|
17
|
-
...this.context.toFields()
|
|
18
|
-
];
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Helper function to serialize a bounded vector according to Noir's BoundedVec format
|
|
23
|
-
* @param values - The values to serialize
|
|
24
|
-
* @param maxLength - The maximum length of the bounded vector
|
|
25
|
-
* @returns The serialized bounded vector as Fr[]
|
|
26
|
-
*/ function serializeBoundedVec(values, maxLength) {
|
|
27
|
-
const lengthDiff = maxLength - values.length;
|
|
28
|
-
const zeroPaddingArray = Array(lengthDiff).fill(Fr.ZERO);
|
|
29
|
-
const storage = values.concat(zeroPaddingArray);
|
|
30
|
-
return [
|
|
31
|
-
...storage,
|
|
32
|
-
new Fr(values.length)
|
|
33
|
-
];
|
|
34
|
-
}
|
|
4
|
+
*/ export { };
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import
|
|
2
|
+
import { GrumpkinScalar, type Point } from '@aztec/foundation/curves/grumpkin';
|
|
3
3
|
import type { AztecAddress } from '../aztec-address/index.js';
|
|
4
4
|
import type { PublicKey } from '../keys/public_key.js';
|
|
5
5
|
/**
|
|
6
|
-
* Derives
|
|
6
|
+
* Derives the raw ECDH shared secret point `S = secretKey * publicKey`.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
|
|
8
|
+
* @throws If the publicKey is zero.
|
|
9
|
+
*/
|
|
10
|
+
export declare function deriveEcdhSharedSecretPoint(secretKey: GrumpkinScalar, publicKey: PublicKey): Promise<Point>;
|
|
11
|
+
/**
|
|
12
|
+
* Derives an app-siloed ECDH shared secret from keys: ECDHs `S = secretKey * publicKey` via
|
|
13
|
+
* {@link deriveEcdhSharedSecretPoint}, then app-silos it via {@link appSiloEcdhSharedSecretPoint}.
|
|
10
14
|
*
|
|
11
15
|
* @param secretKey - The secret key used to derive shared secret.
|
|
12
16
|
* @param publicKey - The public key used to derive shared secret.
|
|
@@ -14,5 +18,24 @@ import type { PublicKey } from '../keys/public_key.js';
|
|
|
14
18
|
* @returns The app-siloed shared secret as a Field.
|
|
15
19
|
* @throws If the publicKey is zero.
|
|
16
20
|
*/
|
|
17
|
-
export declare function
|
|
18
|
-
|
|
21
|
+
export declare function appSiloEcdhSharedSecret(secretKey: GrumpkinScalar, publicKey: PublicKey, contractAddress: AztecAddress): Promise<Fr>;
|
|
22
|
+
/**
|
|
23
|
+
* App-silos a shared secret point: `s_app = h(DOM_SEP__APP_SILOED_ECDH_SHARED_SECRET, S.x, S.y, app)`.
|
|
24
|
+
*
|
|
25
|
+
* Mirrors `compute_app_siloed_shared_secret` in aztec-nr.
|
|
26
|
+
*
|
|
27
|
+
* @param point - The raw shared secret point `S`.
|
|
28
|
+
* @param app - The contract address to silo to.
|
|
29
|
+
*/
|
|
30
|
+
export declare function appSiloEcdhSharedSecretPoint(point: Point, app: AztecAddress): Promise<Fr>;
|
|
31
|
+
/**
|
|
32
|
+
* Protects a handshake's shared secret from being forged by the recipient: `S' = hash(ephPk, recipientPoint) * S`.
|
|
33
|
+
*
|
|
34
|
+
* Mirrors aztec-nr's `protect_from_forgery` and must stay byte-compatible with it.
|
|
35
|
+
*
|
|
36
|
+
* @param secret - The raw shared secret `S` to protect.
|
|
37
|
+
* @param ephPk - The handshake's ephemeral public key.
|
|
38
|
+
* @param recipientPoint - The recipient's address point.
|
|
39
|
+
*/
|
|
40
|
+
export declare function protectFromForgery(secret: Point, ephPk: Point, recipientPoint: Point): Promise<Point>;
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkX3NlY3JldF9kZXJpdmF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9ncy9zaGFyZWRfc2VjcmV0X2Rlcml2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEtBQUssRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRS9FLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsMkJBQTJCLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FPM0c7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBc0IsdUJBQXVCLENBQzNDLFNBQVMsRUFBRSxjQUFjLEVBQ3pCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLGVBQWUsRUFBRSxZQUFZLEdBQzVCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FHYjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBZ0IsNEJBQTRCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFekY7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBTTNHIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared_secret_derivation.d.ts","sourceRoot":"","sources":["../../src/logs/shared_secret_derivation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"shared_secret_derivation.d.ts","sourceRoot":"","sources":["../../src/logs/shared_secret_derivation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,KAAK,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAO3G;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,EAAE,CAAC,CAGb;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAEzF;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAM3G"}
|