@aztec/pxe 0.0.1-commit.3469e52 → 0.0.1-commit.35158ae7e
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/access_scopes.d.ts +9 -0
- package/dest/access_scopes.d.ts.map +1 -0
- package/dest/access_scopes.js +6 -0
- package/dest/bin/check_oracle_version.js +1 -1
- package/dest/block_synchronizer/block_synchronizer.d.ts +9 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +62 -16
- package/dest/config/index.d.ts +4 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +18 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +61 -31
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +201 -78
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
- package/dest/contract_function_simulator/index.d.ts +2 -1
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -4
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +6 -5
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
- 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 -3
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/message_tx_context.js +57 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -5
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +4 -6
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +54 -46
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +42 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +45 -42
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +201 -110
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -22
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -40
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +60 -77
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +110 -86
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +104 -54
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +216 -119
- package/dest/contract_logging.d.ts +22 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +23 -0
- package/dest/contract_sync/contract_sync_service.d.ts +45 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +114 -0
- package/dest/contract_sync/helpers.d.ts +29 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/helpers.js +55 -0
- package/dest/debug/pxe_debug_utils.d.ts +24 -10
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +28 -17
- package/dest/entrypoints/client/bundle/index.d.ts +4 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +3 -0
- 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 +21 -7
- package/dest/entrypoints/client/lazy/index.d.ts +4 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +3 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +22 -8
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +4 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +3 -0
- 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 +28 -9
- package/dest/events/event_service.d.ts +5 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +6 -7
- package/dest/job_coordinator/job_coordinator.d.ts +3 -2
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
- package/dest/job_coordinator/job_coordinator.js +3 -2
- package/dest/logs/log_service.d.ts +7 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +28 -32
- package/dest/messages/message_context_service.d.ts +17 -0
- package/dest/messages/message_context_service.d.ts.map +1 -0
- package/dest/messages/message_context_service.js +36 -0
- package/dest/notes/note_service.d.ts +9 -8
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +17 -16
- package/dest/notes_filter.d.ts +25 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +5 -4
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
- 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 +129 -68
- package/dest/private_kernel/hints/test_utils.d.ts +122 -0
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
- package/dest/private_kernel/hints/test_utils.js +203 -0
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +21 -13
- package/dest/private_kernel/private_kernel_oracle.d.ts +8 -4
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +7 -3
- package/dest/pxe.d.ts +74 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +134 -80
- package/dest/storage/address_store/address_store.d.ts +1 -1
- package/dest/storage/address_store/address_store.d.ts.map +1 -1
- package/dest/storage/address_store/address_store.js +12 -11
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +8 -1
- package/dest/storage/capsule_store/capsule_store.js +6 -8
- package/dest/storage/contract_store/contract_store.d.ts +42 -16
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +157 -84
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +47 -49
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +278 -252
- package/dest/storage/note_store/stored_note.d.ts +16 -0
- package/dest/storage/note_store/stored_note.d.ts.map +1 -0
- package/dest/storage/note_store/stored_note.js +43 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +17 -4
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +198 -147
- package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
- package/dest/storage/private_event_store/stored_private_event.js +56 -0
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.js +31 -19
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
- package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
- package/dest/tagging/get_all_logs_by_tags.js +60 -0
- package/dest/tagging/index.d.ts +4 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +2 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +5 -5
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +7 -7
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +7 -7
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +16 -12
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -8
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +23 -16
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -7
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +42 -27
- package/package.json +25 -16
- package/src/access_scopes.ts +9 -0
- package/src/bin/check_oracle_version.ts +1 -0
- package/src/block_synchronizer/block_synchronizer.ts +76 -33
- package/src/config/index.ts +15 -1
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +361 -142
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
- package/src/contract_function_simulator/index.ts +1 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -6
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
- package/src/contract_function_simulator/noir-structs/message_tx_context.ts +55 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -7
- package/src/contract_function_simulator/oracle/interfaces.ts +67 -58
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +135 -0
- package/src/contract_function_simulator/oracle/oracle.ts +217 -149
- package/src/contract_function_simulator/oracle/private_execution.ts +5 -64
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +150 -182
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +330 -134
- package/src/contract_logging.ts +39 -0
- package/src/contract_sync/contract_sync_service.ts +181 -0
- package/src/contract_sync/helpers.ts +98 -0
- package/src/debug/pxe_debug_utils.ts +63 -18
- package/src/entrypoints/client/bundle/index.ts +3 -0
- package/src/entrypoints/client/bundle/utils.ts +16 -15
- package/src/entrypoints/client/lazy/index.ts +3 -0
- package/src/entrypoints/client/lazy/utils.ts +17 -15
- package/src/entrypoints/pxe_creation_options.ts +2 -1
- package/src/entrypoints/server/index.ts +3 -0
- package/src/entrypoints/server/utils.ts +22 -26
- package/src/events/event_service.ts +5 -7
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +48 -39
- package/src/messages/message_context_service.ts +45 -0
- package/src/notes/note_service.ts +24 -22
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +5 -4
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
- package/src/private_kernel/hints/test_utils.ts +325 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +25 -15
- package/src/private_kernel/private_kernel_oracle.ts +9 -9
- package/src/pxe.ts +261 -126
- package/src/storage/address_store/address_store.ts +15 -15
- package/src/storage/anchor_block_store/anchor_block_store.ts +8 -0
- package/src/storage/capsule_store/capsule_store.ts +8 -8
- package/src/storage/contract_store/contract_store.ts +186 -96
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +321 -318
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +250 -190
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +38 -24
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +287 -156
- package/src/tagging/get_all_logs_by_tags.ts +92 -0
- package/src/tagging/index.ts +3 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +17 -10
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +17 -16
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +25 -10
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +29 -26
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +39 -29
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.d.ts +0 -50
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -75
- package/src/tree_membership/tree_membership_service.ts +0 -97
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS,
|
|
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';
|
|
2
2
|
import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
-
import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
|
|
4
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
5
|
import { Timer } from '@aztec/foundation/timer';
|
|
@@ -10,67 +9,57 @@ import { ExecutionError, createSimulationError, extractCallStack, resolveAsserti
|
|
|
10
9
|
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
11
10
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
12
11
|
import { Gas } from '@aztec/stdlib/gas';
|
|
13
|
-
import { computeNoteHashNonce, computeProtocolNullifier, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
14
|
-
import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest, ScopedLogHash } from '@aztec/stdlib/kernel';
|
|
12
|
+
import { computeNoteHashNonce, computeProtocolNullifier, computeSiloedPrivateLogFirstField, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
13
|
+
import { ClaimedLengthArray, PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest, ReadRequestActionEnum, ScopedLogHash, ScopedNoteHash, ScopedNullifier, ScopedReadRequest, buildTransientDataHints, getNoteHashReadRequestResetActions, getNullifierReadRequestResetActions } from '@aztec/stdlib/kernel';
|
|
15
14
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
16
15
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
17
16
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
18
|
-
import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
|
|
17
|
+
import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
|
|
19
18
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
20
19
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
21
20
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
22
21
|
import { Oracle } from './oracle/oracle.js';
|
|
23
|
-
import { executePrivateFunction
|
|
22
|
+
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
24
23
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
25
24
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
26
25
|
/**
|
|
27
26
|
* The contract function simulator.
|
|
28
27
|
*/ export class ContractFunctionSimulator {
|
|
28
|
+
log;
|
|
29
29
|
contractStore;
|
|
30
30
|
noteStore;
|
|
31
31
|
keyStore;
|
|
32
32
|
addressStore;
|
|
33
33
|
aztecNode;
|
|
34
|
-
anchorBlockStore;
|
|
35
34
|
senderTaggingStore;
|
|
36
35
|
recipientTaggingStore;
|
|
37
36
|
senderAddressBookStore;
|
|
38
37
|
capsuleStore;
|
|
39
38
|
privateEventStore;
|
|
40
39
|
simulator;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
this.
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
48
|
-
this.
|
|
49
|
-
this.senderTaggingStore = senderTaggingStore;
|
|
50
|
-
this.recipientTaggingStore = recipientTaggingStore;
|
|
51
|
-
this.senderAddressBookStore = senderAddressBookStore;
|
|
52
|
-
this.capsuleStore = capsuleStore;
|
|
53
|
-
this.privateEventStore = privateEventStore;
|
|
54
|
-
this.simulator = simulator;
|
|
40
|
+
contractSyncService;
|
|
41
|
+
messageContextService;
|
|
42
|
+
constructor(args){
|
|
43
|
+
this.contractStore = args.contractStore;
|
|
44
|
+
this.noteStore = args.noteStore;
|
|
45
|
+
this.keyStore = args.keyStore;
|
|
46
|
+
this.addressStore = args.addressStore;
|
|
47
|
+
this.aztecNode = args.aztecNode;
|
|
48
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
49
|
+
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
50
|
+
this.senderAddressBookStore = args.senderAddressBookStore;
|
|
51
|
+
this.capsuleStore = args.capsuleStore;
|
|
52
|
+
this.privateEventStore = args.privateEventStore;
|
|
53
|
+
this.simulator = args.simulator;
|
|
54
|
+
this.contractSyncService = args.contractSyncService;
|
|
55
|
+
this.messageContextService = args.messageContextService;
|
|
55
56
|
this.log = createLogger('simulator');
|
|
56
57
|
}
|
|
57
58
|
/**
|
|
58
59
|
* Runs a private function.
|
|
59
60
|
* @param request - The transaction request.
|
|
60
|
-
|
|
61
|
-
* @param contractAddress - The address of the contract (should match request.origin)
|
|
62
|
-
* @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
|
|
63
|
-
* or a specific account.
|
|
64
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
65
|
-
* @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
|
|
66
|
-
* the `privateGetSenderForTags` oracle.
|
|
67
|
-
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
68
|
-
* @param jobId - The job ID for staged writes.
|
|
69
|
-
* @returns The result of the execution.
|
|
70
|
-
*/ async run(request, contractAddress, selector, msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE), anchorBlockHeader, senderForTags, scopes, jobId) {
|
|
61
|
+
*/ async run(request, { contractAddress, selector, msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE), anchorBlockHeader, senderForTags, scopes, jobId }) {
|
|
71
62
|
const simulatorSetupTimer = new Timer();
|
|
72
|
-
await this.contractStore.syncPrivateState(contractAddress, selector, (privateSyncCall)=>this.runUtility(privateSyncCall, [], anchorBlockHeader, scopes, jobId));
|
|
73
|
-
await verifyCurrentClassId(contractAddress, this.aztecNode, this.contractStore, anchorBlockHeader);
|
|
74
63
|
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
|
|
75
64
|
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
76
65
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
@@ -84,9 +73,38 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
84
73
|
const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
|
|
85
74
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
86
75
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
87
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
88
|
-
|
|
89
|
-
|
|
76
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
77
|
+
argsHash: request.firstCallArgsHash,
|
|
78
|
+
txContext: request.txContext,
|
|
79
|
+
callContext,
|
|
80
|
+
anchorBlockHeader,
|
|
81
|
+
utilityExecutor: async (call, execScopes)=>{
|
|
82
|
+
await this.runUtility(call, [], anchorBlockHeader, execScopes, jobId);
|
|
83
|
+
},
|
|
84
|
+
authWitnesses: request.authWitnesses,
|
|
85
|
+
capsules: request.capsules,
|
|
86
|
+
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
87
|
+
noteCache,
|
|
88
|
+
taggingIndexCache,
|
|
89
|
+
contractStore: this.contractStore,
|
|
90
|
+
noteStore: this.noteStore,
|
|
91
|
+
keyStore: this.keyStore,
|
|
92
|
+
addressStore: this.addressStore,
|
|
93
|
+
aztecNode: this.aztecNode,
|
|
94
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
95
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
96
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
97
|
+
capsuleStore: this.capsuleStore,
|
|
98
|
+
privateEventStore: this.privateEventStore,
|
|
99
|
+
messageContextService: this.messageContextService,
|
|
100
|
+
contractSyncService: this.contractSyncService,
|
|
101
|
+
jobId,
|
|
102
|
+
totalPublicCalldataCount: 0,
|
|
103
|
+
sideEffectCounter: startSideEffectCounter,
|
|
104
|
+
scopes,
|
|
105
|
+
senderForTags,
|
|
106
|
+
simulator: this.simulator
|
|
107
|
+
});
|
|
90
108
|
const setupTime = simulatorSetupTimer.ms();
|
|
91
109
|
try {
|
|
92
110
|
// Note: any nested private function calls are made recursively within this
|
|
@@ -103,7 +121,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
103
121
|
r.publicInputs.publicTeardownCallRequest
|
|
104
122
|
]));
|
|
105
123
|
const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
|
|
106
|
-
const calldata = await privateExecutionOracle.
|
|
124
|
+
const calldata = await privateExecutionOracle.loadFromExecutionCache(r.calldataHash);
|
|
107
125
|
return new HashedValues(calldata, r.calldataHash);
|
|
108
126
|
}));
|
|
109
127
|
const teardownTime = simulatorTeardownTimer.ms();
|
|
@@ -129,12 +147,29 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
129
147
|
* accounts if not specified.
|
|
130
148
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
131
149
|
*/ async runUtility(call, authwits, anchorBlockHeader, scopes, jobId) {
|
|
132
|
-
await verifyCurrentClassId(call.to, this.aztecNode, this.contractStore, anchorBlockHeader);
|
|
133
150
|
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
134
151
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
135
152
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
136
153
|
}
|
|
137
|
-
const oracle = new UtilityExecutionOracle(
|
|
154
|
+
const oracle = new UtilityExecutionOracle({
|
|
155
|
+
contractAddress: call.to,
|
|
156
|
+
authWitnesses: authwits,
|
|
157
|
+
capsules: [],
|
|
158
|
+
anchorBlockHeader,
|
|
159
|
+
contractStore: this.contractStore,
|
|
160
|
+
noteStore: this.noteStore,
|
|
161
|
+
keyStore: this.keyStore,
|
|
162
|
+
addressStore: this.addressStore,
|
|
163
|
+
aztecNode: this.aztecNode,
|
|
164
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
165
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
166
|
+
capsuleStore: this.capsuleStore,
|
|
167
|
+
privateEventStore: this.privateEventStore,
|
|
168
|
+
messageContextService: this.messageContextService,
|
|
169
|
+
contractSyncService: this.contractSyncService,
|
|
170
|
+
jobId,
|
|
171
|
+
scopes
|
|
172
|
+
});
|
|
138
173
|
try {
|
|
139
174
|
this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
|
|
140
175
|
contract: call.to,
|
|
@@ -150,8 +185,11 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
150
185
|
cause: err
|
|
151
186
|
});
|
|
152
187
|
});
|
|
153
|
-
this.log.verbose(`Utility
|
|
154
|
-
return
|
|
188
|
+
this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
|
|
189
|
+
return {
|
|
190
|
+
result: witnessMapToFields(acirExecutionResult.returnWitness),
|
|
191
|
+
offchainEffects: oracle.getOffchainEffects()
|
|
192
|
+
};
|
|
155
193
|
} catch (err) {
|
|
156
194
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
157
195
|
}
|
|
@@ -190,38 +228,54 @@ class OrderedSideEffect {
|
|
|
190
228
|
* (allowing state overrides) and is much faster, while still generating a valid
|
|
191
229
|
* output that can be sent to the node for public simulation
|
|
192
230
|
* @param privateExecutionResult - The result of the private execution.
|
|
193
|
-
* @param
|
|
231
|
+
* @param debugFunctionNameGetter - A provider for contract data in order to get function names and debug info.
|
|
232
|
+
* @param node - AztecNode for verifying settled read requests against the note hash and nullifier trees.
|
|
194
233
|
* @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
|
|
195
234
|
* Used by TXE to simulate account contract behavior (setting the counter before app execution).
|
|
196
235
|
* @returns The simulated proving result.
|
|
197
|
-
*/ export async function generateSimulatedProvingResult(privateExecutionResult,
|
|
198
|
-
const siloedNoteHashes = [];
|
|
199
|
-
const nullifiers = [];
|
|
236
|
+
*/ export async function generateSimulatedProvingResult(privateExecutionResult, debugFunctionNameGetter, node, minRevertibleSideEffectCounterOverride) {
|
|
200
237
|
const taggedPrivateLogs = [];
|
|
201
238
|
const l2ToL1Messages = [];
|
|
202
239
|
const contractClassLogsHashes = [];
|
|
203
240
|
const publicCallRequests = [];
|
|
204
241
|
const executionSteps = [];
|
|
242
|
+
// Unsiloed scoped arrays — used for squashing, read request verification,
|
|
243
|
+
// and siloed at the end only for the surviving items
|
|
244
|
+
const scopedNoteHashes = [];
|
|
245
|
+
const scopedNullifiers = [];
|
|
246
|
+
// Read requests for verification
|
|
247
|
+
const noteHashReadRequests = [];
|
|
248
|
+
const nullifierReadRequests = [];
|
|
205
249
|
let publicTeardownCallRequest;
|
|
250
|
+
// We set expiration timestamp to anchor_block_timestamp + MAX_TX_LIFETIME (24h) just like kernels do
|
|
251
|
+
let expirationTimestamp = privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.globalVariables.timestamp + BigInt(MAX_TX_LIFETIME);
|
|
252
|
+
let feePayer = AztecAddress.zero();
|
|
206
253
|
const executions = [
|
|
207
254
|
privateExecutionResult.entrypoint
|
|
208
255
|
];
|
|
209
256
|
while(executions.length !== 0){
|
|
210
257
|
const execution = executions.shift();
|
|
211
258
|
executions.unshift(...execution.nestedExecutionResults);
|
|
259
|
+
// Just like kernels we overwrite the default value if the call sets it.
|
|
260
|
+
const callExpirationTimestamp = execution.publicInputs.expirationTimestamp;
|
|
261
|
+
if (callExpirationTimestamp !== 0n && callExpirationTimestamp < expirationTimestamp) {
|
|
262
|
+
expirationTimestamp = callExpirationTimestamp;
|
|
263
|
+
}
|
|
212
264
|
const { contractAddress } = execution.publicInputs.callContext;
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
265
|
+
if (execution.publicInputs.isFeePayer) {
|
|
266
|
+
if (!feePayer.isZero()) {
|
|
267
|
+
throw new Error('Multiple fee payers found in private execution result');
|
|
268
|
+
}
|
|
269
|
+
feePayer = contractAddress;
|
|
270
|
+
}
|
|
271
|
+
scopedNoteHashes.push(...execution.publicInputs.noteHashes.getActiveItems().filter((nh)=>!nh.isEmpty()).map((nh)=>nh.scope(contractAddress)));
|
|
272
|
+
scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map((n)=>n.scope(contractAddress)));
|
|
273
|
+
taggedPrivateLogs.push(...await Promise.all(execution.publicInputs.privateLogs.getActiveItems().map(async (metadata)=>{
|
|
274
|
+
metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
|
|
275
|
+
return new OrderedSideEffect(metadata, metadata.counter);
|
|
276
|
+
})));
|
|
277
|
+
noteHashReadRequests.push(...execution.publicInputs.noteHashReadRequests.getActiveItems());
|
|
278
|
+
nullifierReadRequests.push(...execution.publicInputs.nullifierReadRequests.getActiveItems());
|
|
225
279
|
l2ToL1Messages.push(...execution.publicInputs.l2ToL1Msgs.getActiveItems().map((message)=>new OrderedSideEffect(message.message.scope(contractAddress), message.counter)));
|
|
226
280
|
contractClassLogsHashes.push(...execution.publicInputs.contractClassLogsHashes.getActiveItems().map((contractClassLogHash)=>new OrderedSideEffect(contractClassLogHash.logHash.scope(contractAddress), contractClassLogHash.counter)));
|
|
227
281
|
publicCallRequests.push(...execution.publicInputs.publicCallRequests.getActiveItems().map((callRequest)=>new OrderedSideEffect(callRequest.inner, callRequest.counter)));
|
|
@@ -230,7 +284,7 @@ class OrderedSideEffect {
|
|
|
230
284
|
}
|
|
231
285
|
publicTeardownCallRequest = execution.publicInputs.publicTeardownCallRequest.isEmpty() ? publicTeardownCallRequest : execution.publicInputs.publicTeardownCallRequest;
|
|
232
286
|
executionSteps.push({
|
|
233
|
-
functionName: await
|
|
287
|
+
functionName: await debugFunctionNameGetter(execution.publicInputs.callContext.contractAddress, execution.publicInputs.callContext.functionSelector),
|
|
234
288
|
timings: execution.profileResult?.timings ?? {
|
|
235
289
|
witgen: 0,
|
|
236
290
|
oracles: {}
|
|
@@ -240,6 +294,14 @@ class OrderedSideEffect {
|
|
|
240
294
|
witness: execution.partialWitness
|
|
241
295
|
});
|
|
242
296
|
}
|
|
297
|
+
const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(privateExecutionResult);
|
|
298
|
+
const minRevertibleSideEffectCounter = minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
|
|
299
|
+
const scopedNoteHashesCLA = new ClaimedLengthArray(padArrayEnd(scopedNoteHashes, ScopedNoteHash.empty(), MAX_NOTE_HASHES_PER_TX), scopedNoteHashes.length);
|
|
300
|
+
const scopedNullifiersCLA = new ClaimedLengthArray(padArrayEnd(scopedNullifiers, ScopedNullifier.empty(), MAX_NULLIFIERS_PER_TX), scopedNullifiers.length);
|
|
301
|
+
const { filteredNoteHashes, filteredNullifiers, filteredPrivateLogs } = squashTransientSideEffects(taggedPrivateLogs, scopedNoteHashesCLA, scopedNullifiersCLA, noteHashNullifierCounterMap, minRevertibleSideEffectCounter);
|
|
302
|
+
await verifyReadRequests(node, await privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.hash(), noteHashReadRequests, nullifierReadRequests, scopedNoteHashesCLA, scopedNullifiersCLA);
|
|
303
|
+
const siloedNoteHashes = await Promise.all(filteredNoteHashes.sort((a, b)=>a.counter - b.counter).map(async (nh)=>new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)));
|
|
304
|
+
const siloedNullifiers = await Promise.all(filteredNullifiers.sort((a, b)=>a.counter - b.counter).map(async (n)=>new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)));
|
|
243
305
|
const constantData = new TxConstantData(privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader, privateExecutionResult.entrypoint.publicInputs.txContext, getVKTreeRoot(), protocolContractsHash);
|
|
244
306
|
const hasPublicCalls = privateExecutionResult.publicFunctionCalldata.length !== 0;
|
|
245
307
|
let inputsForRollup;
|
|
@@ -248,8 +310,7 @@ class OrderedSideEffect {
|
|
|
248
310
|
const sortByCounter = (a, b)=>a.counter - b.counter;
|
|
249
311
|
const getEffect = (orderedSideEffect)=>orderedSideEffect.sideEffect;
|
|
250
312
|
const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
|
|
251
|
-
const
|
|
252
|
-
const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(nullifiers.sort(sortByCounter), minRevertibleSideEffectCounter);
|
|
313
|
+
const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(siloedNullifiers, minRevertibleSideEffectCounter);
|
|
253
314
|
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
254
315
|
if (nonRevertibleNullifiers.length === 0) {
|
|
255
316
|
nonRevertibleNullifiers.push(nonceGenerator);
|
|
@@ -259,43 +320,102 @@ class OrderedSideEffect {
|
|
|
259
320
|
if (isPrivateOnlyTx) {
|
|
260
321
|
// We must make the note hashes unique by using the
|
|
261
322
|
// nonce generator and their index in the tx.
|
|
262
|
-
const uniqueNoteHashes = await Promise.all(siloedNoteHashes.
|
|
323
|
+
const uniqueNoteHashes = await Promise.all(siloedNoteHashes.map(async (orderedSideEffect, i)=>{
|
|
263
324
|
const siloedNoteHash = orderedSideEffect.sideEffect;
|
|
264
325
|
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
265
326
|
const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
|
|
266
327
|
return uniqueNoteHash;
|
|
267
328
|
}));
|
|
268
|
-
const accumulatedDataForRollup = new PrivateToRollupAccumulatedData(padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(nonRevertibleNullifiers.concat(revertibleNullifiers), Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(l2ToL1Messages.sort(sortByCounter).map(getEffect), ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(
|
|
269
|
-
gasUsed = meterGasUsed(accumulatedDataForRollup);
|
|
329
|
+
const accumulatedDataForRollup = new PrivateToRollupAccumulatedData(padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(nonRevertibleNullifiers.concat(revertibleNullifiers), Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(l2ToL1Messages.sort(sortByCounter).map(getEffect), ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(filteredPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(contractClassLogsHashes.sort(sortByCounter).map(getEffect), ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX));
|
|
330
|
+
gasUsed = meterGasUsed(accumulatedDataForRollup, isPrivateOnlyTx);
|
|
270
331
|
inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
|
|
271
332
|
} else {
|
|
272
|
-
const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(siloedNoteHashes
|
|
333
|
+
const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(siloedNoteHashes, minRevertibleSideEffectCounter);
|
|
273
334
|
const nonRevertibleUniqueNoteHashes = await Promise.all(nonRevertibleNoteHashes.map(async (noteHash, i)=>{
|
|
274
335
|
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
275
336
|
return await computeUniqueNoteHash(nonce, noteHash);
|
|
276
337
|
}));
|
|
277
338
|
const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(l2ToL1Messages.sort(sortByCounter), minRevertibleSideEffectCounter);
|
|
278
|
-
const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(
|
|
339
|
+
const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(filteredPrivateLogs, minRevertibleSideEffectCounter);
|
|
279
340
|
const [nonRevertibleContractClassLogHashes, revertibleContractClassLogHashes] = splitOrderedSideEffects(contractClassLogsHashes.sort(sortByCounter), minRevertibleSideEffectCounter);
|
|
280
341
|
const [nonRevertiblePublicCallRequests, revertiblePublicCallRequests] = splitOrderedSideEffects(publicCallRequests.sort(sortByCounter), minRevertibleSideEffectCounter);
|
|
281
342
|
const nonRevertibleData = new PrivateToPublicAccumulatedData(padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(nonRevertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX), padArrayEnd(nonRevertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX));
|
|
282
343
|
const revertibleData = new PrivateToPublicAccumulatedData(padArrayEnd(revertibleNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(revertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(revertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(revertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(revertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX), padArrayEnd(revertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX));
|
|
283
|
-
gasUsed = meterGasUsed(revertibleData).add(meterGasUsed(nonRevertibleData));
|
|
344
|
+
gasUsed = meterGasUsed(revertibleData, isPrivateOnlyTx).add(meterGasUsed(nonRevertibleData, isPrivateOnlyTx));
|
|
284
345
|
if (publicTeardownCallRequest) {
|
|
285
|
-
gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
|
|
346
|
+
gasUsed = gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
|
|
286
347
|
}
|
|
287
348
|
inputsForPublic = new PartialPrivateTailPublicInputsForPublic(nonRevertibleData, revertibleData, publicTeardownCallRequest ?? PublicCallRequest.empty());
|
|
288
349
|
}
|
|
289
350
|
const publicInputs = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsed.add(Gas.from({
|
|
290
|
-
l2Gas:
|
|
291
|
-
daGas:
|
|
292
|
-
})), /*feePayer=*/
|
|
351
|
+
l2Gas: isPrivateOnlyTx ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
352
|
+
daGas: TX_DA_GAS_OVERHEAD
|
|
353
|
+
})), /*feePayer=*/ feePayer, /*expirationTimestamp=*/ expirationTimestamp, hasPublicCalls ? inputsForPublic : undefined, !hasPublicCalls ? inputsForRollup : undefined);
|
|
293
354
|
return {
|
|
294
355
|
publicInputs,
|
|
295
356
|
chonkProof: ChonkProof.empty(),
|
|
296
357
|
executionSteps
|
|
297
358
|
};
|
|
298
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
* Squashes transient note hashes and nullifiers, mimicking the behavior
|
|
362
|
+
* of the reset kernels. Returns the filtered (surviving) scoped items and private logs.
|
|
363
|
+
*/ function squashTransientSideEffects(taggedPrivateLogs, scopedNoteHashesCLA, scopedNullifiersCLA, noteHashNullifierCounterMap, minRevertibleSideEffectCounter) {
|
|
364
|
+
const { numTransientData, hints: transientDataHints } = buildTransientDataHints(scopedNoteHashesCLA, scopedNullifiersCLA, /*futureNoteHashReads=*/ [], /*futureNullifierReads=*/ [], /*futureLogs=*/ [], noteHashNullifierCounterMap, minRevertibleSideEffectCounter);
|
|
365
|
+
const squashedNoteHashCounters = new Set();
|
|
366
|
+
const squashedNullifierCounters = new Set();
|
|
367
|
+
for(let i = 0; i < numTransientData; i++){
|
|
368
|
+
const hint = transientDataHints[i];
|
|
369
|
+
squashedNoteHashCounters.add(scopedNoteHashesCLA.array[hint.noteHashIndex].counter);
|
|
370
|
+
squashedNullifierCounters.add(scopedNullifiersCLA.array[hint.nullifierIndex].counter);
|
|
371
|
+
}
|
|
372
|
+
return {
|
|
373
|
+
filteredNoteHashes: scopedNoteHashesCLA.getActiveItems().filter((nh)=>!squashedNoteHashCounters.has(nh.counter)),
|
|
374
|
+
filteredNullifiers: scopedNullifiersCLA.getActiveItems().filter((n)=>!squashedNullifierCounters.has(n.counter)),
|
|
375
|
+
filteredPrivateLogs: taggedPrivateLogs.filter((item)=>!squashedNoteHashCounters.has(item.sideEffect.noteHashCounter)).map((item)=>new OrderedSideEffect(item.sideEffect.log, item.counter))
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Verifies settled read requests by checking membership in the note hash and nullifier trees
|
|
380
|
+
* at the tx's anchor block, mimicking the behavior of the kernels
|
|
381
|
+
*/ async function verifyReadRequests(node, anchorBlockHash, noteHashReadRequests, nullifierReadRequests, scopedNoteHashesCLA, scopedNullifiersCLA) {
|
|
382
|
+
const noteHashReadRequestsCLA = new ClaimedLengthArray(padArrayEnd(noteHashReadRequests, ScopedReadRequest.empty(), MAX_NOTE_HASH_READ_REQUESTS_PER_TX), noteHashReadRequests.length);
|
|
383
|
+
const nullifierReadRequestsCLA = new ClaimedLengthArray(padArrayEnd(nullifierReadRequests, ScopedReadRequest.empty(), MAX_NULLIFIER_READ_REQUESTS_PER_TX), nullifierReadRequests.length);
|
|
384
|
+
const noteHashResetActions = getNoteHashReadRequestResetActions(noteHashReadRequestsCLA, scopedNoteHashesCLA);
|
|
385
|
+
const nullifierResetActions = getNullifierReadRequestResetActions(nullifierReadRequestsCLA, scopedNullifiersCLA);
|
|
386
|
+
const settledNoteHashReads = [];
|
|
387
|
+
for(let i = 0; i < noteHashResetActions.actions.length; i++){
|
|
388
|
+
if (noteHashResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
|
|
389
|
+
settledNoteHashReads.push({
|
|
390
|
+
index: i,
|
|
391
|
+
value: noteHashReadRequests[i].value
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
const settledNullifierReads = [];
|
|
396
|
+
for(let i = 0; i < nullifierResetActions.actions.length; i++){
|
|
397
|
+
if (nullifierResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
|
|
398
|
+
settledNullifierReads.push({
|
|
399
|
+
index: i,
|
|
400
|
+
value: nullifierReadRequests[i].value
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
const [noteHashWitnesses, nullifierWitnesses] = await Promise.all([
|
|
405
|
+
Promise.all(settledNoteHashReads.map(({ value })=>node.getNoteHashMembershipWitness(anchorBlockHash, value))),
|
|
406
|
+
Promise.all(settledNullifierReads.map(({ value })=>node.getNullifierMembershipWitness(anchorBlockHash, value)))
|
|
407
|
+
]);
|
|
408
|
+
for(let i = 0; i < settledNoteHashReads.length; i++){
|
|
409
|
+
if (!noteHashWitnesses[i]) {
|
|
410
|
+
throw new Error(`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
for(let i = 0; i < settledNullifierReads.length; i++){
|
|
414
|
+
if (!nullifierWitnesses[i]) {
|
|
415
|
+
throw new Error(`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
299
419
|
function splitOrderedSideEffects(effects, minRevertibleSideEffectCounter) {
|
|
300
420
|
const revertibleSideEffects = [];
|
|
301
421
|
const nonRevertibleSideEffects = [];
|
|
@@ -311,27 +431,30 @@ function splitOrderedSideEffects(effects, minRevertibleSideEffectCounter) {
|
|
|
311
431
|
revertibleSideEffects
|
|
312
432
|
];
|
|
313
433
|
}
|
|
314
|
-
function meterGasUsed(data) {
|
|
434
|
+
function meterGasUsed(data, isPrivateOnlyTx) {
|
|
315
435
|
let meteredDAFields = 0;
|
|
316
436
|
let meteredL2Gas = 0;
|
|
317
437
|
const numNoteHashes = arrayNonEmptyLength(data.noteHashes, (hash)=>hash.isEmpty());
|
|
318
438
|
meteredDAFields += numNoteHashes;
|
|
319
|
-
|
|
439
|
+
const noteHashBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NOTE_HASH : AVM_EMITNOTEHASH_BASE_L2_GAS;
|
|
440
|
+
meteredL2Gas += numNoteHashes * noteHashBaseGas;
|
|
320
441
|
const numNullifiers = arrayNonEmptyLength(data.nullifiers, (nullifier)=>nullifier.isEmpty());
|
|
321
442
|
meteredDAFields += numNullifiers;
|
|
322
|
-
|
|
443
|
+
const nullifierBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NULLIFIER : AVM_EMITNULLIFIER_BASE_L2_GAS;
|
|
444
|
+
meteredL2Gas += numNullifiers * nullifierBaseGas;
|
|
323
445
|
const numL2toL1Messages = arrayNonEmptyLength(data.l2ToL1Msgs, (msg)=>msg.isEmpty());
|
|
324
446
|
meteredDAFields += numL2toL1Messages;
|
|
325
|
-
|
|
447
|
+
const l2ToL1MessageBaseGas = isPrivateOnlyTx ? L2_GAS_PER_L2_TO_L1_MSG : AVM_SENDL2TOL1MSG_BASE_L2_GAS;
|
|
448
|
+
meteredL2Gas += numL2toL1Messages * l2ToL1MessageBaseGas;
|
|
326
449
|
const numPrivatelogs = arrayNonEmptyLength(data.privateLogs, (log)=>log.isEmpty());
|
|
327
450
|
// Every private log emits its length as an additional field
|
|
328
451
|
meteredDAFields += data.privateLogs.reduce((acc, log)=>!log.isEmpty() ? acc + log.emittedLength + 1 : acc, 0);
|
|
329
452
|
meteredL2Gas += numPrivatelogs * L2_GAS_PER_PRIVATE_LOG;
|
|
330
453
|
const numContractClassLogs = arrayNonEmptyLength(data.contractClassLogsHashes, (log)=>log.isEmpty());
|
|
331
|
-
// Every contract class log emits its
|
|
332
|
-
meteredDAFields += data.contractClassLogsHashes.reduce((acc, log)=>!log.isEmpty() ? acc + log.logHash.length +
|
|
454
|
+
// Every contract class log emits its contract address as an additional field
|
|
455
|
+
meteredDAFields += data.contractClassLogsHashes.reduce((acc, log)=>!log.isEmpty() ? acc + log.logHash.length + 1 : acc, 0);
|
|
333
456
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
334
|
-
const meteredDAGas = meteredDAFields *
|
|
457
|
+
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
335
458
|
if (data.publicCallRequests) {
|
|
336
459
|
const dataForPublic = data;
|
|
337
460
|
const numPublicCallRequests = arrayNonEmptyLength(dataForPublic.publicCallRequests, (req)=>req.isEmpty());
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
2
2
|
/**
|
|
3
|
-
* A map that stores the tagging index for a given directional app tagging secret.
|
|
3
|
+
* A map that stores the tagging index range for a given extended directional app tagging secret.
|
|
4
4
|
* Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
|
|
5
5
|
* of sender -> recipient matters.
|
|
6
6
|
*/
|
|
7
7
|
export declare class ExecutionTaggingIndexCache {
|
|
8
8
|
private taggingIndexMap;
|
|
9
|
-
getLastUsedIndex(secret:
|
|
10
|
-
setLastUsedIndex(secret:
|
|
9
|
+
getLastUsedIndex(secret: ExtendedDirectionalAppTaggingSecret): number | undefined;
|
|
10
|
+
setLastUsedIndex(secret: ExtendedDirectionalAppTaggingSecret, index: number): void;
|
|
11
11
|
/**
|
|
12
|
-
* Returns the
|
|
12
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
getUsedTaggingIndexRanges(): TaggingIndexRange[];
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLEtBQUssaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRzs7OztHQUlHO0FBQ0gscUJBQWEsMEJBQTBCO0lBQ3JDLE9BQU8sQ0FBQyxlQUFlLENBQXlFO0lBRXpGLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxtQ0FBbUMsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUV2RjtJQUVNLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxtQ0FBbUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQVVqRjtJQUVEOztPQUVHO0lBQ0kseUJBQXlCLElBQUksaUJBQWlCLEVBQUUsQ0FNdEQ7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEjG;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,eAAe,CAAyE;IAEzF,gBAAgB,CAAC,MAAM,EAAE,mCAAmC,GAAG,MAAM,GAAG,SAAS,CAEvF;IAEM,gBAAgB,CAAC,MAAM,EAAE,mCAAmC,EAAE,KAAK,EAAE,MAAM,QAUjF;IAED;;OAEG;IACI,yBAAyB,IAAI,iBAAiB,EAAE,CAMtD;CACF"}
|
|
@@ -1,26 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
|
|
2
2
|
/**
|
|
3
|
-
* A map that stores the tagging index for a given directional app tagging secret.
|
|
3
|
+
* A map that stores the tagging index range for a given extended directional app tagging secret.
|
|
4
4
|
* Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
|
|
5
5
|
* of sender -> recipient matters.
|
|
6
6
|
*/ export class ExecutionTaggingIndexCache {
|
|
7
7
|
taggingIndexMap = new Map();
|
|
8
8
|
getLastUsedIndex(secret) {
|
|
9
|
-
return this.taggingIndexMap.get(secret.toString());
|
|
9
|
+
return this.taggingIndexMap.get(secret.toString())?.highestIndex;
|
|
10
10
|
}
|
|
11
11
|
setLastUsedIndex(secret, index) {
|
|
12
12
|
const currentValue = this.taggingIndexMap.get(secret.toString());
|
|
13
|
-
if (currentValue !== undefined && currentValue !== index - 1) {
|
|
14
|
-
throw new Error(`Invalid tagging index update. Current value: ${currentValue}, new value: ${index}`);
|
|
13
|
+
if (currentValue !== undefined && currentValue.highestIndex !== index - 1) {
|
|
14
|
+
throw new Error(`Invalid tagging index update. Current value: ${currentValue.highestIndex}, new value: ${index}`);
|
|
15
|
+
}
|
|
16
|
+
if (currentValue !== undefined) {
|
|
17
|
+
currentValue.highestIndex = index;
|
|
18
|
+
} else {
|
|
19
|
+
this.taggingIndexMap.set(secret.toString(), {
|
|
20
|
+
lowestIndex: index,
|
|
21
|
+
highestIndex: index
|
|
22
|
+
});
|
|
15
23
|
}
|
|
16
|
-
this.taggingIndexMap.set(secret.toString(), index);
|
|
17
24
|
}
|
|
18
25
|
/**
|
|
19
|
-
* Returns the
|
|
20
|
-
*/
|
|
21
|
-
return Array.from(this.taggingIndexMap.entries()).map(([secret,
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
27
|
+
*/ getUsedTaggingIndexRanges() {
|
|
28
|
+
return Array.from(this.taggingIndexMap.entries()).map(([secret, { lowestIndex, highestIndex }])=>({
|
|
29
|
+
extendedSecret: ExtendedDirectionalAppTaggingSecret.fromString(secret),
|
|
30
|
+
lowestIndex,
|
|
31
|
+
highestIndex
|
|
24
32
|
}));
|
|
25
33
|
}
|
|
26
34
|
}
|
|
@@ -4,6 +4,7 @@ export { HashedValuesCache } from './hashed_values_cache.js';
|
|
|
4
4
|
export { pickNotes } from './pick_notes.js';
|
|
5
5
|
export type { NoteData, IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
|
|
6
6
|
export { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
|
|
7
|
+
export { MessageContextService } from '../messages/message_context_service.js';
|
|
7
8
|
export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
8
9
|
export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
9
10
|
export { Oracle } from './oracle/oracle.js';
|
|
@@ -11,4 +12,4 @@ export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './ora
|
|
|
11
12
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
12
13
|
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
13
14
|
export { UtilityContext } from './noir-structs/utility_context.js';
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLFlBQVksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAC1G,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAC1G,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -3,6 +3,7 @@ export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
|
3
3
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
4
4
|
export { pickNotes } from './pick_notes.js';
|
|
5
5
|
export { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
|
|
6
|
+
export { MessageContextService } from '../messages/message_context_service.js';
|
|
6
7
|
export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
7
8
|
export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
8
9
|
export { Oracle } from './oracle/oracle.js';
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import { FieldReader } from '@aztec/foundation/serialize';
|
|
3
2
|
import { EventSelector } from '@aztec/stdlib/abi';
|
|
4
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
4
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
6
5
|
/**
|
|
7
|
-
* Intermediate struct used to perform batch event validation by PXE. The `
|
|
6
|
+
* Intermediate struct used to perform batch event validation by PXE. The `utilityValidateAndStoreEnqueuedNotesAndEvents` oracle
|
|
8
7
|
* expects for values of this type to be stored in a `CapsuleArray`.
|
|
9
8
|
*/
|
|
10
9
|
export declare class EventValidationRequest {
|
|
@@ -16,6 +15,6 @@ export declare class EventValidationRequest {
|
|
|
16
15
|
txHash: TxHash;
|
|
17
16
|
recipient: AztecAddress;
|
|
18
17
|
constructor(contractAddress: AztecAddress, eventTypeId: EventSelector, randomness: Fr, serializedEvent: Fr[], eventCommitment: Fr, txHash: TxHash, recipient: AztecAddress);
|
|
19
|
-
static fromFields(fields: Fr[]
|
|
18
|
+
static fromFields(fields: Fr[], maxEventSerializedLen: number): EventValidationRequest;
|
|
20
19
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfdmFsaWRhdGlvbl9yZXF1ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL25vaXItc3RydWN0cy9ldmVudF92YWxpZGF0aW9uX3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFDOzs7R0FHRztBQUNILHFCQUFhLHNCQUFzQjtJQUV4QixlQUFlLEVBQUUsWUFBWTtJQUM3QixXQUFXLEVBQUUsYUFBYTtJQUMxQixVQUFVLEVBQUUsRUFBRTtJQUNkLGVBQWUsRUFBRSxFQUFFLEVBQUU7SUFDckIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsTUFBTSxFQUFFLE1BQU07SUFDZCxTQUFTLEVBQUUsWUFBWTtJQVBoQyxZQUNTLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFdBQVcsRUFBRSxhQUFhLEVBQzFCLFVBQVUsRUFBRSxFQUFFLEVBQ2QsZUFBZSxFQUFFLEVBQUUsRUFBRSxFQUNyQixlQUFlLEVBQUUsRUFBRSxFQUNuQixNQUFNLEVBQUUsTUFBTSxFQUNkLFNBQVMsRUFBRSxZQUFZLEVBQzVCO0lBRUosTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxHQUFHLHNCQUFzQixDQStCckY7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event_validation_request.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/event_validation_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"event_validation_request.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/event_validation_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;GAGG;AACH,qBAAa,sBAAsB;IAExB,eAAe,EAAE,YAAY;IAC7B,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE,EAAE;IACrB,eAAe,EAAE,EAAE;IACnB,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,YAAY;IAPhC,YACS,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,aAAa,EAC1B,UAAU,EAAE,EAAE,EACd,eAAe,EAAE,EAAE,EAAE,EACrB,eAAe,EAAE,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,YAAY,EAC5B;IAEJ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAM,GAAG,sBAAsB,CA+BrF;CACF"}
|