@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
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isProtocolContract } from '@aztec/protocol-contracts';
|
|
2
|
+
export async function syncScope(contractAddress, contractStore, contractClassService, anchorBlockHeader, functionToInvokeAfterSync, utilityExecutor, scope) {
|
|
3
|
+
// Protocol contracts don't have private state to sync
|
|
4
|
+
if (isProtocolContract(contractAddress)) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const classId = await contractClassService.getCurrentClassId(contractAddress, anchorBlockHeader);
|
|
8
|
+
if (!classId) {
|
|
9
|
+
throw new Error(`Cannot sync contract ${contractAddress}: its instance is not registered nor published.`);
|
|
10
|
+
}
|
|
11
|
+
const syncStateFunctionCall = await contractStore.getFunctionCall('sync_state', [
|
|
12
|
+
scope
|
|
13
|
+
], contractAddress, classId);
|
|
14
|
+
if (functionToInvokeAfterSync && functionToInvokeAfterSync.equals(syncStateFunctionCall.selector)) {
|
|
15
|
+
throw new Error('Forbidden `sync_state` invocation. `sync_state` can only be invoked by PXE, manual execution can lead to inconsistencies.');
|
|
16
|
+
}
|
|
17
|
+
await utilityExecutor(syncStateFunctionCall, [
|
|
18
|
+
scope
|
|
19
|
+
]);
|
|
20
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { FunctionArtifactWithContractName, FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import type { ContractInstancePreimageWithAddress } from '@aztec/stdlib/contract';
|
|
5
|
+
import type { BlockHeader, ContractOverrides } from '@aztec/stdlib/tx';
|
|
6
|
+
import type { ContractClassService } from '../contract/contract_class_service.js';
|
|
7
|
+
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
8
|
+
/**
|
|
9
|
+
* Per-run view of contract data for a single simulation, bound to its anchor block.
|
|
10
|
+
*
|
|
11
|
+
* The {@link ContractStore} is pure class-id-keyed storage and has no notion of which class an address runs. This
|
|
12
|
+
* class bridges that gap: it resolves an address to its current class id (via the {@link ContractClassService}
|
|
13
|
+
* at the run's anchor block) and then serves artifacts from the store. It is also the single place contract
|
|
14
|
+
* overrides are applied — when an address is overridden, both its instance and its class id come from the override
|
|
15
|
+
* rather than the chain, so a simulation can execute different bytecode at that address. Overrides are only set for
|
|
16
|
+
* `simulateTx` (which skips the kernels), so the override path never reaches proving.
|
|
17
|
+
*/
|
|
18
|
+
export declare class AnchoredContractData {
|
|
19
|
+
private readonly store;
|
|
20
|
+
private readonly contractClassService;
|
|
21
|
+
private readonly anchorBlockHeader;
|
|
22
|
+
private readonly overrides?;
|
|
23
|
+
constructor(store: ContractStore, contractClassService: ContractClassService, anchorBlockHeader: BlockHeader, overrides?: ContractOverrides | undefined);
|
|
24
|
+
/** Returns the address preimage of the instance at `address`, from the override if any, else from storage. */
|
|
25
|
+
getContractInstance(address: AztecAddress): Promise<ContractInstancePreimageWithAddress | undefined>;
|
|
26
|
+
/**
|
|
27
|
+
* Resolves the class id `address` runs in this simulation: the override's class if overridden, else resolved against
|
|
28
|
+
* the chain at the anchor block.
|
|
29
|
+
*/
|
|
30
|
+
getCurrentClassId(address: AztecAddress): Promise<Fr | undefined>;
|
|
31
|
+
getFunctionArtifact(address: AztecAddress, selector: FunctionSelector): Promise<FunctionArtifactWithContractName | undefined>;
|
|
32
|
+
getFunctionArtifactWithDebugMetadata(address: AztecAddress, selector: FunctionSelector): Promise<FunctionArtifactWithContractName | undefined>;
|
|
33
|
+
getDebugContractName(address: AztecAddress): Promise<string | undefined>;
|
|
34
|
+
getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yZWRfY29udHJhY3RfZGF0YS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0X2Z1bmN0aW9uX3NpbXVsYXRvci9hbmNob3JlZF9jb250cmFjdF9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV2RSxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRWpGOzs7Ozs7Ozs7R0FTRztBQUNILHFCQUFhLG9CQUFvQjtJQUU3QixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7SUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7SUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7SUFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFKN0IsWUFDbUIsS0FBSyxFQUFFLGFBQWEsRUFDcEIsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQzFDLGlCQUFpQixFQUFFLFdBQVcsRUFDOUIsU0FBUyxDQUFDLCtCQUFtQixFQUM1QztJQUVKLDhHQUE4RztJQUM5RyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxtQ0FBbUMsR0FBRyxTQUFTLENBQUMsQ0FNbkc7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBTWhFO0lBRUssbUJBQW1CLENBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQ3JCLFFBQVEsRUFBRSxnQkFBZ0IsR0FDekIsT0FBTyxDQUFDLGdDQUFnQyxHQUFHLFNBQVMsQ0FBQyxDQUd2RDtJQUVLLG9DQUFvQyxDQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUNyQixRQUFRLEVBQUUsZ0JBQWdCLEdBQ3pCLE9BQU8sQ0FBQyxnQ0FBZ0MsR0FBRyxTQUFTLENBQUMsQ0FHdkQ7SUFFSyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRzdFO0lBRUssb0JBQW9CLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUc3RjtDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchored_contract_data.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/anchored_contract_data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAEjF;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAJ7B,YACmB,KAAK,EAAE,aAAa,EACpB,oBAAoB,EAAE,oBAAoB,EAC1C,iBAAiB,EAAE,WAAW,EAC9B,SAAS,CAAC,+BAAmB,EAC5C;IAEJ,8GAA8G;IAC9G,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,mCAAmC,GAAG,SAAS,CAAC,CAMnG;IAED;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAMhE;IAEK,mBAAmB,CACvB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,gCAAgC,GAAG,SAAS,CAAC,CAGvD;IAEK,oCAAoC,CACxC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,gCAAgC,GAAG,SAAS,CAAC,CAGvD;IAEK,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7E;IAEK,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7F;CACF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-run view of contract data for a single simulation, bound to its anchor block.
|
|
3
|
+
*
|
|
4
|
+
* The {@link ContractStore} is pure class-id-keyed storage and has no notion of which class an address runs. This
|
|
5
|
+
* class bridges that gap: it resolves an address to its current class id (via the {@link ContractClassService}
|
|
6
|
+
* at the run's anchor block) and then serves artifacts from the store. It is also the single place contract
|
|
7
|
+
* overrides are applied — when an address is overridden, both its instance and its class id come from the override
|
|
8
|
+
* rather than the chain, so a simulation can execute different bytecode at that address. Overrides are only set for
|
|
9
|
+
* `simulateTx` (which skips the kernels), so the override path never reaches proving.
|
|
10
|
+
*/ export class AnchoredContractData {
|
|
11
|
+
store;
|
|
12
|
+
contractClassService;
|
|
13
|
+
anchorBlockHeader;
|
|
14
|
+
overrides;
|
|
15
|
+
constructor(store, contractClassService, anchorBlockHeader, overrides){
|
|
16
|
+
this.store = store;
|
|
17
|
+
this.contractClassService = contractClassService;
|
|
18
|
+
this.anchorBlockHeader = anchorBlockHeader;
|
|
19
|
+
this.overrides = overrides;
|
|
20
|
+
}
|
|
21
|
+
/** Returns the address preimage of the instance at `address`, from the override if any, else from storage. */ getContractInstance(address) {
|
|
22
|
+
const override = this.overrides?.[address.toString()];
|
|
23
|
+
if (override) {
|
|
24
|
+
return Promise.resolve(override.instance);
|
|
25
|
+
}
|
|
26
|
+
return this.store.getContractInstance(address);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolves the class id `address` runs in this simulation: the override's class if overridden, else resolved against
|
|
30
|
+
* the chain at the anchor block.
|
|
31
|
+
*/ getCurrentClassId(address) {
|
|
32
|
+
const override = this.overrides?.[address.toString()];
|
|
33
|
+
if (override) {
|
|
34
|
+
return Promise.resolve(override.instance.currentContractClassId);
|
|
35
|
+
}
|
|
36
|
+
return this.contractClassService.getCurrentClassId(address, this.anchorBlockHeader);
|
|
37
|
+
}
|
|
38
|
+
async getFunctionArtifact(address, selector) {
|
|
39
|
+
const classId = await this.getCurrentClassId(address);
|
|
40
|
+
return classId ? this.store.getFunctionArtifact(classId, selector) : undefined;
|
|
41
|
+
}
|
|
42
|
+
async getFunctionArtifactWithDebugMetadata(address, selector) {
|
|
43
|
+
const classId = await this.getCurrentClassId(address);
|
|
44
|
+
return classId ? this.store.getFunctionArtifactWithDebugMetadata(classId, selector) : undefined;
|
|
45
|
+
}
|
|
46
|
+
async getDebugContractName(address) {
|
|
47
|
+
const classId = await this.getCurrentClassId(address);
|
|
48
|
+
return classId ? this.store.getDebugContractName(classId) : undefined;
|
|
49
|
+
}
|
|
50
|
+
async getDebugFunctionName(address, selector) {
|
|
51
|
+
const classId = await this.getCurrentClassId(address);
|
|
52
|
+
return classId ? this.store.getDebugFunctionName(classId, selector) : `${address}:${selector}`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import type { BlockHash, BlockParameter } from '@aztec/stdlib/block';
|
|
4
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
import type { TxHash } from '@aztec/stdlib/tx';
|
|
6
|
+
/**
|
|
7
|
+
* Per-execution cache for immutable Aztec node reads.
|
|
8
|
+
*/
|
|
9
|
+
export declare class AztecNodeReadCache {
|
|
10
|
+
#private;
|
|
11
|
+
private readonly aztecNode;
|
|
12
|
+
private readonly cache;
|
|
13
|
+
constructor(aztecNode: AztecNode);
|
|
14
|
+
/** Fetches a block without reissuing the same node request. */
|
|
15
|
+
getBlock(block: BlockParameter): Promise<{
|
|
16
|
+
header: import("@aztec/stdlib/tx").BlockHeader;
|
|
17
|
+
archive: import("@aztec/stdlib/trees").AppendOnlyTreeSnapshot;
|
|
18
|
+
hash: BlockHash;
|
|
19
|
+
checkpointNumber: import("@aztec/foundation/branded-types").CheckpointNumber;
|
|
20
|
+
indexWithinCheckpoint: import("@aztec/foundation/branded-types").IndexWithinCheckpoint;
|
|
21
|
+
number: import("@aztec/foundation/branded-types").BlockNumber;
|
|
22
|
+
body?: import("@aztec/stdlib/block").Body | undefined;
|
|
23
|
+
l1?: import("@aztec/stdlib/interfaces/server").L1PublishInfo | undefined;
|
|
24
|
+
attestations?: import("@aztec/stdlib/block").CommitteeAttestation[] | undefined;
|
|
25
|
+
} | undefined>;
|
|
26
|
+
/** Fetches a transaction receipt with its effect attached. */
|
|
27
|
+
getTxReceiptWithEffect(txHash: TxHash): Promise<import("@aztec/stdlib/tx").TxReceipt<{
|
|
28
|
+
readonly includeTxEffect: true;
|
|
29
|
+
}>>;
|
|
30
|
+
/** Fetches an archive-tree witness for a block hash. */
|
|
31
|
+
getBlockHashMembershipWitness(referenceBlock: BlockParameter, blockHash: BlockHash): Promise<import("@aztec/foundation/trees").MembershipWitness<30> | undefined>;
|
|
32
|
+
/** Fetches a public-data-tree witness for a leaf slot. */
|
|
33
|
+
getPublicDataWitness(referenceBlock: BlockParameter, leafSlot: Fr): Promise<import("@aztec/stdlib/trees").PublicDataWitness | undefined>;
|
|
34
|
+
/** Fetches public storage for a single slot. */
|
|
35
|
+
getPublicStorageAt(referenceBlock: BlockParameter, contractAddress: AztecAddress, storageSlot: Fr): Promise<Fr>;
|
|
36
|
+
/** Fetches a contiguous public storage range, reusing cached reads for overlapping slots. */
|
|
37
|
+
getPublicStorageRange(referenceBlock: BlockParameter, contractAddress: AztecAddress, startStorageSlot: Fr, numberOfElements: number): Promise<Fr[]>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfbm9kZV9yZWFkX2NhY2hlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL2F6dGVjX25vZGVfcmVhZF9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DOztHQUVHO0FBQ0gscUJBQWEsa0JBQWtCOztJQUdqQixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7SUFGdEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQXVDO0lBRTdELFlBQTZCLFNBQVMsRUFBRSxTQUFTLEVBQUk7SUFFckQsK0RBQStEO0lBQ3hELFFBQVEsQ0FBQyxLQUFLLEVBQUUsY0FBYzs7Ozs7Ozs7OzttQkFFcEM7SUFFRCw4REFBOEQ7SUFDdkQsc0JBQXNCLENBQUMsTUFBTSxFQUFFLE1BQU07O1FBSTNDO0lBRUQsd0RBQXdEO0lBQ2pELDZCQUE2QixDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFNBQVMsZ0ZBS3hGO0lBRUQsMERBQTBEO0lBQ25ELG9CQUFvQixDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLEVBQUUsd0VBSXZFO0lBRUQsZ0RBQWdEO0lBQ3pDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxlQUt2RztJQUVELDZGQUE2RjtJQUN0RixxQkFBcUIsQ0FDMUIsY0FBYyxFQUFFLGNBQWMsRUFDOUIsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUsRUFBRSxFQUNwQixnQkFBZ0IsRUFBRSxNQUFNLGlCQU96QjtDQTJCRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aztec_node_read_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/aztec_node_read_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,qBAAa,kBAAkB;;IAGjB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAE7D,YAA6B,SAAS,EAAE,SAAS,EAAI;IAErD,+DAA+D;IACxD,QAAQ,CAAC,KAAK,EAAE,cAAc;;;;;;;;;;mBAEpC;IAED,8DAA8D;IACvD,sBAAsB,CAAC,MAAM,EAAE,MAAM;;QAI3C;IAED,wDAAwD;IACjD,6BAA6B,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,gFAKxF;IAED,0DAA0D;IACnD,oBAAoB,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,wEAIvE;IAED,gDAAgD;IACzC,kBAAkB,CAAC,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,eAKvG;IAED,6FAA6F;IACtF,qBAAqB,CAC1B,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,EAAE,EACpB,gBAAgB,EAAE,MAAM,iBAOzB;CA2BF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
/**
|
|
3
|
+
* Per-execution cache for immutable Aztec node reads.
|
|
4
|
+
*/ export class AztecNodeReadCache {
|
|
5
|
+
aztecNode;
|
|
6
|
+
cache;
|
|
7
|
+
constructor(aztecNode){
|
|
8
|
+
this.aztecNode = aztecNode;
|
|
9
|
+
this.cache = new Map();
|
|
10
|
+
}
|
|
11
|
+
/** Fetches a block without reissuing the same node request. */ getBlock(block) {
|
|
12
|
+
return this.#cachedRead(`block:${this.#keyPart(block)}`, ()=>this.aztecNode.getBlock(block));
|
|
13
|
+
}
|
|
14
|
+
/** Fetches a transaction receipt with its effect attached. */ getTxReceiptWithEffect(txHash) {
|
|
15
|
+
return this.#cachedRead(`tx-receipt-with-effect:${txHash.toString()}`, ()=>this.aztecNode.getTxReceipt(txHash, {
|
|
16
|
+
includeTxEffect: true
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
/** Fetches an archive-tree witness for a block hash. */ getBlockHashMembershipWitness(referenceBlock, blockHash) {
|
|
20
|
+
return this.#cachedRead(`block-hash-membership-witness:${this.#keyPart(referenceBlock)}:${blockHash.toString()}`, ()=>this.aztecNode.getBlockHashMembershipWitness(referenceBlock, blockHash));
|
|
21
|
+
}
|
|
22
|
+
/** Fetches a public-data-tree witness for a leaf slot. */ getPublicDataWitness(referenceBlock, leafSlot) {
|
|
23
|
+
return this.#cachedRead(`public-data-witness:${this.#keyPart(referenceBlock)}:${leafSlot.toString()}`, ()=>this.aztecNode.getPublicDataWitness(referenceBlock, leafSlot));
|
|
24
|
+
}
|
|
25
|
+
/** Fetches public storage for a single slot. */ getPublicStorageAt(referenceBlock, contractAddress, storageSlot) {
|
|
26
|
+
return this.#cachedRead(`public-storage:${this.#keyPart(referenceBlock)}:${contractAddress.toString()}:${storageSlot.toString()}`, ()=>this.aztecNode.getPublicStorageAt(referenceBlock, contractAddress, storageSlot));
|
|
27
|
+
}
|
|
28
|
+
/** Fetches a contiguous public storage range, reusing cached reads for overlapping slots. */ getPublicStorageRange(referenceBlock, contractAddress, startStorageSlot, numberOfElements) {
|
|
29
|
+
const slots = Array(numberOfElements).fill(0).map((_, i)=>new Fr(startStorageSlot.value + BigInt(i)));
|
|
30
|
+
return Promise.all(slots.map((storageSlot)=>this.getPublicStorageAt(referenceBlock, contractAddress, storageSlot)));
|
|
31
|
+
}
|
|
32
|
+
#cachedRead(key, fetch) {
|
|
33
|
+
const cached = this.cache.get(key);
|
|
34
|
+
if (cached) {
|
|
35
|
+
return cached;
|
|
36
|
+
}
|
|
37
|
+
const promise = fetch();
|
|
38
|
+
promise.catch(()=>this.cache.delete(key));
|
|
39
|
+
this.cache.set(key, promise);
|
|
40
|
+
return promise;
|
|
41
|
+
}
|
|
42
|
+
#keyPart(value) {
|
|
43
|
+
if ([
|
|
44
|
+
'string',
|
|
45
|
+
'number',
|
|
46
|
+
'bigint',
|
|
47
|
+
'boolean'
|
|
48
|
+
].includes(typeof value)) {
|
|
49
|
+
return String(value);
|
|
50
|
+
}
|
|
51
|
+
if (value && typeof value === 'object') {
|
|
52
|
+
const toString = value.toString;
|
|
53
|
+
if (toString && toString !== Object.prototype.toString) {
|
|
54
|
+
return toString.call(value);
|
|
55
|
+
}
|
|
56
|
+
return JSON.stringify(value, (_key, nested)=>typeof nested === 'bigint' ? nested.toString() : nested);
|
|
57
|
+
}
|
|
58
|
+
return String(value);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -8,24 +8,22 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
|
8
8
|
import type { L2TipsProvider } from '@aztec/stdlib/block';
|
|
9
9
|
import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
10
10
|
import { type PrivateKernelExecutionProofOutput, PrivateKernelTailCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
11
|
-
import { BlockHeader, type OffchainEffect, PrivateExecutionResult, TxExecutionRequest } from '@aztec/stdlib/tx';
|
|
12
|
-
import type {
|
|
11
|
+
import { BlockHeader, type ContractOverrides, type OffchainEffect, PrivateExecutionResult, TxExecutionRequest } from '@aztec/stdlib/tx';
|
|
12
|
+
import type { ContractClassService } from '../contract/contract_class_service.js';
|
|
13
|
+
import type { ContractSyncService } from '../contract/contract_sync_service.js';
|
|
13
14
|
import type { ExecutionHooks } from '../hooks/index.js';
|
|
14
|
-
import type {
|
|
15
|
+
import type { TxResolverService } from '../messages/tx_resolver_service.js';
|
|
15
16
|
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
16
17
|
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
17
18
|
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
19
|
+
import type { FactStore } from '../storage/fact_store/index.js';
|
|
18
20
|
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
19
21
|
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
20
22
|
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
21
|
-
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
22
23
|
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
24
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
23
25
|
/** Options for ContractFunctionSimulator.run. */
|
|
24
26
|
export type ContractSimulatorRunOpts = {
|
|
25
|
-
/** The address of the contract (should match request.origin). */
|
|
26
|
-
contractAddress: AztecAddress;
|
|
27
|
-
/** The function selector of the entry point. */
|
|
28
|
-
selector: FunctionSelector;
|
|
29
27
|
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
30
28
|
msgSender?: AztecAddress;
|
|
31
29
|
/** The block header to use as base state for this run. */
|
|
@@ -40,6 +38,9 @@ export type ContractSimulatorRunOpts = {
|
|
|
40
38
|
/** Args for ContractFunctionSimulator constructor. */
|
|
41
39
|
export type ContractFunctionSimulatorArgs = {
|
|
42
40
|
contractStore: ContractStore;
|
|
41
|
+
contractClassService: ContractClassService;
|
|
42
|
+
/** Per-simulation contract overrides. */
|
|
43
|
+
overrides?: ContractOverrides;
|
|
43
44
|
noteStore: NoteStore;
|
|
44
45
|
keyStore: KeyStore;
|
|
45
46
|
addressStore: AddressStore;
|
|
@@ -47,12 +48,13 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
47
48
|
l2TipsStore: L2TipsProvider;
|
|
48
49
|
senderTaggingStore: SenderTaggingStore;
|
|
49
50
|
recipientTaggingStore: RecipientTaggingStore;
|
|
50
|
-
|
|
51
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
51
52
|
capsuleStore: CapsuleStore;
|
|
53
|
+
factStore: FactStore;
|
|
52
54
|
privateEventStore: PrivateEventStore;
|
|
53
55
|
simulator: CircuitSimulator;
|
|
54
56
|
contractSyncService: ContractSyncService;
|
|
55
|
-
|
|
57
|
+
txResolver: TxResolverService;
|
|
56
58
|
hooks?: ExecutionHooks;
|
|
57
59
|
};
|
|
58
60
|
/**
|
|
@@ -61,6 +63,8 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
61
63
|
export declare class ContractFunctionSimulator {
|
|
62
64
|
private readonly log;
|
|
63
65
|
private readonly contractStore;
|
|
66
|
+
private readonly contractClassService;
|
|
67
|
+
private readonly overrides;
|
|
64
68
|
private readonly noteStore;
|
|
65
69
|
private readonly keyStore;
|
|
66
70
|
private readonly addressStore;
|
|
@@ -68,26 +72,23 @@ export declare class ContractFunctionSimulator {
|
|
|
68
72
|
private readonly l2TipsStore;
|
|
69
73
|
private readonly senderTaggingStore;
|
|
70
74
|
private readonly recipientTaggingStore;
|
|
71
|
-
private readonly
|
|
75
|
+
private readonly taggingSecretSourcesStore;
|
|
72
76
|
private readonly capsuleStore;
|
|
77
|
+
private readonly factStore;
|
|
73
78
|
private readonly privateEventStore;
|
|
74
79
|
private readonly simulator;
|
|
75
80
|
private readonly contractSyncService;
|
|
76
|
-
private readonly
|
|
81
|
+
private readonly txResolver;
|
|
77
82
|
private readonly hooks;
|
|
78
83
|
constructor(args: ContractFunctionSimulatorArgs);
|
|
79
84
|
/**
|
|
80
85
|
* Runs a private function.
|
|
81
86
|
* @param request - The transaction request.
|
|
82
87
|
*/
|
|
83
|
-
run(request: TxExecutionRequest, {
|
|
88
|
+
run(request: TxExecutionRequest, { msgSender, anchorBlockHeader, senderForTags, scopes, jobId }: ContractSimulatorRunOpts): Promise<PrivateExecutionResult>;
|
|
84
89
|
/**
|
|
85
90
|
* Runs a utility function.
|
|
86
91
|
* @param call - The function call to execute.
|
|
87
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
88
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
89
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
90
|
-
* accounts if not specified.
|
|
91
92
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
92
93
|
*/
|
|
93
94
|
runUtility(call: FunctionCall, authwits: AuthWitness[], anchorBlockHeader: BlockHeader, scopes: AztecAddress[], jobId: string): Promise<{
|
|
@@ -116,4 +117,4 @@ export declare class ContractFunctionSimulator {
|
|
|
116
117
|
* @returns The simulated proving result.
|
|
117
118
|
*/
|
|
118
119
|
export declare function generateSimulatedProvingResult(privateExecutionResult: PrivateExecutionResult, debugFunctionNameGetter: (contractAddress: AztecAddress, functionSelector: FunctionSelector) => Promise<string>, node: AztecNode, minRevertibleSideEffectCounterOverride?: number): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>>;
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL2NvbnRyYWN0X2Z1bmN0aW9uX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQkEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQU90QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQWtCLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTFFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFLTCxLQUFLLGlDQUFpQyxFQUN0QyxvQ0FBb0MsRUFhckMsTUFBTSxzQkFBc0IsQ0FBQztBQUs5QixPQUFPLEVBQ0wsV0FBVyxFQUVYLEtBQUssaUJBQWlCLEVBRXRCLEtBQUssY0FBYyxFQUNuQixzQkFBc0IsRUFFdEIsa0JBQWtCLEVBSW5CLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxN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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS, DA_GAS_PER_FIELD, FIXED_AVM_STARTUP_L2_GAS, L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH, L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_TX_LIFETIME, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
|
|
1
|
+
import { AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS, DA_GAS_PER_FIELD, FIXED_AVM_STARTUP_L2_GAS, L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH, L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_TX_LIFETIME, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_DATA_WRITE_LENGTH, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
|
|
2
2
|
import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -17,6 +17,8 @@ import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
|
17
17
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
18
18
|
import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
|
|
19
19
|
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
20
|
+
import { FactService } from '../storage/fact_store/index.js';
|
|
21
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
20
22
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
21
23
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
22
24
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
@@ -30,6 +32,8 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
30
32
|
*/ export class ContractFunctionSimulator {
|
|
31
33
|
log;
|
|
32
34
|
contractStore;
|
|
35
|
+
contractClassService;
|
|
36
|
+
overrides;
|
|
33
37
|
noteStore;
|
|
34
38
|
keyStore;
|
|
35
39
|
addressStore;
|
|
@@ -37,15 +41,18 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
37
41
|
l2TipsStore;
|
|
38
42
|
senderTaggingStore;
|
|
39
43
|
recipientTaggingStore;
|
|
40
|
-
|
|
44
|
+
taggingSecretSourcesStore;
|
|
41
45
|
capsuleStore;
|
|
46
|
+
factStore;
|
|
42
47
|
privateEventStore;
|
|
43
48
|
simulator;
|
|
44
49
|
contractSyncService;
|
|
45
|
-
|
|
50
|
+
txResolver;
|
|
46
51
|
hooks;
|
|
47
52
|
constructor(args){
|
|
48
53
|
this.contractStore = args.contractStore;
|
|
54
|
+
this.contractClassService = args.contractClassService;
|
|
55
|
+
this.overrides = args.overrides;
|
|
49
56
|
this.noteStore = args.noteStore;
|
|
50
57
|
this.keyStore = args.keyStore;
|
|
51
58
|
this.addressStore = args.addressStore;
|
|
@@ -53,27 +60,30 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
53
60
|
this.l2TipsStore = args.l2TipsStore;
|
|
54
61
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
55
62
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
56
|
-
this.
|
|
63
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
57
64
|
this.capsuleStore = args.capsuleStore;
|
|
65
|
+
this.factStore = args.factStore;
|
|
58
66
|
this.privateEventStore = args.privateEventStore;
|
|
59
67
|
this.simulator = args.simulator;
|
|
60
68
|
this.contractSyncService = args.contractSyncService;
|
|
61
|
-
this.
|
|
69
|
+
this.txResolver = args.txResolver;
|
|
62
70
|
this.hooks = args.hooks;
|
|
63
71
|
this.log = createLogger('simulator');
|
|
64
72
|
}
|
|
65
73
|
/**
|
|
66
74
|
* Runs a private function.
|
|
67
75
|
* @param request - The transaction request.
|
|
68
|
-
*/ async run(request, {
|
|
76
|
+
*/ async run(request, { msgSender = AztecAddress.NULL_MSG_SENDER, anchorBlockHeader, senderForTags, scopes, jobId }) {
|
|
69
77
|
const simulatorSetupTimer = new Timer();
|
|
70
|
-
const
|
|
78
|
+
const contractAddress = request.origin;
|
|
79
|
+
const anchoredContractData = new AnchoredContractData(this.contractStore, this.contractClassService, anchorBlockHeader, this.overrides);
|
|
80
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(contractAddress, request.functionSelector);
|
|
81
|
+
if (!entryPointArtifact) {
|
|
82
|
+
throw new Error(`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` + `Register it via wallet.registerContract(...).`);
|
|
83
|
+
}
|
|
71
84
|
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
72
85
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
73
86
|
}
|
|
74
|
-
if (request.origin !== contractAddress) {
|
|
75
|
-
throw new Error(`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`);
|
|
76
|
-
}
|
|
77
87
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
78
88
|
const startSideEffectCounter = 2;
|
|
79
89
|
const callContext = new CallContext(msgSender, contractAddress, await FunctionSelector.fromNameAndParameters(entryPointArtifact.name, entryPointArtifact.parameters), entryPointArtifact.isStatic);
|
|
@@ -87,6 +97,7 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
87
97
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
88
98
|
argsHash: request.firstCallArgsHash,
|
|
89
99
|
txContext: request.txContext,
|
|
100
|
+
txRequestSalt: request.salt,
|
|
90
101
|
callContext,
|
|
91
102
|
anchorBlockHeader,
|
|
92
103
|
utilityExecutor: async (call, execScopes)=>{
|
|
@@ -97,17 +108,18 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
97
108
|
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
98
109
|
noteCache,
|
|
99
110
|
taggingIndexCache,
|
|
100
|
-
|
|
111
|
+
anchoredContractData,
|
|
101
112
|
noteStore: this.noteStore,
|
|
102
113
|
keyStore: this.keyStore,
|
|
103
114
|
addressStore: this.addressStore,
|
|
104
115
|
aztecNode: this.aztecNode,
|
|
105
116
|
senderTaggingStore: this.senderTaggingStore,
|
|
106
117
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
107
|
-
|
|
118
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
108
119
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
120
|
+
factService: new FactService(this.factStore, scopes),
|
|
109
121
|
privateEventStore: this.privateEventStore,
|
|
110
|
-
|
|
122
|
+
txResolver: this.txResolver,
|
|
111
123
|
contractSyncService: this.contractSyncService,
|
|
112
124
|
jobId,
|
|
113
125
|
totalPublicCalldataCount: 0,
|
|
@@ -127,8 +139,7 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
127
139
|
// within executionResult.nestedExecutionResults).
|
|
128
140
|
const executionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, entryPointArtifact, contractAddress, request.functionSelector);
|
|
129
141
|
const simulatorTeardownTimer = new Timer();
|
|
130
|
-
noteCache.
|
|
131
|
-
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
142
|
+
const firstNullifier = noteCache.getNonceGenerator();
|
|
132
143
|
const publicCallRequests = collectNested([
|
|
133
144
|
executionResult
|
|
134
145
|
], (r)=>r.publicInputs.publicCallRequests.getActiveItems().map((r)=>r.inner).concat(r.publicInputs.publicTeardownCallRequest.isEmpty() ? [] : [
|
|
@@ -144,9 +155,9 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
144
155
|
executionResult.profileResult.timings.witgen += setupTime + teardownTime;
|
|
145
156
|
}
|
|
146
157
|
// Not to be confused with a PrivateCallExecutionResult. This is a superset
|
|
147
|
-
// of the PrivateCallExecutionResult, containing also
|
|
158
|
+
// of the PrivateCallExecutionResult, containing also firstNullifier
|
|
148
159
|
// and publicFunctionsCalldata.
|
|
149
|
-
return new PrivateExecutionResult(executionResult,
|
|
160
|
+
return new PrivateExecutionResult(executionResult, firstNullifier, publicFunctionsCalldata);
|
|
150
161
|
} catch (err) {
|
|
151
162
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
152
163
|
}
|
|
@@ -154,13 +165,13 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
154
165
|
/**
|
|
155
166
|
* Runs a utility function.
|
|
156
167
|
* @param call - The function call to execute.
|
|
157
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
158
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
159
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
160
|
-
* accounts if not specified.
|
|
161
168
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
162
169
|
*/ async runUtility(call, authwits, anchorBlockHeader, scopes, jobId) {
|
|
163
|
-
const
|
|
170
|
+
const anchoredContractData = new AnchoredContractData(this.contractStore, this.contractClassService, anchorBlockHeader, this.overrides);
|
|
171
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
172
|
+
if (!entryPointArtifact) {
|
|
173
|
+
throw new Error(`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` + `Register it via wallet.registerContract(...).`);
|
|
174
|
+
}
|
|
164
175
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
165
176
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
166
177
|
}
|
|
@@ -168,20 +179,26 @@ import { TransientArrayService } from './transient_array_service.js';
|
|
|
168
179
|
await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
|
|
169
180
|
};
|
|
170
181
|
const oracle = new UtilityExecutionOracle({
|
|
171
|
-
|
|
182
|
+
callContext: CallContext.from({
|
|
183
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
184
|
+
contractAddress: call.to,
|
|
185
|
+
functionSelector: call.selector,
|
|
186
|
+
isStaticCall: true
|
|
187
|
+
}),
|
|
172
188
|
authWitnesses: authwits,
|
|
173
189
|
capsules: [],
|
|
174
190
|
anchorBlockHeader,
|
|
175
|
-
|
|
191
|
+
anchoredContractData,
|
|
176
192
|
noteStore: this.noteStore,
|
|
177
193
|
keyStore: this.keyStore,
|
|
178
194
|
addressStore: this.addressStore,
|
|
179
195
|
aztecNode: this.aztecNode,
|
|
180
196
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
181
|
-
|
|
197
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
182
198
|
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
199
|
+
factService: new FactService(this.factStore, scopes),
|
|
183
200
|
privateEventStore: this.privateEventStore,
|
|
184
|
-
|
|
201
|
+
txResolver: this.txResolver,
|
|
185
202
|
contractSyncService: this.contractSyncService,
|
|
186
203
|
l2TipsStore: this.l2TipsStore,
|
|
187
204
|
jobId,
|
|
@@ -332,12 +349,12 @@ class OrderedSideEffect {
|
|
|
332
349
|
const getEffect = (orderedSideEffect)=>orderedSideEffect.sideEffect;
|
|
333
350
|
const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
|
|
334
351
|
const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(siloedNullifiers, minRevertibleSideEffectCounter);
|
|
352
|
+
// The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
|
|
353
|
+
// init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
|
|
354
|
+
// the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
|
|
355
|
+
// nullifier.
|
|
335
356
|
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
336
|
-
|
|
337
|
-
nonRevertibleNullifiers.push(nonceGenerator);
|
|
338
|
-
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
339
|
-
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
340
|
-
}
|
|
357
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
341
358
|
if (isPrivateOnlyTx) {
|
|
342
359
|
// We must make the note hashes unique by using the
|
|
343
360
|
// nonce generator and their index in the tx.
|
|
@@ -475,6 +492,10 @@ function meterGasUsed(data, isPrivateOnlyTx) {
|
|
|
475
492
|
// Every contract class log emits its contract address as an additional field
|
|
476
493
|
meteredDAFields += data.contractClassLogsHashes.reduce((acc, log)=>!log.isEmpty() ? acc + log.logHash.length + 1 : acc, 0);
|
|
477
494
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
495
|
+
if (isPrivateOnlyTx) {
|
|
496
|
+
// The public data write that the private tx base rollup always performs to update the fee payer's balance.
|
|
497
|
+
meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
|
|
498
|
+
}
|
|
478
499
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
479
500
|
if (data.publicCallRequests) {
|
|
480
501
|
const dataForPublic = data;
|
|
@@ -36,11 +36,6 @@ export declare class ExecutionNoteCache {
|
|
|
36
36
|
*/
|
|
37
37
|
private minRevertibleSideEffectCounter;
|
|
38
38
|
private inRevertiblePhase;
|
|
39
|
-
/**
|
|
40
|
-
* Whether the protocol nullifier was used for nonce generation.
|
|
41
|
-
* We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
|
|
42
|
-
*/
|
|
43
|
-
private usedProtocolNullifierForNonces;
|
|
44
39
|
constructor(protocolNullifier: Fr);
|
|
45
40
|
/**
|
|
46
41
|
* Enters the revertible phase of the transaction.
|
|
@@ -48,7 +43,6 @@ export declare class ExecutionNoteCache {
|
|
|
48
43
|
*/
|
|
49
44
|
setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void>;
|
|
50
45
|
isSideEffectCounterRevertible(sideEffectCounter: number): boolean;
|
|
51
|
-
finish(): void;
|
|
52
46
|
/**
|
|
53
47
|
* Add a new note to cache.
|
|
54
48
|
* @param note - New note created during execution.
|
|
@@ -94,11 +88,11 @@ export declare class ExecutionNoteCache {
|
|
|
94
88
|
*/
|
|
95
89
|
getEmittedNullifiers(): Fr[];
|
|
96
90
|
/**
|
|
97
|
-
* @returns All nullifiers
|
|
98
|
-
*
|
|
91
|
+
* @returns All nullifiers of the transaction: the protocol nullifier (the kernel-injected first nullifier),
|
|
92
|
+
* followed by those emitted by private calls.
|
|
99
93
|
*/
|
|
100
94
|
getAllNullifiers(): Fr[];
|
|
101
95
|
getNonceGenerator(): Fr;
|
|
102
96
|
}
|
|
103
97
|
export {};
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX25vdGVfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX25vdGVfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELFVBQVUsV0FBVztJQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixzQkFBc0IsRUFBRSxFQUFFLENBQUM7Q0FDNUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGtCQUFrQjs7SUE4QmpCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBN0I5Qzs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUNsQzs7T0FFRztJQUNILE9BQU8sQ0FBQyxPQUFPLENBQXlDO0lBRXhEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsWUFBWSxDQUF1QztJQUUzRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBMEI7SUFFbkQ7O09BRUc7SUFDSCxPQUFPLENBQUMsOEJBQThCLENBQUs7SUFFM0MsT0FBTyxDQUFDLGlCQUFpQixDQUFTO0lBRWxDLFlBQTZCLGlCQUFpQixFQUFFLEVBQUUsRUFBSTtJQUV0RDs7O09BR0c7SUFDVSxpQ0FBaUMsQ0FBQyw4QkFBOEIsRUFBRSxNQUFNLGlCQW1DcEY7SUFFTSw2QkFBNkIsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUt2RTtJQUVEOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBU2hEO0lBRUQ7Ozs7OztPQU1HO0lBQ1UsV0FBVyxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSwrQkF5QnZGO0lBRUQ7Ozs7T0FJRztJQUNVLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEVBQUUsaUJBRzlFO0lBRUQ7Ozs7OztRQU1JO0lBQ0csUUFBUSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsY0FNOUY7SUFFRDs7Ozs7UUFLSTtJQUNHLGVBQWUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLFdBR2pFO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxDQUFDLGVBQWUsRUFBRSxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUUvRDtJQVVELFdBQVcsSUFBSSxXQUFXLEVBQUUsQ0FFM0I7SUFFRDs7T0FFRztJQUNILG9CQUFvQixJQUFJLEVBQUUsRUFBRSxDQUUzQjtJQUVEOzs7T0FHRztJQUNILGdCQUFnQixJQUFJLEVBQUUsRUFBRSxDQUV2QjtJQUVELGlCQUFpQixJQUFJLEVBQUUsQ0FFdEI7Q0FhRiJ9
|