@aztec/pxe 0.0.1-commit.0c875d939 → 0.0.1-commit.0dc957cde
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/bin/check_oracle_version.js +4 -4
- package/dest/block_synchronizer/block_synchronizer.d.ts +6 -2
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +19 -1
- package/dest/config/index.d.ts +2 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +8 -15
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +13 -5
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +44 -19
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
- 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 +4 -6
- 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 +8 -10
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
- 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 +2 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -7
- 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 +6 -11
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +61 -45
- 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 +47 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -44
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +281 -96
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +25 -50
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +59 -84
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +94 -60
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +277 -114
- package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +20 -3
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
- package/dest/contract_logging.d.ts +27 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +38 -0
- package/dest/contract_sync/contract_sync_service.d.ts +6 -5
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
- package/dest/contract_sync/contract_sync_service.js +62 -43
- package/dest/contract_sync/helpers.d.ts +2 -3
- package/dest/contract_sync/helpers.d.ts.map +1 -1
- package/dest/contract_sync/helpers.js +7 -2
- package/dest/debug/pxe_debug_utils.d.ts +3 -3
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +4 -4
- package/dest/entrypoints/client/bundle/index.d.ts +2 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +2 -2
- package/dest/entrypoints/client/lazy/index.d.ts +2 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +1 -1
- 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 +2 -2
- package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/pxe_creation_options.js +3 -1
- package/dest/entrypoints/server/index.d.ts +2 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +1 -2
- package/dest/entrypoints/server/utils.d.ts +2 -2
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +2 -2
- package/dest/events/event_service.d.ts +3 -2
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +26 -5
- package/dest/events/private_event_filter_validator.d.ts +3 -2
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +15 -0
- package/dest/logs/log_service.d.ts +7 -8
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +29 -39
- 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 +4 -5
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +14 -5
- package/dest/notes_filter.d.ts +2 -3
- package/dest/notes_filter.d.ts.map +1 -1
- package/dest/oracle_version.d.ts +4 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +20 -10
- 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 +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +18 -13
- package/dest/private_kernel/private_kernel_oracle.d.ts +10 -6
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +19 -18
- package/dest/pxe.d.ts +17 -13
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +91 -60
- package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
- package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_service.js +50 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +36 -28
- package/dest/storage/capsule_store/index.d.ts +2 -1
- package/dest/storage/capsule_store/index.d.ts.map +1 -1
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/contract_store/contract_store.d.ts +42 -15
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +143 -65
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +1 -1
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +2 -2
- package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +3 -0
- package/dest/storage/private_event_store/stored_private_event.js +1 -1
- 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/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 +141 -115
- package/dest/tagging/get_all_logs_by_tags.d.ts +1 -1
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +17 -3
- package/dest/tagging/index.d.ts +3 -3
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +1 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -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 +8 -22
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -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 +12 -11
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -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 +20 -10
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -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 +36 -24
- package/package.json +16 -16
- package/src/bin/check_oracle_version.ts +4 -4
- package/src/block_synchronizer/block_synchronizer.ts +22 -2
- package/src/config/index.ts +3 -9
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +66 -33
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- 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 -9
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -10
- package/src/contract_function_simulator/oracle/interfaces.ts +82 -54
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
- package/src/contract_function_simulator/oracle/oracle.ts +363 -139
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +72 -104
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +457 -152
- package/src/contract_function_simulator/pick_notes.ts +22 -3
- package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
- package/src/contract_logging.ts +52 -0
- package/src/contract_sync/contract_sync_service.ts +99 -75
- package/src/contract_sync/helpers.ts +4 -4
- package/src/debug/pxe_debug_utils.ts +7 -7
- package/src/entrypoints/client/bundle/index.ts +1 -1
- package/src/entrypoints/client/bundle/utils.ts +2 -3
- package/src/entrypoints/client/lazy/index.ts +1 -1
- package/src/entrypoints/client/lazy/utils.ts +2 -3
- package/src/entrypoints/pxe_creation_options.ts +7 -0
- package/src/entrypoints/server/index.ts +1 -2
- package/src/entrypoints/server/utils.ts +2 -3
- package/src/events/event_service.ts +30 -5
- package/src/events/private_event_filter_validator.ts +21 -1
- package/src/logs/log_service.ts +59 -75
- package/src/messages/message_context_service.ts +44 -0
- package/src/notes/note_service.ts +18 -8
- package/src/notes_filter.ts +1 -3
- package/src/oracle_version.ts +20 -10
- 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 +18 -16
- package/src/private_kernel/private_kernel_oracle.ts +21 -21
- package/src/pxe.ts +152 -74
- package/src/storage/anchor_block_store/anchor_block_store.ts +1 -1
- package/src/storage/capsule_store/capsule_service.ts +90 -0
- package/src/storage/capsule_store/capsule_store.ts +44 -26
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +177 -76
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +2 -5
- package/src/storage/private_event_store/private_event_store.ts +4 -0
- package/src/storage/private_event_store/stored_private_event.ts +1 -1
- package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
- package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
- package/src/tagging/get_all_logs_by_tags.ts +28 -4
- package/src/tagging/index.ts +2 -2
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +12 -25
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +23 -10
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -26
- package/dest/access_scopes.d.ts +0 -9
- package/dest/access_scopes.d.ts.map +0 -1
- package/dest/access_scopes.js +0 -6
- 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/src/access_scopes.ts +0 -9
package/dest/pxe.d.ts
CHANGED
|
@@ -9,8 +9,7 @@ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
|
9
9
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
10
|
import { CompleteAddress, type ContractInstanceWithAddress, type PartialAddress } from '@aztec/stdlib/contract';
|
|
11
11
|
import type { AztecNode, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
12
|
-
import { BlockHeader, type InTx, SimulationOverrides, TxExecutionRequest, TxProfileResult, TxProvingResult, TxSimulationResult,
|
|
13
|
-
import type { AccessScopes } from './access_scopes.js';
|
|
12
|
+
import { BlockHeader, type InTx, SimulationOverrides, TxExecutionRequest, TxProfileResult, TxProvingResult, TxSimulationResult, UtilityExecutionResult } from '@aztec/stdlib/tx';
|
|
14
13
|
import type { PXEConfig } from './config/index.js';
|
|
15
14
|
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
16
15
|
export type PackedPrivateEvent = InTx & {
|
|
@@ -24,7 +23,7 @@ export type ProfileTxOpts = {
|
|
|
24
23
|
/** If true, proof generation is skipped during profiling. Defaults to true. */
|
|
25
24
|
skipProofGeneration?: boolean;
|
|
26
25
|
/** Addresses whose private state and keys are accessible during private execution. */
|
|
27
|
-
scopes:
|
|
26
|
+
scopes: AztecAddress[];
|
|
28
27
|
};
|
|
29
28
|
/** Options for PXE.simulateTx. */
|
|
30
29
|
export type SimulateTxOpts = {
|
|
@@ -34,17 +33,19 @@ export type SimulateTxOpts = {
|
|
|
34
33
|
skipTxValidation?: boolean;
|
|
35
34
|
/** If false, fees are enforced. */
|
|
36
35
|
skipFeeEnforcement?: boolean;
|
|
37
|
-
/**
|
|
36
|
+
/** If true, kernel logic is emulated in TS for simulation */
|
|
37
|
+
skipKernels?: boolean;
|
|
38
|
+
/** State overrides for the simulation, such as contract instances and artifacts. Requires skipKernels: true */
|
|
38
39
|
overrides?: SimulationOverrides;
|
|
39
40
|
/** Addresses whose private state and keys are accessible during private execution */
|
|
40
|
-
scopes:
|
|
41
|
+
scopes: AztecAddress[];
|
|
41
42
|
};
|
|
42
|
-
/** Options for PXE.
|
|
43
|
-
export type
|
|
43
|
+
/** Options for PXE.executeUtility. */
|
|
44
|
+
export type ExecuteUtilityOpts = {
|
|
44
45
|
/** The authentication witnesses required for the function call. */
|
|
45
46
|
authwits?: AuthWitness[];
|
|
46
47
|
/** The accounts whose notes we can access in this call */
|
|
47
|
-
scopes:
|
|
48
|
+
scopes: AztecAddress[];
|
|
48
49
|
};
|
|
49
50
|
/** Args for PXE.create. */
|
|
50
51
|
export type PXECreateArgs = {
|
|
@@ -70,6 +71,7 @@ export type PXECreateArgs = {
|
|
|
70
71
|
export declare class PXE {
|
|
71
72
|
#private;
|
|
72
73
|
private node;
|
|
74
|
+
private db;
|
|
73
75
|
private blockStateSynchronizer;
|
|
74
76
|
private keyStore;
|
|
75
77
|
private contractStore;
|
|
@@ -82,6 +84,8 @@ export declare class PXE {
|
|
|
82
84
|
private addressStore;
|
|
83
85
|
private privateEventStore;
|
|
84
86
|
private contractSyncService;
|
|
87
|
+
private messageContextService;
|
|
88
|
+
private l2TipsStore;
|
|
85
89
|
private simulator;
|
|
86
90
|
private proverEnabled;
|
|
87
91
|
private proofCreator;
|
|
@@ -222,12 +226,12 @@ export declare class PXE {
|
|
|
222
226
|
*
|
|
223
227
|
* TODO(#7456) Prevent msgSender being defined here for the first call
|
|
224
228
|
*/
|
|
225
|
-
simulateTx(txRequest: TxExecutionRequest, { simulatePublic, skipTxValidation, skipFeeEnforcement, overrides, scopes }: SimulateTxOpts): Promise<TxSimulationResult>;
|
|
229
|
+
simulateTx(txRequest: TxExecutionRequest, { simulatePublic, skipTxValidation, skipFeeEnforcement, skipKernels, overrides, scopes }: SimulateTxOpts): Promise<TxSimulationResult>;
|
|
226
230
|
/**
|
|
227
|
-
*
|
|
231
|
+
* Executes a contract utility function.
|
|
228
232
|
* @param call - The function call containing the function details, arguments, and target contract address.
|
|
229
233
|
*/
|
|
230
|
-
|
|
234
|
+
executeUtility(call: FunctionCall, { authwits, scopes }?: ExecuteUtilityOpts): Promise<UtilityExecutionResult>;
|
|
231
235
|
/**
|
|
232
236
|
* Returns the private events given search parameters.
|
|
233
237
|
* @param eventSelector - Event selector to search for.
|
|
@@ -243,8 +247,8 @@ export declare class PXE {
|
|
|
243
247
|
*/
|
|
244
248
|
getPrivateEvents(eventSelector: EventSelector, filter: PrivateEventFilter): Promise<PackedPrivateEvent[]>;
|
|
245
249
|
/**
|
|
246
|
-
* Stops the PXE's job queue.
|
|
250
|
+
* Stops the PXE's job queue and closes the backing store.
|
|
247
251
|
*/
|
|
248
252
|
stop(): Promise<void>;
|
|
249
253
|
}
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBcUMsTUFBTSx1QkFBdUIsQ0FBQztBQUl2RixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxLQUFLLHlCQUF5QixFQUF5QixNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBR2IsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLEtBQUssMkJBQTJCLEVBQ2hDLEtBQUssY0FBYyxFQUdwQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTXRGLE9BQU8sRUFDTCxXQUFXLEVBRVgsS0FBSyxJQUFJLEVBS1QsbUJBQW1CLEVBR25CLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdkIsTUFBTSxrQkFBa0IsQ0FBQztBQUsxQixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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
|
package/dest/pxe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pxe.d.ts","sourceRoot":"","sources":["../src/pxe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAqC,MAAM,uBAAuB,CAAC;AAIvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,KAAK,yBAAyB,EAAyB,MAAM,2BAA2B,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EACrB,aAAa,EACb,YAAY,EAGb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"pxe.d.ts","sourceRoot":"","sources":["../src/pxe.ts"],"names":[],"mappings":"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"}
|
package/dest/pxe.js
CHANGED
|
@@ -13,12 +13,14 @@ import { BlockSynchronizer } from './block_synchronizer/index.js';
|
|
|
13
13
|
import { BenchmarkedNodeFactory } from './contract_function_simulator/benchmarked_node.js';
|
|
14
14
|
import { ContractFunctionSimulator, generateSimulatedProvingResult } from './contract_function_simulator/contract_function_simulator.js';
|
|
15
15
|
import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
|
|
16
|
+
import { displayDebugLogs } from './contract_logging.js';
|
|
16
17
|
import { ContractSyncService } from './contract_sync/contract_sync_service.js';
|
|
17
18
|
import { readCurrentClassId } from './contract_sync/helpers.js';
|
|
18
19
|
import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
|
|
19
20
|
import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
|
|
20
21
|
import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
|
|
21
22
|
import { JobCoordinator } from './job_coordinator/job_coordinator.js';
|
|
23
|
+
import { MessageContextService } from './messages/message_context_service.js';
|
|
22
24
|
import { PrivateKernelExecutionProver } from './private_kernel/private_kernel_execution_prover.js';
|
|
23
25
|
import { PrivateKernelOracle } from './private_kernel/private_kernel_oracle.js';
|
|
24
26
|
import { AddressStore } from './storage/address_store/address_store.js';
|
|
@@ -35,6 +37,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
35
37
|
* manage private state of users.
|
|
36
38
|
*/ export class PXE {
|
|
37
39
|
node;
|
|
40
|
+
db;
|
|
38
41
|
blockStateSynchronizer;
|
|
39
42
|
keyStore;
|
|
40
43
|
contractStore;
|
|
@@ -47,6 +50,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
47
50
|
addressStore;
|
|
48
51
|
privateEventStore;
|
|
49
52
|
contractSyncService;
|
|
53
|
+
messageContextService;
|
|
54
|
+
l2TipsStore;
|
|
50
55
|
simulator;
|
|
51
56
|
proverEnabled;
|
|
52
57
|
proofCreator;
|
|
@@ -55,8 +60,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
55
60
|
jobQueue;
|
|
56
61
|
jobCoordinator;
|
|
57
62
|
debug;
|
|
58
|
-
constructor(node, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debug){
|
|
63
|
+
constructor(node, db, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, messageContextService, l2TipsStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debug){
|
|
59
64
|
this.node = node;
|
|
65
|
+
this.db = db;
|
|
60
66
|
this.blockStateSynchronizer = blockStateSynchronizer;
|
|
61
67
|
this.keyStore = keyStore;
|
|
62
68
|
this.contractStore = contractStore;
|
|
@@ -69,6 +75,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
69
75
|
this.addressStore = addressStore;
|
|
70
76
|
this.privateEventStore = privateEventStore;
|
|
71
77
|
this.contractSyncService = contractSyncService;
|
|
78
|
+
this.messageContextService = messageContextService;
|
|
79
|
+
this.l2TipsStore = l2TipsStore;
|
|
72
80
|
this.simulator = simulator;
|
|
73
81
|
this.proverEnabled = proverEnabled;
|
|
74
82
|
this.proofCreator = proofCreator;
|
|
@@ -102,6 +110,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
102
110
|
const keyStore = new KeyStore(store);
|
|
103
111
|
const tipsStore = new L2TipsKVStore(store, 'pxe');
|
|
104
112
|
const contractSyncService = new ContractSyncService(node, contractStore, noteStore, createLogger('pxe:contract_sync', bindings));
|
|
113
|
+
const messageContextService = new MessageContextService(node);
|
|
105
114
|
const synchronizer = new BlockSynchronizer(node, store, anchorBlockStore, noteStore, privateEventStore, tipsStore, contractSyncService, config, bindings);
|
|
106
115
|
const jobCoordinator = new JobCoordinator(store, bindings);
|
|
107
116
|
jobCoordinator.registerStores([
|
|
@@ -114,8 +123,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
114
123
|
]);
|
|
115
124
|
const debugUtils = new PXEDebugUtils(contractSyncService, noteStore, synchronizer, anchorBlockStore);
|
|
116
125
|
const jobQueue = new SerialQueue();
|
|
117
|
-
const pxe = new PXE(node, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debugUtils);
|
|
118
|
-
debugUtils.setPXEHelpers(pxe.#putInJobQueue.bind(pxe), pxe.#getSimulatorForTx.bind(pxe), pxe.#
|
|
126
|
+
const pxe = new PXE(node, store, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, messageContextService, tipsStore, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debugUtils);
|
|
127
|
+
debugUtils.setPXEHelpers(pxe.#putInJobQueue.bind(pxe), pxe.#getSimulatorForTx.bind(pxe), pxe.#executeUtility.bind(pxe));
|
|
119
128
|
pxe.jobQueue.start();
|
|
120
129
|
await pxe.#registerProtocolContracts();
|
|
121
130
|
log.info(`Started PXE connected to chain ${info.l1ChainId} version ${info.rollupVersion}`);
|
|
@@ -130,13 +139,15 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
130
139
|
keyStore: this.keyStore,
|
|
131
140
|
addressStore: this.addressStore,
|
|
132
141
|
aztecNode: BenchmarkedNodeFactory.create(this.node),
|
|
142
|
+
l2TipsStore: this.l2TipsStore,
|
|
133
143
|
senderTaggingStore: this.senderTaggingStore,
|
|
134
144
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
135
145
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
136
146
|
capsuleStore: this.capsuleStore,
|
|
137
147
|
privateEventStore: this.privateEventStore,
|
|
138
148
|
simulator: this.simulator,
|
|
139
|
-
contractSyncService: this.contractSyncService
|
|
149
|
+
contractSyncService: this.contractSyncService,
|
|
150
|
+
messageContextService: this.messageContextService
|
|
140
151
|
});
|
|
141
152
|
}
|
|
142
153
|
#contextualizeError(err, ...context) {
|
|
@@ -180,8 +191,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
180
191
|
async #registerProtocolContracts() {
|
|
181
192
|
const registered = {};
|
|
182
193
|
for (const name of protocolContractNames){
|
|
183
|
-
const { address,
|
|
184
|
-
await this.contractStore.addContractArtifact(
|
|
194
|
+
const { address, instance, artifact } = await this.protocolContractsProvider.getProtocolContractArtifact(name);
|
|
195
|
+
await this.contractStore.addContractArtifact(artifact);
|
|
185
196
|
await this.contractStore.addContractInstance(instance);
|
|
186
197
|
registered[name] = address.toString();
|
|
187
198
|
}
|
|
@@ -189,11 +200,10 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
189
200
|
}
|
|
190
201
|
// Executes the entrypoint private function, as well as all nested private
|
|
191
202
|
// functions that might arise.
|
|
192
|
-
async #executePrivate(contractFunctionSimulator, txRequest, scopes, jobId) {
|
|
203
|
+
async #executePrivate(contractFunctionSimulator, txRequest, anchorBlockHeader, scopes, jobId) {
|
|
193
204
|
const { origin: contractAddress, functionSelector } = txRequest;
|
|
194
205
|
try {
|
|
195
|
-
|
|
196
|
-
await this.contractSyncService.ensureContractSynced(contractAddress, functionSelector, (privateSyncCall, execScopes)=>this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
|
|
206
|
+
await this.contractSyncService.ensureContractSynced(contractAddress, functionSelector, (privateSyncCall, execScopes)=>this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
|
|
197
207
|
const result = await contractFunctionSimulator.run(txRequest, {
|
|
198
208
|
contractAddress,
|
|
199
209
|
selector: functionSelector,
|
|
@@ -211,18 +221,22 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
211
221
|
}
|
|
212
222
|
}
|
|
213
223
|
/**
|
|
214
|
-
*
|
|
224
|
+
* Execute a utility function call on the given contract.
|
|
215
225
|
* @param contractFunctionSimulator - The simulator to use for the function call.
|
|
216
226
|
* @param call - The function call to execute.
|
|
217
227
|
* @param authWitnesses - Authentication witnesses required for the function call.
|
|
218
228
|
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
219
229
|
* accounts if not specified.
|
|
220
230
|
* @param jobId - The job ID for staged writes.
|
|
221
|
-
* @returns The
|
|
222
|
-
*/ async #
|
|
231
|
+
* @returns The execution result containing the outputs of the utility function.
|
|
232
|
+
*/ async #executeUtility(contractFunctionSimulator, call, authWitnesses, scopes, jobId) {
|
|
223
233
|
try {
|
|
224
234
|
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
225
|
-
|
|
235
|
+
const { result, offchainEffects } = await contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes, jobId);
|
|
236
|
+
return {
|
|
237
|
+
result,
|
|
238
|
+
offchainEffects
|
|
239
|
+
};
|
|
226
240
|
} catch (err) {
|
|
227
241
|
if (err instanceof SimulationError) {
|
|
228
242
|
await enrichSimulationError(err, this.contractStore, this.log);
|
|
@@ -265,10 +279,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
265
279
|
* @param privateExecutionResult - The result of the private execution
|
|
266
280
|
* @param config - The configuration for the kernel execution prover.
|
|
267
281
|
* @returns An object that contains the output of the kernel execution, including the ChonkProof if proving is enabled.
|
|
268
|
-
*/ async #prove(txExecutionRequest, proofCreator, privateExecutionResult, config) {
|
|
269
|
-
const
|
|
270
|
-
const anchorBlockHash = await anchorBlockHeader.hash();
|
|
271
|
-
const kernelOracle = new PrivateKernelOracle(this.contractStore, this.keyStore, this.node, anchorBlockHash);
|
|
282
|
+
*/ async #prove(txExecutionRequest, proofCreator, privateExecutionResult, anchorBlockHeader, config) {
|
|
283
|
+
const kernelOracle = new PrivateKernelOracle(this.contractStore, this.keyStore, this.node, anchorBlockHeader);
|
|
272
284
|
const kernelTraceProver = new PrivateKernelExecutionProver(kernelOracle, proofCreator, !this.proverEnabled, this.log.getBindings());
|
|
273
285
|
this.log.debug(`Executing kernel trace prover (${JSON.stringify(config)})...`);
|
|
274
286
|
return await kernelTraceProver.proveWithKernels(txExecutionRequest.toTxRequest(), privateExecutionResult, config);
|
|
@@ -278,7 +290,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
278
290
|
* Returns the block header up to which the PXE has synced.
|
|
279
291
|
* @returns The synced block header
|
|
280
292
|
*/ getSyncedBlockHeader() {
|
|
281
|
-
return this
|
|
293
|
+
return this.#putInJobQueue(()=>{
|
|
294
|
+
return this.anchorBlockStore.getBlockHeader();
|
|
295
|
+
});
|
|
282
296
|
}
|
|
283
297
|
/**
|
|
284
298
|
* Returns the contract instance for a given address, if it's registered in the PXE.
|
|
@@ -326,6 +340,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
326
340
|
* @returns The address of the sender.
|
|
327
341
|
* TODO: It's strange that we return the address here and I (benesjan) think we should drop the return value.
|
|
328
342
|
*/ async registerSender(sender) {
|
|
343
|
+
if (!await sender.isValid()) {
|
|
344
|
+
throw new Error(`Address ${sender} is not valid: it does not correspond to a point on the Grumpkin curve. Cannot register it as a sender.`);
|
|
345
|
+
}
|
|
329
346
|
const accounts = await this.keyStore.getAccounts();
|
|
330
347
|
if (accounts.includes(sender)) {
|
|
331
348
|
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
@@ -334,6 +351,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
334
351
|
const wasAdded = await this.senderAddressBookStore.addSender(sender);
|
|
335
352
|
if (wasAdded) {
|
|
336
353
|
this.log.info(`Added sender:\n ${sender.toString()}`);
|
|
354
|
+
// Wipe the entire sync cache: the new sender's tagged logs could contain notes/events for any contract, so
|
|
355
|
+
// all contracts must re-sync to discover them. Queued to avoid wiping while a job is in flight.
|
|
356
|
+
await this.#putInJobQueue(()=>Promise.resolve(this.contractSyncService.wipe()));
|
|
337
357
|
} else {
|
|
338
358
|
this.log.info(`Sender:\n "${sender.toString()}"\n already registered.`);
|
|
339
359
|
}
|
|
@@ -371,8 +391,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
371
391
|
*
|
|
372
392
|
* @param artifact - The build artifact for the contract class.
|
|
373
393
|
*/ async registerContractClass(artifact) {
|
|
374
|
-
const
|
|
375
|
-
await this.contractStore.addContractArtifact(contractClassId, artifact);
|
|
394
|
+
const contractClassId = await this.contractStore.addContractArtifact(artifact);
|
|
376
395
|
this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
|
|
377
396
|
}
|
|
378
397
|
/**
|
|
@@ -388,15 +407,14 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
388
407
|
if (artifact) {
|
|
389
408
|
// If the user provides an artifact, validate it against the expected class id and register it
|
|
390
409
|
const contractClass = await getContractClassFromArtifact(artifact);
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
throw new Error(`Artifact does not match expected class id (computed ${contractClassId} but instance refers to ${instance.currentContractClassId})`);
|
|
410
|
+
if (!contractClass.id.equals(instance.currentContractClassId)) {
|
|
411
|
+
throw new Error(`Artifact does not match expected class id (computed ${contractClass.id} but instance refers to ${instance.currentContractClassId})`);
|
|
394
412
|
}
|
|
395
413
|
const computedAddress = await computeContractAddressFromInstance(instance);
|
|
396
414
|
if (!computedAddress.equals(instance.address)) {
|
|
397
415
|
throw new Error('Added a contract in which the address does not match the contract instance.');
|
|
398
416
|
}
|
|
399
|
-
await this.contractStore.addContractArtifact(
|
|
417
|
+
await this.contractStore.addContractArtifact(artifact, contractClass);
|
|
400
418
|
const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
|
|
401
419
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
402
420
|
} else {
|
|
@@ -432,11 +450,13 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
432
450
|
if (!contractClass.id.equals(currentClassId)) {
|
|
433
451
|
throw new Error('Could not update contract to a class different from the current one.');
|
|
434
452
|
}
|
|
435
|
-
await this.contractStore.addContractArtifact(contractClass.id, artifact);
|
|
436
453
|
const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
|
|
437
454
|
await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
|
|
438
455
|
currentInstance.currentContractClassId = contractClass.id;
|
|
439
|
-
await
|
|
456
|
+
await Promise.all([
|
|
457
|
+
this.contractStore.addContractArtifact(artifact, contractClass),
|
|
458
|
+
this.contractStore.addContractInstance(currentInstance)
|
|
459
|
+
]);
|
|
440
460
|
this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
|
|
441
461
|
});
|
|
442
462
|
}
|
|
@@ -464,10 +484,11 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
464
484
|
try {
|
|
465
485
|
const syncTimer = new Timer();
|
|
466
486
|
await this.blockStateSynchronizer.sync();
|
|
487
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
467
488
|
const syncTime = syncTimer.ms();
|
|
468
489
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
469
|
-
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
|
|
470
|
-
const { publicInputs, chonkProof, executionSteps, timings: { proving } = {} } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
|
|
490
|
+
privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, anchorBlockHeader, scopes, jobId);
|
|
491
|
+
const { publicInputs, chonkProof, executionSteps, timings: { proving } = {} } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, anchorBlockHeader, {
|
|
471
492
|
simulate: false,
|
|
472
493
|
skipFeeEnforcement: false,
|
|
473
494
|
profileMode: 'none'
|
|
@@ -497,16 +518,16 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
497
518
|
// transaction before this one is included in a block from this PXE, and that transaction contains a log with
|
|
498
519
|
// a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
|
|
499
520
|
// storing the tags here prevents linkage of txs sent from the same PXE.
|
|
500
|
-
const
|
|
501
|
-
if (
|
|
521
|
+
const taggingIndexRangesUsedInTheTx = privateExecutionResult.entrypoint.taggingIndexRanges;
|
|
522
|
+
if (taggingIndexRangesUsedInTheTx.length > 0) {
|
|
502
523
|
// TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
|
|
503
524
|
const txHash = (await txProvingResult.toTx()).txHash;
|
|
504
|
-
await this.senderTaggingStore.storePendingIndexes(
|
|
505
|
-
this.log.debug(`Stored used
|
|
506
|
-
|
|
525
|
+
await this.senderTaggingStore.storePendingIndexes(taggingIndexRangesUsedInTheTx, txHash, jobId);
|
|
526
|
+
this.log.debug(`Stored used tagging index ranges as sender for the tx`, {
|
|
527
|
+
taggingIndexRangesUsedInTheTx
|
|
507
528
|
});
|
|
508
529
|
} else {
|
|
509
|
-
this.log.debug(`No
|
|
530
|
+
this.log.debug(`No tagging index ranges used in the tx`);
|
|
510
531
|
}
|
|
511
532
|
return txProvingResult;
|
|
512
533
|
} catch (err) {
|
|
@@ -535,10 +556,11 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
535
556
|
this.log.info(`Profiling transaction execution request to ${txRequest.functionSelector} at ${txRequest.origin}`, txInfo);
|
|
536
557
|
const syncTimer = new Timer();
|
|
537
558
|
await this.blockStateSynchronizer.sync();
|
|
559
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
538
560
|
const syncTime = syncTimer.ms();
|
|
539
561
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
540
|
-
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
|
|
541
|
-
const { executionSteps, timings: { proving } = {} } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
|
|
562
|
+
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, anchorBlockHeader, scopes, jobId);
|
|
563
|
+
const { executionSteps, timings: { proving } = {} } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, anchorBlockHeader, {
|
|
542
564
|
simulate: skipProofGeneration,
|
|
543
565
|
skipFeeEnforcement: false,
|
|
544
566
|
profileMode
|
|
@@ -588,7 +610,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
588
610
|
* Also throws if simulatePublic is true and public simulation reverts.
|
|
589
611
|
*
|
|
590
612
|
* TODO(#7456) Prevent msgSender being defined here for the first call
|
|
591
|
-
*/ simulateTx(txRequest, { simulatePublic, skipTxValidation = false, skipFeeEnforcement = false, overrides, scopes }) {
|
|
613
|
+
*/ simulateTx(txRequest, { simulatePublic, skipTxValidation = false, skipFeeEnforcement = false, skipKernels = true, overrides, scopes }) {
|
|
592
614
|
// We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
|
|
593
615
|
// to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
|
|
594
616
|
// delete the same read value, or reading values that another simulation is currently modifying).
|
|
@@ -606,27 +628,28 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
606
628
|
this.log.info(`Simulating transaction execution request to ${txRequest.functionSelector} at ${txRequest.origin}`, txInfo);
|
|
607
629
|
const syncTimer = new Timer();
|
|
608
630
|
await this.blockStateSynchronizer.sync();
|
|
631
|
+
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
609
632
|
const syncTime = syncTimer.ms();
|
|
610
|
-
const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
|
|
611
|
-
// Temporary: in case there are overrides, we have to skip the kernels or validations
|
|
612
|
-
// will fail. Consider handing control to the user/wallet on whether they want to run them
|
|
613
|
-
// or not.
|
|
614
633
|
const overriddenContracts = overrides?.contracts ? new Set(Object.keys(overrides.contracts)) : undefined;
|
|
615
634
|
const hasOverriddenContracts = overriddenContracts !== undefined && overriddenContracts.size > 0;
|
|
616
|
-
|
|
617
|
-
|
|
635
|
+
if (hasOverriddenContracts && !skipKernels) {
|
|
636
|
+
throw new Error('Simulating with overridden contracts is not compatible with kernel execution. Please set skipKernels to true when simulating with overridden contracts.');
|
|
637
|
+
}
|
|
638
|
+
const contractFunctionSimulator = this.#getSimulatorForTx(overrides);
|
|
618
639
|
if (hasOverriddenContracts) {
|
|
619
|
-
|
|
640
|
+
// Overridden contracts don't have a sync function, so calling sync on them would fail.
|
|
641
|
+
// We exclude them so the sync service skips them entirely.
|
|
642
|
+
this.contractSyncService.setExcludedFromSync(jobId, overriddenContracts);
|
|
620
643
|
}
|
|
621
644
|
// Execution of private functions only; no proving, and no kernel logic.
|
|
622
|
-
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, scopes, jobId);
|
|
645
|
+
const privateExecutionResult = await this.#executePrivate(contractFunctionSimulator, txRequest, anchorBlockHeader, scopes, jobId);
|
|
623
646
|
let publicInputs;
|
|
624
647
|
let executionSteps = [];
|
|
625
648
|
if (skipKernels) {
|
|
626
649
|
({ publicInputs, executionSteps } = await generateSimulatedProvingResult(privateExecutionResult, (addr, sel)=>this.contractStore.getDebugFunctionName(addr, sel), this.node));
|
|
627
650
|
} else {
|
|
628
651
|
// Kernel logic, plus proving of all private functions and kernels.
|
|
629
|
-
({ publicInputs, executionSteps } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
|
|
652
|
+
({ publicInputs, executionSteps } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, anchorBlockHeader, {
|
|
630
653
|
simulate: true,
|
|
631
654
|
skipFeeEnforcement,
|
|
632
655
|
profileMode: 'none'
|
|
@@ -640,6 +663,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
640
663
|
const publicSimulationTimer = new Timer();
|
|
641
664
|
publicOutput = await this.#simulatePublicCalls(simulatedTx, skipFeeEnforcement);
|
|
642
665
|
publicSimulationTime = publicSimulationTimer.ms();
|
|
666
|
+
if (publicOutput?.debugLogs?.length) {
|
|
667
|
+
await displayDebugLogs(publicOutput.debugLogs, (addr)=>this.contractStore.getDebugContractName(addr));
|
|
668
|
+
}
|
|
643
669
|
}
|
|
644
670
|
let validationTime;
|
|
645
671
|
if (!skipTxValidation) {
|
|
@@ -650,7 +676,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
650
676
|
});
|
|
651
677
|
validationTime = validationTimer.ms();
|
|
652
678
|
if (validationResult.result === 'invalid') {
|
|
653
|
-
|
|
679
|
+
const reason = validationResult.reason.length > 0 ? ` Reason: ${validationResult.reason.join(', ')}` : '';
|
|
680
|
+
throw new Error(`The simulated transaction is unable to be added to state and is invalid.${reason}`);
|
|
654
681
|
}
|
|
655
682
|
}
|
|
656
683
|
const txHash = simulatedTx.getTxHash();
|
|
@@ -683,19 +710,19 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
683
710
|
nodeRPCCalls: simulatorStats.nodeRPCCalls
|
|
684
711
|
});
|
|
685
712
|
} catch (err) {
|
|
686
|
-
throw this.#contextualizeError(err, inspect(txRequest), `simulatePublic=${simulatePublic}`, `skipTxValidation=${skipTxValidation}`, `scopes=${scopes
|
|
713
|
+
throw this.#contextualizeError(err, inspect(txRequest), `simulatePublic=${simulatePublic}`, `skipTxValidation=${skipTxValidation}`, `scopes=${scopes.map((s)=>s.toString()).join(', ')}`);
|
|
687
714
|
}
|
|
688
715
|
});
|
|
689
716
|
}
|
|
690
717
|
/**
|
|
691
|
-
*
|
|
718
|
+
* Executes a contract utility function.
|
|
692
719
|
* @param call - The function call containing the function details, arguments, and target contract address.
|
|
693
|
-
*/
|
|
694
|
-
scopes:
|
|
720
|
+
*/ executeUtility(call, { authwits, scopes } = {
|
|
721
|
+
scopes: []
|
|
695
722
|
}) {
|
|
696
|
-
// We disable concurrent
|
|
723
|
+
// We disable concurrent executions since those might execute oracles which read and write to the PXE stores (e.g.
|
|
697
724
|
// to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
|
|
698
|
-
// delete the same read value, or reading values that another
|
|
725
|
+
// delete the same read value, or reading values that another execution is currently modifying).
|
|
699
726
|
return this.#putInJobQueue(async (jobId)=>{
|
|
700
727
|
try {
|
|
701
728
|
const totalTimer = new Timer();
|
|
@@ -705,8 +732,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
705
732
|
const functionTimer = new Timer();
|
|
706
733
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
707
734
|
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
708
|
-
await this.contractSyncService.ensureContractSynced(call.to, call.selector, (privateSyncCall, execScopes)=>this.#
|
|
709
|
-
const executionResult = await this.#
|
|
735
|
+
await this.contractSyncService.ensureContractSynced(call.to, call.selector, (privateSyncCall, execScopes)=>this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
|
|
736
|
+
const { result: executionResult, offchainEffects } = await this.#executeUtility(contractFunctionSimulator, call, authwits ?? [], scopes, jobId);
|
|
710
737
|
const functionTime = functionTimer.ms();
|
|
711
738
|
const totalTime = totalTimer.ms();
|
|
712
739
|
const perFunction = [
|
|
@@ -724,6 +751,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
724
751
|
const simulationStats = contractFunctionSimulator.getStats();
|
|
725
752
|
return {
|
|
726
753
|
result: executionResult,
|
|
754
|
+
offchainEffects,
|
|
755
|
+
anchorBlockTimestamp: anchorBlockHeader.globalVariables.timestamp,
|
|
727
756
|
stats: {
|
|
728
757
|
timings,
|
|
729
758
|
nodeRPCCalls: simulationStats.nodeRPCCalls
|
|
@@ -732,7 +761,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
732
761
|
} catch (err) {
|
|
733
762
|
const { to, name, args } = call;
|
|
734
763
|
const stringifiedArgs = args.map((arg)=>arg.toString()).join(', ');
|
|
735
|
-
throw this.#contextualizeError(err, `
|
|
764
|
+
throw this.#contextualizeError(err, `executeUtility ${to}:${name}(${stringifiedArgs})`, `scopes=${scopes.map((s)=>s.toString()).join(', ')}`);
|
|
736
765
|
}
|
|
737
766
|
});
|
|
738
767
|
}
|
|
@@ -755,7 +784,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
755
784
|
const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
|
|
756
785
|
anchorBlockNumber = anchorBlockHeader.getBlockNumber();
|
|
757
786
|
const contractFunctionSimulator = this.#getSimulatorForTx();
|
|
758
|
-
await this.contractSyncService.ensureContractSynced(filter.contractAddress, null, async (privateSyncCall, execScopes)=>await this.#
|
|
787
|
+
await this.contractSyncService.ensureContractSynced(filter.contractAddress, null, async (privateSyncCall, execScopes)=>await this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, filter.scopes);
|
|
759
788
|
});
|
|
760
789
|
// anchorBlockNumber is set during the job and fixed to whatever it is after a block sync
|
|
761
790
|
const sanitizedFilter = new PrivateEventFilterValidator(anchorBlockNumber).validate(filter);
|
|
@@ -763,8 +792,10 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
|
|
|
763
792
|
return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
|
|
764
793
|
}
|
|
765
794
|
/**
|
|
766
|
-
* Stops the PXE's job queue.
|
|
767
|
-
*/ stop() {
|
|
768
|
-
|
|
795
|
+
* Stops the PXE's job queue and closes the backing store.
|
|
796
|
+
*/ async stop() {
|
|
797
|
+
await this.jobQueue.end();
|
|
798
|
+
await this.blockStateSynchronizer.stop();
|
|
799
|
+
await this.db.close();
|
|
769
800
|
}
|
|
770
801
|
}
|
|
@@ -17,7 +17,7 @@ export class AnchorBlockStore {
|
|
|
17
17
|
await this.#synchronizedHeader.set(header.toBuffer());
|
|
18
18
|
}
|
|
19
19
|
async getBlockHeader() {
|
|
20
|
-
const headerBuffer = await this.#synchronizedHeader.getAsync();
|
|
20
|
+
const headerBuffer = await this.#store.transactionAsync(()=>this.#synchronizedHeader.getAsync());
|
|
21
21
|
if (!headerBuffer) {
|
|
22
22
|
throw new Error(`Trying to get block header with a not-yet-synchronized PXE - this should never happen`);
|
|
23
23
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import type { Capsule } from '@aztec/stdlib/tx';
|
|
4
|
+
import type { CapsuleStore } from './capsule_store.js';
|
|
5
|
+
/**
|
|
6
|
+
* Wraps a CapsuleStore with scope-based access control. Each operation asserts that the requested scope is in the
|
|
7
|
+
* allowed scopes list before delegating to the underlying store.
|
|
8
|
+
*/
|
|
9
|
+
export declare class CapsuleService {
|
|
10
|
+
private readonly capsuleStore;
|
|
11
|
+
private readonly allowedScopes;
|
|
12
|
+
constructor(capsuleStore: CapsuleStore, allowedScopes: AztecAddress[]);
|
|
13
|
+
setCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[], jobId: string, scope: AztecAddress): void;
|
|
14
|
+
getCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress, transientCapsules?: Capsule[]): Promise<Fr[] | null>;
|
|
15
|
+
deleteCapsule(contractAddress: AztecAddress, slot: Fr, jobId: string, scope: AztecAddress): void;
|
|
16
|
+
copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number, jobId: string, scope: AztecAddress): Promise<void>;
|
|
17
|
+
appendToCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
|
|
18
|
+
readCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, jobId: string, scope: AztecAddress): Promise<Fr[][]>;
|
|
19
|
+
setCapsuleArray(contractAddress: AztecAddress, baseSlot: Fr, content: Fr[][], jobId: string, scope: AztecAddress): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fwc3VsZV9zZXJ2aWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmFnZS9jYXBzdWxlX3N0b3JlL2NhcHN1bGVfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gscUJBQWEsY0FBYztJQUV2QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhO0lBRmhDLFlBQ21CLFlBQVksRUFBRSxZQUFZLEVBQzFCLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFDNUM7SUFFSixVQUFVLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLFFBR3BHO0lBRUssVUFBVSxDQUNkLGVBQWUsRUFBRSxZQUFZLEVBQzdCLElBQUksRUFBRSxFQUFFLEVBQ1IsS0FBSyxFQUFFLE1BQU0sRUFDYixLQUFLLEVBQUUsWUFBWSxFQUNuQixpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUM1QixPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBWXRCO0lBRUQsYUFBYSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLFFBR3hGO0lBRUQsV0FBVyxDQUNULGVBQWUsRUFBRSxZQUFZLEVBQzdCLE9BQU8sRUFBRSxFQUFFLEVBQ1gsT0FBTyxFQUFFLEVBQUUsRUFDWCxVQUFVLEVBQUUsTUFBTSxFQUNsQixLQUFLLEVBQUUsTUFBTSxFQUNiLEtBQUssRUFBRSxZQUFZLEdBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHZjtJQUVELG9CQUFvQixDQUNsQixlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsRUFBRSxFQUNaLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUNmLEtBQUssRUFBRSxNQUFNLEVBQ2IsS0FBSyxFQUFFLFlBQVksR0FDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdmO0lBRUQsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUdqSDtJQUVELGVBQWUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxpQkFHL0c7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capsule_service.d.ts","sourceRoot":"","sources":["../../../src/storage/capsule_store/capsule_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAFhC,YACmB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,YAAY,EAAE,EAC5C;IAEJ,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAGpG;IAEK,UAAU,CACd,eAAe,EAAE,YAAY,EAC7B,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,EACnB,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAC5B,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAYtB;IAED,aAAa,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,QAGxF;IAED,WAAW,CACT,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;IAED,oBAAoB,CAClB,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,EAAE,EACZ,OAAO,EAAE,EAAE,EAAE,EAAE,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;IAED,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAGjH;IAED,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,iBAG/G;CACF"}
|