@aztec/pxe 5.0.0-rc.1 → 5.0.0
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/block_synchronizer/block_stream_source.d.ts +5 -5
- package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -1
- package/dest/block_synchronizer/block_stream_source.js +4 -29
- package/dest/block_synchronizer/block_synchronizer.d.ts +16 -12
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +49 -15
- 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/contract/contract_class_service.d.ts +31 -0
- package/dest/contract/contract_class_service.d.ts.map +1 -0
- package/dest/contract/contract_class_service.js +68 -0
- package/dest/{contract_sync → contract}/contract_sync_service.d.ts +7 -6
- package/dest/contract/contract_sync_service.d.ts.map +1 -0
- package/dest/{contract_sync → contract}/contract_sync_service.js +10 -30
- package/dest/contract/helpers.d.ts +7 -0
- package/dest/contract/helpers.d.ts.map +1 -0
- package/dest/contract/helpers.js +20 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
- package/dest/contract_function_simulator/aztec_node_read_cache.d.ts +39 -0
- package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
- package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -18
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +52 -31
- package/dest/contract_function_simulator/execution_note_cache.d.ts +3 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +8 -28
- package/dest/contract_function_simulator/index.d.ts +17 -9
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +4 -7
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +8 -27
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/bounded_vec.js +8 -23
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +11 -12
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +6 -49
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
- package/dest/contract_function_simulator/noir-structs/option.d.ts +9 -11
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/option.js +18 -13
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +6 -9
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -14
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +21 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.js +50 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +14 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts +7 -2
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/acir_callback.js +55 -11
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +86 -8
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle_registry.js +168 -18
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +123 -40
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +947 -264
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +21 -8
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +126 -16
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +63 -33
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +175 -90
- package/dest/debug/pxe_debug_utils.d.ts +2 -2
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +3 -2
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts +8 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +5 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -2
- package/dest/entrypoints/server/utils.d.ts +1 -1
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +3 -1
- package/dest/error_enriching.d.ts +5 -3
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +13 -11
- package/dest/hooks/execution_hooks.d.ts +27 -7
- package/dest/hooks/execution_hooks.d.ts.map +1 -1
- package/dest/hooks/execution_hooks.js +3 -3
- package/dest/hooks/index.d.ts +4 -3
- package/dest/hooks/index.d.ts.map +1 -1
- package/dest/hooks/index.js +1 -0
- package/dest/hooks/resolve_custom_request.d.ts +23 -0
- package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
- package/dest/hooks/resolve_custom_request.js +3 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
- package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
- package/dest/logs/log_service.d.ts +7 -6
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +79 -28
- package/dest/messages/tx_resolver_service.d.ts +17 -0
- package/dest/messages/tx_resolver_service.d.ts.map +1 -0
- package/dest/messages/{message_context_service.js → tx_resolver_service.js} +8 -8
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.js +3 -3
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +6 -2
- package/dest/private_kernel/hints/test_utils.js +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +17 -36
- package/dest/private_kernel/private_kernel_oracle.d.ts +4 -2
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +17 -5
- package/dest/pxe.d.ts +109 -47
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +222 -139
- package/dest/storage/allowed_scopes.d.ts +6 -0
- package/dest/storage/allowed_scopes.d.ts.map +1 -0
- package/dest/storage/allowed_scopes.js +7 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +1 -1
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -1
- package/dest/storage/backwards_compatibility_tests/schema_tests.js +114 -37
- package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_service.js +6 -9
- package/dest/storage/contract_store/contract_store.d.ts +27 -24
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +64 -75
- package/dest/storage/fact_store/fact_service.d.ts +22 -0
- package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_service.js +45 -0
- package/dest/storage/fact_store/fact_store.d.ts +95 -0
- package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store.js +408 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store_keys.js +50 -0
- package/dest/storage/fact_store/index.d.ts +6 -0
- package/dest/storage/fact_store/index.d.ts.map +1 -0
- package/dest/storage/fact_store/index.js +4 -0
- package/dest/storage/fact_store/origin_state.d.ts +57 -0
- package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
- package/dest/storage/fact_store/origin_state.js +53 -0
- package/dest/storage/fact_store/stored_fact.d.ts +32 -0
- package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
- package/dest/storage/fact_store/stored_fact.js +64 -0
- package/dest/storage/index.d.ts +2 -1
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +1 -0
- package/dest/storage/metadata.d.ts +2 -2
- package/dest/storage/metadata.d.ts.map +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/open_pxe_stores.d.ts +5 -3
- package/dest/storage/open_pxe_stores.d.ts.map +1 -1
- package/dest/storage/open_pxe_stores.js +5 -3
- package/dest/storage/tagging_store/index.d.ts +2 -2
- package/dest/storage/tagging_store/index.d.ts.map +1 -1
- package/dest/storage/tagging_store/index.js +1 -1
- package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
- package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
- package/dest/tagging/constants.d.ts +2 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +18 -9
- package/package.json +17 -17
- package/src/block_synchronizer/block_stream_source.ts +6 -45
- package/src/block_synchronizer/block_synchronizer.ts +65 -24
- package/src/config/index.ts +1 -0
- package/src/contract/contract_class_service.ts +83 -0
- package/src/{contract_sync → contract}/contract_sync_service.ts +18 -37
- package/src/contract/helpers.ts +35 -0
- package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
- package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +86 -43
- package/src/contract_function_simulator/execution_note_cache.ts +7 -28
- package/src/contract_function_simulator/index.ts +24 -9
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +12 -24
- package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
- package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
- package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +20 -46
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
- package/src/contract_function_simulator/noir-structs/option.ts +17 -11
- package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
- package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
- package/src/contract_function_simulator/noir-structs/provided_secret.ts +4 -15
- package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
- package/src/contract_function_simulator/noir-structs/resolved_tx.ts +53 -0
- package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +15 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
- package/src/contract_function_simulator/oracle/acir_callback.ts +58 -12
- package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
- package/src/contract_function_simulator/oracle/oracle_registry.ts +119 -86
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +659 -248
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +155 -24
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +300 -115
- package/src/debug/pxe_debug_utils.ts +1 -1
- package/src/entrypoints/client/bundle/utils.ts +3 -2
- package/src/entrypoints/client/lazy/utils.ts +3 -2
- package/src/entrypoints/pxe_creation_options.ts +7 -1
- package/src/entrypoints/server/index.ts +5 -2
- package/src/entrypoints/server/utils.ts +3 -1
- package/src/error_enriching.ts +27 -11
- package/src/hooks/execution_hooks.ts +28 -8
- package/src/hooks/index.ts +8 -2
- package/src/hooks/resolve_custom_request.ts +24 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
- package/src/logs/log_service.ts +91 -37
- package/src/messages/{message_context_service.ts → tx_resolver_service.ts} +16 -9
- package/src/oracle_version.ts +3 -3
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +11 -1
- package/src/private_kernel/hints/test_utils.ts +1 -1
- package/src/private_kernel/private_kernel_execution_prover.ts +22 -52
- package/src/private_kernel/private_kernel_oracle.ts +23 -4
- package/src/pxe.ts +320 -158
- package/src/storage/allowed_scopes.ts +14 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +6 -6
- package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +1 -1
- package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +12 -12
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +1 -1
- package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +11 -3
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +12 -4
- package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +21 -5
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +125 -36
- package/src/storage/capsule_store/capsule_service.ts +8 -13
- package/src/storage/contract_store/contract_store.ts +86 -93
- package/src/storage/fact_store/fact_service.ts +69 -0
- package/src/storage/fact_store/fact_store.ts +487 -0
- package/src/storage/fact_store/fact_store_keys.ts +75 -0
- package/src/storage/fact_store/index.ts +14 -0
- package/src/storage/fact_store/origin_state.ts +75 -0
- package/src/storage/fact_store/stored_fact.ts +80 -0
- package/src/storage/index.ts +1 -0
- package/src/storage/metadata.ts +1 -1
- package/src/storage/open_pxe_stores.ts +6 -3
- package/src/storage/tagging_store/index.ts +1 -1
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +19 -9
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -51
- package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
- package/dest/contract_sync/helpers.d.ts +0 -27
- package/dest/contract_sync/helpers.d.ts.map +0 -1
- package/dest/contract_sync/helpers.js +0 -53
- package/dest/messages/message_context_service.d.ts +0 -17
- package/dest/messages/message_context_service.d.ts.map +0 -1
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
- package/src/contract_sync/helpers.ts +0 -86
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
MAX_PRIVATE_LOGS_PER_TX,
|
|
20
20
|
MAX_TX_LIFETIME,
|
|
21
21
|
PRIVATE_TX_L2_GAS_OVERHEAD,
|
|
22
|
+
PUBLIC_DATA_WRITE_LENGTH,
|
|
22
23
|
PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
23
24
|
TX_DA_GAS_OVERHEAD,
|
|
24
25
|
} from '@aztec/constants';
|
|
@@ -80,6 +81,7 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
80
81
|
import {
|
|
81
82
|
BlockHeader,
|
|
82
83
|
CallContext,
|
|
84
|
+
type ContractOverrides,
|
|
83
85
|
HashedValues,
|
|
84
86
|
type OffchainEffect,
|
|
85
87
|
PrivateExecutionResult,
|
|
@@ -90,18 +92,22 @@ import {
|
|
|
90
92
|
getFinalMinRevertibleSideEffectCounter,
|
|
91
93
|
} from '@aztec/stdlib/tx';
|
|
92
94
|
|
|
93
|
-
import type {
|
|
95
|
+
import type { ContractClassService } from '../contract/contract_class_service.js';
|
|
96
|
+
import type { ContractSyncService } from '../contract/contract_sync_service.js';
|
|
94
97
|
import type { ExecutionHooks } from '../hooks/index.js';
|
|
95
|
-
import type {
|
|
98
|
+
import type { TxResolverService } from '../messages/tx_resolver_service.js';
|
|
96
99
|
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
97
100
|
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
98
101
|
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
99
102
|
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
103
|
+
import { FactService } from '../storage/fact_store/index.js';
|
|
104
|
+
import type { FactStore } from '../storage/fact_store/index.js';
|
|
100
105
|
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
101
106
|
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
102
107
|
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
103
|
-
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
104
108
|
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
109
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
110
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
105
111
|
import type { BenchmarkedNode } from './benchmarked_node.js';
|
|
106
112
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
107
113
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
@@ -114,10 +120,6 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
114
120
|
|
|
115
121
|
/** Options for ContractFunctionSimulator.run. */
|
|
116
122
|
export type ContractSimulatorRunOpts = {
|
|
117
|
-
/** The address of the contract (should match request.origin). */
|
|
118
|
-
contractAddress: AztecAddress;
|
|
119
|
-
/** The function selector of the entry point. */
|
|
120
|
-
selector: FunctionSelector;
|
|
121
123
|
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
122
124
|
msgSender?: AztecAddress;
|
|
123
125
|
/** The block header to use as base state for this run. */
|
|
@@ -133,6 +135,9 @@ export type ContractSimulatorRunOpts = {
|
|
|
133
135
|
/** Args for ContractFunctionSimulator constructor. */
|
|
134
136
|
export type ContractFunctionSimulatorArgs = {
|
|
135
137
|
contractStore: ContractStore;
|
|
138
|
+
contractClassService: ContractClassService;
|
|
139
|
+
/** Per-simulation contract overrides. */
|
|
140
|
+
overrides?: ContractOverrides;
|
|
136
141
|
noteStore: NoteStore;
|
|
137
142
|
keyStore: KeyStore;
|
|
138
143
|
addressStore: AddressStore;
|
|
@@ -140,12 +145,13 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
140
145
|
l2TipsStore: L2TipsProvider;
|
|
141
146
|
senderTaggingStore: SenderTaggingStore;
|
|
142
147
|
recipientTaggingStore: RecipientTaggingStore;
|
|
143
|
-
|
|
148
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
144
149
|
capsuleStore: CapsuleStore;
|
|
150
|
+
factStore: FactStore;
|
|
145
151
|
privateEventStore: PrivateEventStore;
|
|
146
152
|
simulator: CircuitSimulator;
|
|
147
153
|
contractSyncService: ContractSyncService;
|
|
148
|
-
|
|
154
|
+
txResolver: TxResolverService;
|
|
149
155
|
hooks?: ExecutionHooks;
|
|
150
156
|
};
|
|
151
157
|
|
|
@@ -155,6 +161,8 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
155
161
|
export class ContractFunctionSimulator {
|
|
156
162
|
private readonly log: Logger;
|
|
157
163
|
private readonly contractStore: ContractStore;
|
|
164
|
+
private readonly contractClassService: ContractClassService;
|
|
165
|
+
private readonly overrides: ContractOverrides | undefined;
|
|
158
166
|
private readonly noteStore: NoteStore;
|
|
159
167
|
private readonly keyStore: KeyStore;
|
|
160
168
|
private readonly addressStore: AddressStore;
|
|
@@ -162,16 +170,19 @@ export class ContractFunctionSimulator {
|
|
|
162
170
|
private readonly l2TipsStore: L2TipsProvider;
|
|
163
171
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
164
172
|
private readonly recipientTaggingStore: RecipientTaggingStore;
|
|
165
|
-
private readonly
|
|
173
|
+
private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
166
174
|
private readonly capsuleStore: CapsuleStore;
|
|
175
|
+
private readonly factStore: FactStore;
|
|
167
176
|
private readonly privateEventStore: PrivateEventStore;
|
|
168
177
|
private readonly simulator: CircuitSimulator;
|
|
169
178
|
private readonly contractSyncService: ContractSyncService;
|
|
170
|
-
private readonly
|
|
179
|
+
private readonly txResolver: TxResolverService;
|
|
171
180
|
private readonly hooks: ExecutionHooks | undefined;
|
|
172
181
|
|
|
173
182
|
constructor(args: ContractFunctionSimulatorArgs) {
|
|
174
183
|
this.contractStore = args.contractStore;
|
|
184
|
+
this.contractClassService = args.contractClassService;
|
|
185
|
+
this.overrides = args.overrides;
|
|
175
186
|
this.noteStore = args.noteStore;
|
|
176
187
|
this.keyStore = args.keyStore;
|
|
177
188
|
this.addressStore = args.addressStore;
|
|
@@ -179,12 +190,13 @@ export class ContractFunctionSimulator {
|
|
|
179
190
|
this.l2TipsStore = args.l2TipsStore;
|
|
180
191
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
181
192
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
182
|
-
this.
|
|
193
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
183
194
|
this.capsuleStore = args.capsuleStore;
|
|
195
|
+
this.factStore = args.factStore;
|
|
184
196
|
this.privateEventStore = args.privateEventStore;
|
|
185
197
|
this.simulator = args.simulator;
|
|
186
198
|
this.contractSyncService = args.contractSyncService;
|
|
187
|
-
this.
|
|
199
|
+
this.txResolver = args.txResolver;
|
|
188
200
|
this.hooks = args.hooks;
|
|
189
201
|
this.log = createLogger('simulator');
|
|
190
202
|
}
|
|
@@ -196,9 +208,7 @@ export class ContractFunctionSimulator {
|
|
|
196
208
|
public async run(
|
|
197
209
|
request: TxExecutionRequest,
|
|
198
210
|
{
|
|
199
|
-
|
|
200
|
-
selector,
|
|
201
|
-
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
211
|
+
msgSender = AztecAddress.NULL_MSG_SENDER,
|
|
202
212
|
anchorBlockHeader,
|
|
203
213
|
senderForTags,
|
|
204
214
|
scopes,
|
|
@@ -207,18 +217,30 @@ export class ContractFunctionSimulator {
|
|
|
207
217
|
): Promise<PrivateExecutionResult> {
|
|
208
218
|
const simulatorSetupTimer = new Timer();
|
|
209
219
|
|
|
210
|
-
const
|
|
220
|
+
const contractAddress = request.origin;
|
|
211
221
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
222
|
+
const anchoredContractData = new AnchoredContractData(
|
|
223
|
+
this.contractStore,
|
|
224
|
+
this.contractClassService,
|
|
225
|
+
anchorBlockHeader,
|
|
226
|
+
this.overrides,
|
|
227
|
+
);
|
|
215
228
|
|
|
216
|
-
|
|
229
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
230
|
+
contractAddress,
|
|
231
|
+
request.functionSelector,
|
|
232
|
+
);
|
|
233
|
+
if (!entryPointArtifact) {
|
|
217
234
|
throw new Error(
|
|
218
|
-
`
|
|
235
|
+
`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
|
|
236
|
+
`Register it via wallet.registerContract(...).`,
|
|
219
237
|
);
|
|
220
238
|
}
|
|
221
239
|
|
|
240
|
+
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
241
|
+
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
242
|
+
}
|
|
243
|
+
|
|
222
244
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
223
245
|
const startSideEffectCounter = 2;
|
|
224
246
|
|
|
@@ -241,6 +263,7 @@ export class ContractFunctionSimulator {
|
|
|
241
263
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
242
264
|
argsHash: request.firstCallArgsHash,
|
|
243
265
|
txContext: request.txContext,
|
|
266
|
+
txRequestSalt: request.salt,
|
|
244
267
|
callContext,
|
|
245
268
|
anchorBlockHeader,
|
|
246
269
|
utilityExecutor: async (call, execScopes) => {
|
|
@@ -251,17 +274,18 @@ export class ContractFunctionSimulator {
|
|
|
251
274
|
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
252
275
|
noteCache,
|
|
253
276
|
taggingIndexCache,
|
|
254
|
-
|
|
277
|
+
anchoredContractData,
|
|
255
278
|
noteStore: this.noteStore,
|
|
256
279
|
keyStore: this.keyStore,
|
|
257
280
|
addressStore: this.addressStore,
|
|
258
281
|
aztecNode: this.aztecNode,
|
|
259
282
|
senderTaggingStore: this.senderTaggingStore,
|
|
260
283
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
261
|
-
|
|
284
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
262
285
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
286
|
+
factService: new FactService(this.factStore, scopes),
|
|
263
287
|
privateEventStore: this.privateEventStore,
|
|
264
|
-
|
|
288
|
+
txResolver: this.txResolver,
|
|
265
289
|
contractSyncService: this.contractSyncService,
|
|
266
290
|
jobId,
|
|
267
291
|
totalPublicCalldataCount: 0,
|
|
@@ -290,8 +314,7 @@ export class ContractFunctionSimulator {
|
|
|
290
314
|
);
|
|
291
315
|
const simulatorTeardownTimer = new Timer();
|
|
292
316
|
|
|
293
|
-
noteCache.
|
|
294
|
-
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
317
|
+
const firstNullifier = noteCache.getNonceGenerator();
|
|
295
318
|
|
|
296
319
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
297
320
|
r.publicInputs.publicCallRequests
|
|
@@ -314,9 +337,9 @@ export class ContractFunctionSimulator {
|
|
|
314
337
|
}
|
|
315
338
|
|
|
316
339
|
// Not to be confused with a PrivateCallExecutionResult. This is a superset
|
|
317
|
-
// of the PrivateCallExecutionResult, containing also
|
|
340
|
+
// of the PrivateCallExecutionResult, containing also firstNullifier
|
|
318
341
|
// and publicFunctionsCalldata.
|
|
319
|
-
return new PrivateExecutionResult(executionResult,
|
|
342
|
+
return new PrivateExecutionResult(executionResult, firstNullifier, publicFunctionsCalldata);
|
|
320
343
|
} catch (err) {
|
|
321
344
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
322
345
|
}
|
|
@@ -325,10 +348,6 @@ export class ContractFunctionSimulator {
|
|
|
325
348
|
/**
|
|
326
349
|
* Runs a utility function.
|
|
327
350
|
* @param call - The function call to execute.
|
|
328
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
329
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
330
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
331
|
-
* accounts if not specified.
|
|
332
351
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
333
352
|
*/
|
|
334
353
|
public async runUtility(
|
|
@@ -338,7 +357,20 @@ export class ContractFunctionSimulator {
|
|
|
338
357
|
scopes: AztecAddress[],
|
|
339
358
|
jobId: string,
|
|
340
359
|
): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
|
|
341
|
-
const
|
|
360
|
+
const anchoredContractData = new AnchoredContractData(
|
|
361
|
+
this.contractStore,
|
|
362
|
+
this.contractClassService,
|
|
363
|
+
anchorBlockHeader,
|
|
364
|
+
this.overrides,
|
|
365
|
+
);
|
|
366
|
+
|
|
367
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
368
|
+
if (!entryPointArtifact) {
|
|
369
|
+
throw new Error(
|
|
370
|
+
`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
|
|
371
|
+
`Register it via wallet.registerContract(...).`,
|
|
372
|
+
);
|
|
373
|
+
}
|
|
342
374
|
|
|
343
375
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
344
376
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
@@ -349,20 +381,26 @@ export class ContractFunctionSimulator {
|
|
|
349
381
|
};
|
|
350
382
|
|
|
351
383
|
const oracle = new UtilityExecutionOracle({
|
|
352
|
-
|
|
384
|
+
callContext: CallContext.from({
|
|
385
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
386
|
+
contractAddress: call.to,
|
|
387
|
+
functionSelector: call.selector,
|
|
388
|
+
isStaticCall: true,
|
|
389
|
+
}),
|
|
353
390
|
authWitnesses: authwits,
|
|
354
391
|
capsules: [],
|
|
355
392
|
anchorBlockHeader,
|
|
356
|
-
|
|
393
|
+
anchoredContractData,
|
|
357
394
|
noteStore: this.noteStore,
|
|
358
395
|
keyStore: this.keyStore,
|
|
359
396
|
addressStore: this.addressStore,
|
|
360
397
|
aztecNode: this.aztecNode,
|
|
361
398
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
362
|
-
|
|
399
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
363
400
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
401
|
+
factService: new FactService(this.factStore, scopes),
|
|
364
402
|
privateEventStore: this.privateEventStore,
|
|
365
|
-
|
|
403
|
+
txResolver: this.txResolver,
|
|
366
404
|
contractSyncService: this.contractSyncService,
|
|
367
405
|
l2TipsStore: this.l2TipsStore,
|
|
368
406
|
jobId,
|
|
@@ -617,12 +655,12 @@ export async function generateSimulatedProvingResult(
|
|
|
617
655
|
siloedNullifiers,
|
|
618
656
|
minRevertibleSideEffectCounter,
|
|
619
657
|
);
|
|
658
|
+
// The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
|
|
659
|
+
// init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
|
|
660
|
+
// the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
|
|
661
|
+
// nullifier.
|
|
620
662
|
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
621
|
-
|
|
622
|
-
nonRevertibleNullifiers.push(nonceGenerator);
|
|
623
|
-
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
624
|
-
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
625
|
-
}
|
|
663
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
626
664
|
|
|
627
665
|
if (isPrivateOnlyTx) {
|
|
628
666
|
// We must make the note hashes unique by using the
|
|
@@ -885,6 +923,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
|
|
|
885
923
|
);
|
|
886
924
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
887
925
|
|
|
926
|
+
if (isPrivateOnlyTx) {
|
|
927
|
+
// The public data write that the private tx base rollup always performs to update the fee payer's balance.
|
|
928
|
+
meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
|
|
929
|
+
}
|
|
930
|
+
|
|
888
931
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
889
932
|
|
|
890
933
|
if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
|
|
@@ -43,12 +43,6 @@ export class ExecutionNoteCache {
|
|
|
43
43
|
|
|
44
44
|
private inRevertiblePhase = false;
|
|
45
45
|
|
|
46
|
-
/**
|
|
47
|
-
* Whether the protocol nullifier was used for nonce generation.
|
|
48
|
-
* We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
|
|
49
|
-
*/
|
|
50
|
-
private usedProtocolNullifierForNonces: boolean | undefined;
|
|
51
|
-
|
|
52
46
|
constructor(private readonly protocolNullifier: Fr) {}
|
|
53
47
|
|
|
54
48
|
/**
|
|
@@ -64,12 +58,9 @@ export class ExecutionNoteCache {
|
|
|
64
58
|
this.inRevertiblePhase = true;
|
|
65
59
|
this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
// we don't want to use them as the nonce generator.
|
|
71
|
-
this.usedProtocolNullifierForNonces = nullifiers.length === 0;
|
|
72
|
-
const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
|
|
61
|
+
// The protocol nullifier is always the tx's first nullifier (injected by the kernel init), so it is the
|
|
62
|
+
// nonce generator for every note hash.
|
|
63
|
+
const nonceGenerator = this.protocolNullifier;
|
|
73
64
|
|
|
74
65
|
// The existing pending notes are all non-revertible.
|
|
75
66
|
// They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
|
|
@@ -102,14 +93,6 @@ export class ExecutionNoteCache {
|
|
|
102
93
|
return sideEffectCounter >= this.minRevertibleSideEffectCounter;
|
|
103
94
|
}
|
|
104
95
|
|
|
105
|
-
public finish() {
|
|
106
|
-
// If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
|
|
107
|
-
// nullifier as the nonce generator.
|
|
108
|
-
if (!this.inRevertiblePhase) {
|
|
109
|
-
this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
96
|
/**
|
|
114
97
|
* Add a new note to cache.
|
|
115
98
|
* @param note - New note created during execution.
|
|
@@ -223,19 +206,15 @@ export class ExecutionNoteCache {
|
|
|
223
206
|
}
|
|
224
207
|
|
|
225
208
|
/**
|
|
226
|
-
* @returns All nullifiers
|
|
227
|
-
*
|
|
209
|
+
* @returns All nullifiers of the transaction: the protocol nullifier (the kernel-injected first nullifier),
|
|
210
|
+
* followed by those emitted by private calls.
|
|
228
211
|
*/
|
|
229
212
|
getAllNullifiers(): Fr[] {
|
|
230
|
-
|
|
231
|
-
throw new Error('usedProtocolNullifierForNonces is not set yet. Call finish() to complete the transaction.');
|
|
232
|
-
}
|
|
233
|
-
const allNullifiers = this.getEmittedNullifiers();
|
|
234
|
-
return [...(this.usedProtocolNullifierForNonces ? [this.protocolNullifier] : []), ...allNullifiers];
|
|
213
|
+
return [this.protocolNullifier, ...this.getEmittedNullifiers()];
|
|
235
214
|
}
|
|
236
215
|
|
|
237
216
|
getNonceGenerator(): Fr {
|
|
238
|
-
return this.
|
|
217
|
+
return this.protocolNullifier;
|
|
239
218
|
}
|
|
240
219
|
|
|
241
220
|
#recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|
|
@@ -1,40 +1,47 @@
|
|
|
1
1
|
export {
|
|
2
2
|
ORACLE_REGISTRY,
|
|
3
3
|
makeEntry,
|
|
4
|
-
type HandlersForPrefix,
|
|
5
4
|
type NamedValue,
|
|
6
5
|
type OracleRegistryEntry,
|
|
7
6
|
type ParamTypes,
|
|
8
|
-
type StripOraclePrefix,
|
|
9
7
|
} from './oracle/oracle_registry.js';
|
|
10
8
|
export {
|
|
11
9
|
ARRAY,
|
|
12
10
|
AZTEC_ADDRESS,
|
|
13
11
|
BIGINT,
|
|
12
|
+
BLOCK_HASH,
|
|
14
13
|
BLOCK_NUMBER,
|
|
15
14
|
BOOL,
|
|
16
15
|
BOUNDED_VEC,
|
|
17
16
|
BUFFER,
|
|
18
17
|
BYTE,
|
|
18
|
+
CONTRACT_INSTANCE,
|
|
19
19
|
DELIVERY_MODE,
|
|
20
20
|
EPHEMERAL_ARRAY,
|
|
21
|
+
ETH_ADDRESS,
|
|
21
22
|
EVENT_VALIDATION_REQUEST,
|
|
22
23
|
FIELD,
|
|
24
|
+
FIXED_ARRAY,
|
|
23
25
|
FUNCTION_SELECTOR,
|
|
24
26
|
LOG_RETRIEVAL_REQUEST,
|
|
25
27
|
LOG_RETRIEVAL_RESPONSE,
|
|
26
28
|
MEMBERSHIP_WITNESS,
|
|
27
|
-
|
|
29
|
+
NOTE_SELECTOR,
|
|
28
30
|
NOTE_VALIDATION_REQUEST,
|
|
29
31
|
OPTION,
|
|
30
32
|
PENDING_TAGGED_LOG,
|
|
31
33
|
POINT,
|
|
32
34
|
PROVIDED_SECRET,
|
|
35
|
+
SLOT_NUMBER,
|
|
33
36
|
STR,
|
|
37
|
+
STRUCT,
|
|
34
38
|
U32,
|
|
39
|
+
tryFieldWidth,
|
|
35
40
|
type InputSlot,
|
|
36
41
|
type MaybePromise,
|
|
37
42
|
type OutputSlot,
|
|
43
|
+
type SlotShape,
|
|
44
|
+
type StructField,
|
|
38
45
|
type TypeMapping,
|
|
39
46
|
} from './oracle/oracle_type_mappings.js';
|
|
40
47
|
export { ExecutionNoteCache } from './execution_note_cache.js';
|
|
@@ -42,22 +49,30 @@ export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
|
42
49
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
43
50
|
export { pickNotes } from './pick_notes.js';
|
|
44
51
|
export type { IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
|
|
52
|
+
export type { FactCollection } from './noir-structs/fact_collection.js';
|
|
45
53
|
export type { NoteData } from './noir-structs/note_data.js';
|
|
46
|
-
export {
|
|
47
|
-
export {
|
|
54
|
+
export type { ResolvedTaggingStrategy } from './noir-structs/resolved_tagging_strategy.js';
|
|
55
|
+
export type { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
|
|
56
|
+
export { TxResolverService } from '../messages/tx_resolver_service.js';
|
|
48
57
|
export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
49
58
|
export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
50
59
|
export { buildACIRCallback, UnavailableOracleError } from './oracle/acir_callback.js';
|
|
60
|
+
export { LEGACY_ORACLE_REGISTRY } from './oracle/legacy_oracle_registry.js';
|
|
51
61
|
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
52
62
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
53
63
|
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
54
64
|
export { BoundedVec } from './noir-structs/bounded_vec.js';
|
|
65
|
+
export type { ContractClassLogData } from './noir-structs/contract_class_log_data.js';
|
|
66
|
+
export type { EmbeddedCurvePoint } from './noir-structs/embedded_curve_point.js';
|
|
55
67
|
export { EphemeralArray } from './noir-structs/ephemeral_array.js';
|
|
56
68
|
export { Option } from './noir-structs/option.js';
|
|
57
|
-
export { UtilityContext } from './noir-structs/utility_context.js';
|
|
69
|
+
export type { UtilityContext } from './noir-structs/utility_context.js';
|
|
58
70
|
export { EventValidationRequest } from './noir-structs/event_validation_request.js';
|
|
59
|
-
export { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
60
|
-
export { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
71
|
+
export type { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
72
|
+
export type { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
61
73
|
export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
|
|
62
|
-
export {
|
|
74
|
+
export type { PendingTaggedLog } from './noir-structs/pending_tagged_log.js';
|
|
75
|
+
export type { TxEffectData } from './noir-structs/tx_effect_data.js';
|
|
76
|
+
export type { ProvidedSecret } from './noir-structs/provided_secret.js';
|
|
77
|
+
export { ResolvedTx } from './noir-structs/resolved_tx.js';
|
|
63
78
|
export { TransientArrayService } from './transient_array_service.js';
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`.
|
|
3
|
-
*
|
|
4
|
-
* Carries the actual `data` plus wire-format metadata (`maxLength`, `elementSize`) so the ACVM
|
|
5
|
-
* serializer can pad the storage slot to exactly `maxLength * elementSize` fields.
|
|
6
|
-
*/
|
|
1
|
+
/** TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`. */
|
|
7
2
|
export class BoundedVec<T> {
|
|
8
3
|
private constructor(
|
|
9
4
|
public readonly data: T[],
|
|
@@ -15,16 +10,11 @@ export class BoundedVec<T> {
|
|
|
15
10
|
* Construct a BoundedVec with data.
|
|
16
11
|
*
|
|
17
12
|
* @param data - Actual elements. Length must be `<= maxLength`.
|
|
18
|
-
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
19
|
-
*
|
|
20
|
-
* @param elementSize - Number of Fr fields each element contributes when serialized.
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* @example A bounded vec of bytes (elementSize defaults to 1):
|
|
25
|
-
* ```ts
|
|
26
|
-
* BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
|
|
27
|
-
* ```
|
|
13
|
+
* @param maxLength - Maximum capacity declared at the Noir call site. The storage slot is padded to this many
|
|
14
|
+
* elements.
|
|
15
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized. Only consulted for
|
|
16
|
+
* variable-width elements whose width isn't statically known from their shape (e.g. a packed note spanning
|
|
17
|
+
* `packedHintedNoteLength` fields); fixed-width elements derive it from the shape, so it can be omitted.
|
|
28
18
|
*
|
|
29
19
|
* @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
|
|
30
20
|
* ```ts
|
|
@@ -43,13 +33,11 @@ export class BoundedVec<T> {
|
|
|
43
33
|
return new BoundedVec<T>(data, maxLength, elementSize);
|
|
44
34
|
}
|
|
45
35
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
static empty<T>({ maxLength, elementSize = 1 }: { maxLength: number; elementSize?: number }): BoundedVec<T> {
|
|
53
|
-
return new BoundedVec<T>([], maxLength, elementSize);
|
|
36
|
+
equals(other: BoundedVec<T>, innerEquals: (a: T, b: T) => boolean): boolean {
|
|
37
|
+
return (
|
|
38
|
+
this.maxLength === other.maxLength &&
|
|
39
|
+
this.data.length === other.data.length &&
|
|
40
|
+
this.data.every((value, i) => innerEquals(value, other.data[i]))
|
|
41
|
+
);
|
|
54
42
|
}
|
|
55
43
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
|
|
4
|
+
/** Wire form of a contract class log. */
|
|
5
|
+
export type ContractClassLogData = {
|
|
6
|
+
contractAddress: AztecAddress;
|
|
7
|
+
fields: Fr[];
|
|
8
|
+
emittedLength: number;
|
|
9
|
+
};
|
|
@@ -21,7 +21,7 @@ export class EventValidationRequest {
|
|
|
21
21
|
static fromFields(fields: Fr[] | FieldReader): EventValidationRequest {
|
|
22
22
|
const reader = FieldReader.asReader(fields);
|
|
23
23
|
|
|
24
|
-
const contractAddress = AztecAddress.
|
|
24
|
+
const contractAddress = AztecAddress.fromFieldUnsafe(reader.readField());
|
|
25
25
|
const eventTypeId = EventSelector.fromField(reader.readField());
|
|
26
26
|
|
|
27
27
|
const randomness = reader.readField();
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
|
|
3
|
+
import type { RetractableFactOrigin } from '../../storage/fact_store/index.js';
|
|
4
|
+
import type { EphemeralArray } from './ephemeral_array.js';
|
|
5
|
+
import type { Option } from './option.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A single fact returned within a fact collection by the fact store oracles.
|
|
9
|
+
*
|
|
10
|
+
* A TS version of the `Fact` struct in `facts/mod.nr`. `originBlock` is `Some` for a retractable fact (carrying its
|
|
11
|
+
* origin block's current chain state) and `None` for a non-retractable one.
|
|
12
|
+
*/
|
|
13
|
+
export type Fact = { factTypeId: Fr; payload: EphemeralArray<Fr>; originBlock: Option<RetractableFactOrigin> };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
|
|
4
|
+
import type { FactWithOriginState, RetractableFactOrigin } from '../../storage/fact_store/index.js';
|
|
5
|
+
import { OriginBlockState } from '../../storage/fact_store/index.js';
|
|
6
|
+
import type { EphemeralArrayService } from '../ephemeral_array_service.js';
|
|
7
|
+
import { EphemeralArray } from './ephemeral_array.js';
|
|
8
|
+
import type { Fact } from './fact.js';
|
|
9
|
+
import { Option } from './option.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* A fact collection.
|
|
13
|
+
*/
|
|
14
|
+
export type FactCollection = {
|
|
15
|
+
contractAddress: AztecAddress;
|
|
16
|
+
scope: AztecAddress;
|
|
17
|
+
factCollectionTypeId: Fr;
|
|
18
|
+
factCollectionId: Fr;
|
|
19
|
+
facts: EphemeralArray<Fact>;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Builds the Noir-facing `FactCollection` from stored facts.
|
|
24
|
+
*/
|
|
25
|
+
export function toNoirFactCollection(
|
|
26
|
+
service: EphemeralArrayService,
|
|
27
|
+
contractAddress: AztecAddress,
|
|
28
|
+
scope: AztecAddress,
|
|
29
|
+
factCollectionTypeId: Fr,
|
|
30
|
+
factCollectionId: Fr,
|
|
31
|
+
facts: FactWithOriginState[],
|
|
32
|
+
): FactCollection {
|
|
33
|
+
return {
|
|
34
|
+
contractAddress,
|
|
35
|
+
scope,
|
|
36
|
+
factCollectionTypeId,
|
|
37
|
+
factCollectionId,
|
|
38
|
+
facts: EphemeralArray.fromValues(
|
|
39
|
+
service,
|
|
40
|
+
facts.map(
|
|
41
|
+
(fact: FactWithOriginState): Fact => ({
|
|
42
|
+
factTypeId: fact.factTypeId,
|
|
43
|
+
payload: EphemeralArray.fromValues(service, fact.payload),
|
|
44
|
+
originBlock: fact.originBlock
|
|
45
|
+
? Option.some(fact.originBlock)
|
|
46
|
+
: Option.none<RetractableFactOrigin>({
|
|
47
|
+
blockNumber: 0,
|
|
48
|
+
blockHash: Fr.ZERO,
|
|
49
|
+
blockState: OriginBlockState.Pending,
|
|
50
|
+
}),
|
|
51
|
+
}),
|
|
52
|
+
),
|
|
53
|
+
),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* A zeroed `FactCollection` used only as a serialization shape template for the `None` case of
|
|
59
|
+
* `Option<FactCollection>`. Noir's `Option<T>` is fixed-width on the wire, so `None` must emit the same number of
|
|
60
|
+
* (zeroed) field slots as `Some`.
|
|
61
|
+
**/
|
|
62
|
+
export function emptyFactCollection(service: EphemeralArrayService): FactCollection {
|
|
63
|
+
return toNoirFactCollection(service, AztecAddress.ZERO, AztecAddress.ZERO, Fr.ZERO, Fr.ZERO, []);
|
|
64
|
+
}
|