@aztec/pxe 0.0.1-commit.c7c42ec → 0.0.1-commit.cf93bcc56
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 +13 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +74 -20
- package/dest/config/index.d.ts +3 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +17 -0
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
- package/dest/contract_function_simulator/benchmarked_node.js +77 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +57 -34
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +195 -77
- package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +45 -28
- package/dest/contract_function_simulator/index.d.ts +2 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -3
- 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 +7 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -3
- 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 +2 -2
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +17 -13
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
- package/dest/contract_function_simulator/oracle/oracle.d.ts +12 -10
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +67 -44
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +1 -37
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +45 -47
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +92 -53
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +67 -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 +132 -108
- package/dest/contract_sync/contract_sync_service.d.ts +43 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +97 -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 +3 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +2 -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 +31 -8
- package/dest/entrypoints/client/lazy/index.d.ts +3 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +2 -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 +32 -9
- package/dest/entrypoints/pxe_creation_options.d.ts +5 -3
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +5 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +4 -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 +39 -16
- package/dest/events/event_service.d.ts +6 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +19 -22
- package/dest/events/private_event_filter_validator.d.ts +5 -5
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +5 -6
- package/dest/job_coordinator/job_coordinator.d.ts +75 -0
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
- package/dest/job_coordinator/job_coordinator.js +94 -0
- package/dest/logs/log_service.d.ts +8 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +28 -30
- package/dest/notes/note_service.d.ts +10 -9
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +34 -38
- 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 +4 -3
- 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 +3 -3
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +2 -2
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
- package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +16 -10
- 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 +12 -13
- package/dest/private_kernel/private_kernel_oracle.d.ts +24 -28
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +90 -2
- package/dest/pxe.d.ts +76 -58
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +131 -121
- 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.d.ts +24 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +130 -23
- package/dest/storage/contract_store/contract_store.d.ts +1 -1
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +27 -18
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +50 -51
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +284 -263
- 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 +47 -7
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +231 -73
- 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 +15 -8
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.js +88 -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 +19 -9
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +253 -101
- package/dest/tagging/constants.d.ts +2 -0
- package/dest/tagging/constants.d.ts.map +1 -0
- package/dest/tagging/constants.js +10 -0
- 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 +3 -2
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +2 -10
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +3 -2
- 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 +12 -12
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
- 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 +5 -2
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +3 -2
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +8 -8
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +1 -1
- 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 +5 -8
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -2
- 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 +10 -5
- package/package.json +27 -18
- package/src/access_scopes.ts +9 -0
- package/src/bin/check_oracle_version.ts +1 -0
- package/src/block_synchronizer/block_synchronizer.ts +93 -32
- package/src/config/index.ts +14 -0
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/benchmarked_node.ts +103 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +348 -133
- package/src/contract_function_simulator/execution_note_cache.ts +44 -25
- package/src/contract_function_simulator/index.ts +1 -1
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +6 -2
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
- package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
- package/src/contract_function_simulator/oracle/interfaces.ts +22 -12
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
- package/src/contract_function_simulator/oracle/oracle.ts +79 -47
- package/src/contract_function_simulator/oracle/private_execution.ts +1 -69
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +129 -132
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +197 -115
- package/src/contract_sync/contract_sync_service.ts +152 -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 +2 -0
- package/src/entrypoints/client/bundle/utils.ts +23 -16
- package/src/entrypoints/client/lazy/index.ts +2 -0
- package/src/entrypoints/client/lazy/utils.ts +24 -17
- package/src/entrypoints/pxe_creation_options.ts +4 -2
- package/src/entrypoints/server/index.ts +4 -0
- package/src/entrypoints/server/utils.ts +33 -41
- package/src/events/event_service.ts +19 -25
- package/src/events/private_event_filter_validator.ts +3 -5
- package/src/job_coordinator/job_coordinator.ts +150 -0
- package/src/logs/log_service.ts +40 -34
- package/src/notes/note_service.ts +41 -45
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +4 -3
- 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 +2 -2
- package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +39 -28
- package/src/private_kernel/private_kernel_execution_prover.ts +15 -14
- package/src/private_kernel/private_kernel_oracle.ts +116 -36
- package/src/pxe.ts +257 -180
- 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 +159 -23
- package/src/storage/contract_store/contract_store.ts +26 -15
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +326 -320
- package/src/storage/note_store/stored_note.ts +48 -0
- package/src/storage/private_event_store/private_event_store.ts +301 -79
- package/src/storage/private_event_store/stored_private_event.ts +73 -0
- package/src/storage/tagging_store/recipient_tagging_store.ts +106 -20
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +294 -109
- package/src/tagging/constants.ts +10 -0
- package/src/tagging/get_all_logs_by_tags.ts +92 -0
- package/src/tagging/index.ts +2 -11
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +25 -11
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +10 -7
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +5 -13
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +16 -4
- package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
- package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_node.js +0 -27
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- 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/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
- package/dest/public_storage/public_storage_service.d.ts +0 -24
- package/dest/public_storage/public_storage_service.d.ts.map +0 -1
- package/dest/public_storage/public_storage_service.js +0 -26
- package/dest/tree_membership/tree_membership_service.d.ts +0 -52
- package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
- package/dest/tree_membership/tree_membership_service.js +0 -84
- package/src/contract_function_simulator/proxied_node.ts +0 -33
- package/src/private_kernel/private_kernel_oracle_impl.ts +0 -133
- package/src/public_storage/public_storage_service.ts +0 -33
- package/src/tree_membership/tree_membership_service.ts +0 -112
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH } from '@aztec/constants';
|
|
2
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
6
|
-
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
7
5
|
import {
|
|
8
6
|
type ACVMWitness,
|
|
9
7
|
type CircuitSimulator,
|
|
@@ -19,15 +17,10 @@ import {
|
|
|
19
17
|
countArgumentsSize,
|
|
20
18
|
} from '@aztec/stdlib/abi';
|
|
21
19
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
22
|
-
import type { ContractInstance } from '@aztec/stdlib/contract';
|
|
23
|
-
import { DelayedPublicMutableValues, DelayedPublicMutableValuesWithHash } from '@aztec/stdlib/delayed-public-mutable';
|
|
24
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
25
20
|
import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
26
21
|
import type { CircuitWitnessGenerationStats } from '@aztec/stdlib/stats';
|
|
27
|
-
import {
|
|
28
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
22
|
+
import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
|
|
29
23
|
|
|
30
|
-
import { ContractStore } from '../../storage/contract_store/index.js';
|
|
31
24
|
import { Oracle } from './oracle.js';
|
|
32
25
|
import type { PrivateExecutionOracle } from './private_execution_oracle.js';
|
|
33
26
|
|
|
@@ -85,7 +78,6 @@ export async function executePrivateFunction(
|
|
|
85
78
|
|
|
86
79
|
const rawReturnValues = await privateExecutionOracle.privateLoadFromExecutionCache(publicInputs.returnsHash);
|
|
87
80
|
|
|
88
|
-
const noteHashLeafIndexMap = privateExecutionOracle.getNoteHashLeafIndexMap();
|
|
89
81
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
90
82
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|
|
91
83
|
const offchainEffects = privateExecutionOracle.getOffchainEffects();
|
|
@@ -108,7 +100,6 @@ export async function executePrivateFunction(
|
|
|
108
100
|
Buffer.from(artifact.verificationKey!, 'base64'),
|
|
109
101
|
partialWitness,
|
|
110
102
|
publicInputs,
|
|
111
|
-
noteHashLeafIndexMap,
|
|
112
103
|
newNotes,
|
|
113
104
|
noteHashNullifierCounterMap,
|
|
114
105
|
rawReturnValues,
|
|
@@ -148,62 +139,3 @@ export function extractPrivateCircuitPublicInputs(
|
|
|
148
139
|
}
|
|
149
140
|
return PrivateCircuitPublicInputs.fromFields(returnData);
|
|
150
141
|
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Read the current class id of a contract from the execution data provider or AztecNode. If not found, class id
|
|
154
|
-
* from the instance is used.
|
|
155
|
-
* @param contractAddress - The address of the contract to read the class id for.
|
|
156
|
-
* @param instance - The instance of the contract.
|
|
157
|
-
* @param executionStore - The execution data provider.
|
|
158
|
-
* @param blockNumber - The block number at which to load the DelayedPublicMutable storing the class id.
|
|
159
|
-
* @param timestamp - The timestamp at which to obtain the class id from the DelayedPublicMutable.
|
|
160
|
-
* @returns The current class id.
|
|
161
|
-
*/
|
|
162
|
-
export async function readCurrentClassId(
|
|
163
|
-
contractAddress: AztecAddress,
|
|
164
|
-
instance: ContractInstance,
|
|
165
|
-
aztecNode: AztecNode,
|
|
166
|
-
blockNumber: BlockNumber,
|
|
167
|
-
timestamp: UInt64,
|
|
168
|
-
) {
|
|
169
|
-
const { delayedPublicMutableSlot } = await DelayedPublicMutableValuesWithHash.getContractUpdateSlots(contractAddress);
|
|
170
|
-
const delayedPublicMutableValues = await DelayedPublicMutableValues.readFromTree(delayedPublicMutableSlot, slot =>
|
|
171
|
-
aztecNode.getPublicStorageAt(blockNumber, ProtocolContractAddress.ContractInstanceRegistry, slot),
|
|
172
|
-
);
|
|
173
|
-
let currentClassId = delayedPublicMutableValues.svc.getCurrentAt(timestamp)[0];
|
|
174
|
-
if (currentClassId.isZero()) {
|
|
175
|
-
currentClassId = instance.originalContractClassId;
|
|
176
|
-
}
|
|
177
|
-
return currentClassId;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Verify that the current class id of a contract obtained from AztecNode is the same as the one in contract data
|
|
182
|
-
* provider (i.e. PXE's own storage).
|
|
183
|
-
* @param header - The header of the block at which to verify the current class id. If not provided, the anchor block
|
|
184
|
-
* header of the execution data provider is used.
|
|
185
|
-
*/
|
|
186
|
-
export async function verifyCurrentClassId(
|
|
187
|
-
contractAddress: AztecAddress,
|
|
188
|
-
aztecNode: AztecNode,
|
|
189
|
-
contractStore: ContractStore,
|
|
190
|
-
header: BlockHeader,
|
|
191
|
-
) {
|
|
192
|
-
const instance = await contractStore.getContractInstance(contractAddress);
|
|
193
|
-
if (!instance) {
|
|
194
|
-
throw new Error(`No contract instance found for address ${contractAddress.toString()}`);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
const currentClassId = await readCurrentClassId(
|
|
198
|
-
contractAddress,
|
|
199
|
-
instance,
|
|
200
|
-
aztecNode,
|
|
201
|
-
header.globalVariables.blockNumber,
|
|
202
|
-
header.globalVariables.timestamp,
|
|
203
|
-
);
|
|
204
|
-
if (!instance.currentContractClassId.equals(currentClassId)) {
|
|
205
|
-
throw new Error(
|
|
206
|
-
`Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`,
|
|
207
|
-
);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
@@ -2,42 +2,32 @@ import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS, PRIVATE_CONTEXT_INPUTS_LENGTH }
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
|
-
import type { KeyStore } from '@aztec/key-store';
|
|
6
5
|
import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
|
|
7
6
|
import {
|
|
8
7
|
type FunctionAbi,
|
|
9
8
|
type FunctionArtifact,
|
|
9
|
+
type FunctionCall,
|
|
10
10
|
FunctionSelector,
|
|
11
11
|
type NoteSelector,
|
|
12
12
|
countArgumentsSize,
|
|
13
13
|
} from '@aztec/stdlib/abi';
|
|
14
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
15
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
16
|
-
import {
|
|
17
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
15
|
+
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
18
16
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
19
17
|
import { type ContractClassLog, DirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
|
|
20
18
|
import { Tag } from '@aztec/stdlib/logs';
|
|
21
19
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
22
20
|
import {
|
|
23
|
-
type BlockHeader,
|
|
24
21
|
CallContext,
|
|
25
|
-
Capsule,
|
|
26
22
|
CountedContractClassLog,
|
|
27
23
|
NoteAndSlot,
|
|
28
24
|
PrivateCallExecutionResult,
|
|
29
25
|
type TxContext,
|
|
30
26
|
} from '@aztec/stdlib/tx';
|
|
31
27
|
|
|
28
|
+
import type { AccessScopes } from '../../access_scopes.js';
|
|
29
|
+
import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
|
|
32
30
|
import { NoteService } from '../../notes/note_service.js';
|
|
33
|
-
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
34
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
35
|
-
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
36
|
-
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
37
|
-
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
38
|
-
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
39
|
-
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
40
|
-
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
41
31
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
42
32
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
43
33
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
@@ -45,8 +35,26 @@ import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js'
|
|
|
45
35
|
import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
46
36
|
import { pickNotes } from '../pick_notes.js';
|
|
47
37
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
48
|
-
import { executePrivateFunction
|
|
49
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
38
|
+
import { executePrivateFunction } from './private_execution.js';
|
|
39
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
40
|
+
|
|
41
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
42
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
43
|
+
argsHash: Fr;
|
|
44
|
+
txContext: TxContext;
|
|
45
|
+
callContext: CallContext;
|
|
46
|
+
/** Needed to trigger contract synchronization before nested calls */
|
|
47
|
+
utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
48
|
+
executionCache: HashedValuesCache;
|
|
49
|
+
noteCache: ExecutionNoteCache;
|
|
50
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
51
|
+
senderTaggingStore: SenderTaggingStore;
|
|
52
|
+
contractSyncService: ContractSyncService;
|
|
53
|
+
totalPublicCalldataCount?: number;
|
|
54
|
+
sideEffectCounter?: number;
|
|
55
|
+
senderForTags?: AztecAddress;
|
|
56
|
+
simulator?: CircuitSimulator;
|
|
57
|
+
};
|
|
50
58
|
|
|
51
59
|
/**
|
|
52
60
|
* The execution oracle for the private part of a transaction.
|
|
@@ -63,69 +71,44 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
63
71
|
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
64
72
|
*/
|
|
65
73
|
private newNotes: NoteAndSlot[] = [];
|
|
66
|
-
/**
|
|
67
|
-
* Notes from previous transactions that are returned to the oracle call `getNotes` during this execution.
|
|
68
|
-
* The mapping maps from the unique siloed note hash to the index for notes created in private executions.
|
|
69
|
-
* It maps from siloed note hash to the index for notes created by public functions.
|
|
70
|
-
*
|
|
71
|
-
* They are not part of the ExecutionNoteCache and being forwarded to nested contexts via `extend()`
|
|
72
|
-
* because these notes are meant to be maintained on a per-call basis
|
|
73
|
-
* They should act as references for the read requests output by an app circuit via public inputs.
|
|
74
|
-
*/
|
|
75
|
-
private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
|
|
76
74
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
77
75
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
78
76
|
private offchainEffects: { data: Fr[] }[] = [];
|
|
79
77
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
capsules,
|
|
115
|
-
anchorBlockHeader,
|
|
116
|
-
contractStore,
|
|
117
|
-
noteStore,
|
|
118
|
-
keyStore,
|
|
119
|
-
addressStore,
|
|
120
|
-
aztecNode,
|
|
121
|
-
anchorBlockStore,
|
|
122
|
-
recipientTaggingStore,
|
|
123
|
-
senderAddressBookStore,
|
|
124
|
-
capsuleStore,
|
|
125
|
-
privateEventStore,
|
|
126
|
-
log,
|
|
127
|
-
scopes,
|
|
128
|
-
);
|
|
79
|
+
private readonly argsHash: Fr;
|
|
80
|
+
private readonly txContext: TxContext;
|
|
81
|
+
private readonly callContext: CallContext;
|
|
82
|
+
private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
83
|
+
private readonly executionCache: HashedValuesCache;
|
|
84
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
85
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
86
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
87
|
+
private readonly contractSyncService: ContractSyncService;
|
|
88
|
+
private totalPublicCalldataCount: number;
|
|
89
|
+
protected sideEffectCounter: number;
|
|
90
|
+
private senderForTags?: AztecAddress;
|
|
91
|
+
private readonly simulator?: CircuitSimulator;
|
|
92
|
+
|
|
93
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
94
|
+
super({
|
|
95
|
+
...args,
|
|
96
|
+
contractAddress: args.callContext.contractAddress,
|
|
97
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
98
|
+
});
|
|
99
|
+
this.argsHash = args.argsHash;
|
|
100
|
+
this.txContext = args.txContext;
|
|
101
|
+
this.callContext = args.callContext;
|
|
102
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
103
|
+
this.executionCache = args.executionCache;
|
|
104
|
+
this.noteCache = args.noteCache;
|
|
105
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
106
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
107
|
+
this.contractSyncService = args.contractSyncService;
|
|
108
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
109
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
110
|
+
this.senderForTags = args.senderForTags;
|
|
111
|
+
this.simulator = args.simulator;
|
|
129
112
|
}
|
|
130
113
|
|
|
131
114
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
@@ -157,14 +140,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
157
140
|
return toACVMWitness(0, fields);
|
|
158
141
|
}
|
|
159
142
|
|
|
160
|
-
/**
|
|
161
|
-
* The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
|
|
162
|
-
* regarding which note hash each settled read request corresponds to.
|
|
163
|
-
*/
|
|
164
|
-
public getNoteHashLeafIndexMap() {
|
|
165
|
-
return this.noteHashLeafIndexMap;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
143
|
/**
|
|
169
144
|
* Get the data for the newly created notes.
|
|
170
145
|
*/
|
|
@@ -257,7 +232,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
257
232
|
sender: AztecAddress,
|
|
258
233
|
recipient: AztecAddress,
|
|
259
234
|
) {
|
|
260
|
-
const senderCompleteAddress = await this.
|
|
235
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
261
236
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
262
237
|
return DirectionalAppTaggingSecret.compute(
|
|
263
238
|
senderCompleteAddress,
|
|
@@ -278,9 +253,16 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
278
253
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
279
254
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
280
255
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
281
|
-
await syncSenderTaggingIndexes(
|
|
282
|
-
|
|
283
|
-
|
|
256
|
+
await syncSenderTaggingIndexes(
|
|
257
|
+
secret,
|
|
258
|
+
this.contractAddress,
|
|
259
|
+
this.aztecNode,
|
|
260
|
+
this.senderTaggingStore,
|
|
261
|
+
await this.anchorBlockHeader.hash(),
|
|
262
|
+
this.jobId,
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
284
266
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
285
267
|
// Otherwise, the next index to use is one past the last used index
|
|
286
268
|
return lastUsedIndex === undefined ? 0 : lastUsedIndex + 1;
|
|
@@ -369,7 +351,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
369
351
|
|
|
370
352
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
371
353
|
|
|
372
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
354
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
373
355
|
const dbNotes = await noteService.getNotes(
|
|
374
356
|
this.callContext.contractAddress,
|
|
375
357
|
owner,
|
|
@@ -399,23 +381,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
399
381
|
.join(', ')}`,
|
|
400
382
|
);
|
|
401
383
|
|
|
402
|
-
const noteHashesAndIndexes = await Promise.all(
|
|
403
|
-
notes.map(async n => {
|
|
404
|
-
if (n.index !== undefined) {
|
|
405
|
-
const siloedNoteHash = await siloNoteHash(n.contractAddress, n.noteHash);
|
|
406
|
-
const uniqueNoteHash = await computeUniqueNoteHash(n.noteNonce, siloedNoteHash);
|
|
407
|
-
|
|
408
|
-
return { hash: uniqueNoteHash, index: n.index };
|
|
409
|
-
}
|
|
410
|
-
}),
|
|
411
|
-
);
|
|
412
|
-
|
|
413
|
-
noteHashesAndIndexes
|
|
414
|
-
.filter(n => n !== undefined)
|
|
415
|
-
.forEach(n => {
|
|
416
|
-
this.noteHashLeafIndexMap.set(n!.hash.toBigInt(), n!.index);
|
|
417
|
-
});
|
|
418
|
-
|
|
419
384
|
return notes;
|
|
420
385
|
}
|
|
421
386
|
|
|
@@ -458,6 +423,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
458
423
|
note,
|
|
459
424
|
siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
|
|
460
425
|
noteHash,
|
|
426
|
+
isPending: true, // This note has just been created and hence is not settled yet.
|
|
461
427
|
},
|
|
462
428
|
counter,
|
|
463
429
|
);
|
|
@@ -492,6 +458,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
492
458
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
493
459
|
}
|
|
494
460
|
|
|
461
|
+
/**
|
|
462
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if privateNotifyCreatedNullifier has been
|
|
463
|
+
* called for this inner nullifier from the contract with the specified address.
|
|
464
|
+
* @param innerNullifier - The inner nullifier to check.
|
|
465
|
+
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
466
|
+
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
467
|
+
*/
|
|
468
|
+
public async privateIsNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
469
|
+
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
470
|
+
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
471
|
+
return Promise.resolve(isNullifierPending);
|
|
472
|
+
}
|
|
473
|
+
|
|
495
474
|
/**
|
|
496
475
|
* Emit a contract class log.
|
|
497
476
|
* This fn exists because we only carry a poseidon hash through the kernels, and need to
|
|
@@ -548,7 +527,23 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
548
527
|
|
|
549
528
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
550
529
|
|
|
551
|
-
|
|
530
|
+
// When scopes are set and the target contract is a registered account (has keys in the keyStore),
|
|
531
|
+
// expand scopes to include it so nested private calls can sync and read the contract's own notes.
|
|
532
|
+
// We only expand for registered accounts because the log service needs the recipient's keys to derive
|
|
533
|
+
// tagging secrets, which are only available for registered accounts.
|
|
534
|
+
const expandedScopes =
|
|
535
|
+
this.scopes !== 'ALL_SCOPES' && (await this.keyStore.hasAccount(targetContractAddress))
|
|
536
|
+
? [...this.scopes, targetContractAddress]
|
|
537
|
+
: this.scopes;
|
|
538
|
+
|
|
539
|
+
await this.contractSyncService.ensureContractSynced(
|
|
540
|
+
targetContractAddress,
|
|
541
|
+
functionSelector,
|
|
542
|
+
this.utilityExecutor,
|
|
543
|
+
this.anchorBlockHeader,
|
|
544
|
+
this.jobId,
|
|
545
|
+
expandedScopes,
|
|
546
|
+
);
|
|
552
547
|
|
|
553
548
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
554
549
|
targetContractAddress,
|
|
@@ -559,39 +554,41 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
559
554
|
|
|
560
555
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
561
556
|
|
|
562
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
557
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
563
558
|
argsHash,
|
|
564
|
-
derivedTxContext,
|
|
565
|
-
derivedCallContext,
|
|
566
|
-
this.anchorBlockHeader,
|
|
567
|
-
this.
|
|
568
|
-
this.
|
|
569
|
-
this.
|
|
570
|
-
this.
|
|
571
|
-
this.
|
|
572
|
-
this.
|
|
573
|
-
this.
|
|
574
|
-
this.
|
|
575
|
-
this.
|
|
576
|
-
this.
|
|
577
|
-
this.
|
|
578
|
-
this.senderTaggingStore,
|
|
579
|
-
this.recipientTaggingStore,
|
|
580
|
-
this.senderAddressBookStore,
|
|
581
|
-
this.capsuleStore,
|
|
582
|
-
this.privateEventStore,
|
|
583
|
-
this.
|
|
559
|
+
txContext: derivedTxContext,
|
|
560
|
+
callContext: derivedCallContext,
|
|
561
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
562
|
+
utilityExecutor: this.utilityExecutor,
|
|
563
|
+
authWitnesses: this.authWitnesses,
|
|
564
|
+
capsules: this.capsules,
|
|
565
|
+
executionCache: this.executionCache,
|
|
566
|
+
noteCache: this.noteCache,
|
|
567
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
568
|
+
contractStore: this.contractStore,
|
|
569
|
+
noteStore: this.noteStore,
|
|
570
|
+
keyStore: this.keyStore,
|
|
571
|
+
addressStore: this.addressStore,
|
|
572
|
+
aztecNode: this.aztecNode,
|
|
573
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
574
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
575
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
576
|
+
capsuleStore: this.capsuleStore,
|
|
577
|
+
privateEventStore: this.privateEventStore,
|
|
578
|
+
contractSyncService: this.contractSyncService,
|
|
579
|
+
jobId: this.jobId,
|
|
580
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
584
581
|
sideEffectCounter,
|
|
585
|
-
this.log,
|
|
586
|
-
|
|
587
|
-
this.senderForTags,
|
|
588
|
-
this.simulator
|
|
589
|
-
);
|
|
582
|
+
log: this.log,
|
|
583
|
+
scopes: expandedScopes,
|
|
584
|
+
senderForTags: this.senderForTags,
|
|
585
|
+
simulator: this.simulator!,
|
|
586
|
+
});
|
|
590
587
|
|
|
591
588
|
const setupTime = simulatorSetupTimer.ms();
|
|
592
589
|
|
|
593
590
|
const childExecutionResult = await executePrivateFunction(
|
|
594
|
-
this.simulator
|
|
591
|
+
this.simulator!,
|
|
595
592
|
privateExecutionOracle,
|
|
596
593
|
targetArtifact,
|
|
597
594
|
targetContractAddress,
|