@aztec/pxe 0.0.1-commit.f2ce05ee → 0.0.1-commit.f81dbcf
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/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +53 -29
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +172 -68
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -5
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -3
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +2 -2
- 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 +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +8 -4
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +2 -2
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +35 -36
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +79 -26
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +38 -16
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +47 -40
- package/dest/contract_logging.d.ts +22 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +23 -0
- package/dest/contract_sync/contract_sync_service.d.ts +4 -2
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
- package/dest/contract_sync/contract_sync_service.js +34 -19
- package/dest/contract_sync/helpers.d.ts +3 -2
- package/dest/contract_sync/helpers.d.ts.map +1 -1
- package/dest/contract_sync/helpers.js +3 -3
- package/dest/debug/pxe_debug_utils.d.ts +5 -4
- 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 +4 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +3 -0
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +9 -1
- package/dest/entrypoints/client/lazy/index.d.ts +4 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +3 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +9 -1
- package/dest/entrypoints/server/index.d.ts +3 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +2 -0
- package/dest/entrypoints/server/utils.js +9 -1
- package/dest/logs/log_service.d.ts +3 -2
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +9 -14
- package/dest/notes/note_service.d.ts +4 -3
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +3 -2
- 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 +2 -2
- package/dest/oracle_version.js +2 -2
- 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 +19 -11
- package/dest/private_kernel/private_kernel_oracle.d.ts +6 -2
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +7 -3
- package/dest/pxe.d.ts +58 -23
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +63 -52
- 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 +140 -64
- package/dest/storage/note_store/note_store.d.ts +3 -3
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +3 -4
- 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 +5 -5
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +4 -4
- 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 +2 -2
- 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 +7 -7
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +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 +3 -6
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -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 +14 -15
- package/package.json +16 -16
- package/src/access_scopes.ts +9 -0
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +320 -128
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -5
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
- package/src/contract_function_simulator/oracle/interfaces.ts +6 -3
- package/src/contract_function_simulator/oracle/oracle.ts +2 -2
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +104 -102
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +89 -39
- package/src/contract_logging.ts +39 -0
- package/src/contract_sync/contract_sync_service.ts +49 -26
- package/src/contract_sync/helpers.ts +7 -2
- package/src/debug/pxe_debug_utils.ts +11 -9
- package/src/entrypoints/client/bundle/index.ts +3 -0
- package/src/entrypoints/client/bundle/utils.ts +9 -1
- package/src/entrypoints/client/lazy/index.ts +3 -0
- package/src/entrypoints/client/lazy/utils.ts +9 -1
- package/src/entrypoints/server/index.ts +2 -0
- package/src/entrypoints/server/utils.ts +7 -7
- package/src/logs/log_service.ts +17 -24
- package/src/notes/note_service.ts +4 -3
- package/src/notes_filter.ts +26 -0
- package/src/oracle_version.ts +2 -2
- 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 +19 -12
- package/src/private_kernel/private_kernel_oracle.ts +7 -7
- package/src/pxe.ts +130 -97
- package/src/storage/contract_store/contract_store.ts +170 -71
- package/src/storage/note_store/note_store.ts +8 -5
- package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
- package/src/storage/tagging_store/sender_tagging_store.ts +8 -8
- package/src/tagging/get_all_logs_by_tags.ts +28 -4
- package/src/tagging/index.ts +1 -1
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +7 -10
- 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 +4 -9
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +11 -20
- 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
|
@@ -6,7 +6,7 @@ import { toACVMWitness } from '@aztec/simulator/client';
|
|
|
6
6
|
import { FunctionSelector, countArgumentsSize } from '@aztec/stdlib/abi';
|
|
7
7
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
8
8
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
9
|
-
import {
|
|
9
|
+
import { ExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
|
|
10
10
|
import { Tag } from '@aztec/stdlib/logs';
|
|
11
11
|
import { Note } from '@aztec/stdlib/note';
|
|
12
12
|
import { CallContext, CountedContractClassLog, NoteAndSlot } from '@aztec/stdlib/tx';
|
|
@@ -18,10 +18,22 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
18
18
|
/**
|
|
19
19
|
* The execution oracle for the private part of a transaction.
|
|
20
20
|
*/ export class PrivateExecutionOracle extends UtilityExecutionOracle {
|
|
21
|
+
isPrivate = true;
|
|
22
|
+
/**
|
|
23
|
+
* New notes created during this execution.
|
|
24
|
+
* It's possible that a note in this list has been nullified (in the same or other executions) and doesn't exist in
|
|
25
|
+
* the ExecutionNoteCache and the final proof data. But we still include those notes in the execution result because
|
|
26
|
+
* their commitments are still in the public inputs of this execution.
|
|
27
|
+
* This information is only for references (currently used for tests), and is not used for any sort of constrains.
|
|
28
|
+
* Users can also use this to get a clearer idea of what's happened during a simulation.
|
|
29
|
+
*/ newNotes = [];
|
|
30
|
+
noteHashNullifierCounterMap = new Map();
|
|
31
|
+
contractClassLogs = [];
|
|
32
|
+
offchainEffects = [];
|
|
33
|
+
nestedExecutionResults = [];
|
|
21
34
|
argsHash;
|
|
22
35
|
txContext;
|
|
23
36
|
callContext;
|
|
24
|
-
anchorBlockHeader;
|
|
25
37
|
utilityExecutor;
|
|
26
38
|
executionCache;
|
|
27
39
|
noteCache;
|
|
@@ -32,21 +44,25 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
32
44
|
sideEffectCounter;
|
|
33
45
|
senderForTags;
|
|
34
46
|
simulator;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
constructor(args){
|
|
48
|
+
super({
|
|
49
|
+
...args,
|
|
50
|
+
contractAddress: args.callContext.contractAddress,
|
|
51
|
+
log: args.log ?? createLogger('simulator:client_execution_context')
|
|
52
|
+
});
|
|
53
|
+
this.argsHash = args.argsHash;
|
|
54
|
+
this.txContext = args.txContext;
|
|
55
|
+
this.callContext = args.callContext;
|
|
56
|
+
this.utilityExecutor = args.utilityExecutor;
|
|
57
|
+
this.executionCache = args.executionCache;
|
|
58
|
+
this.noteCache = args.noteCache;
|
|
59
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
60
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
61
|
+
this.contractSyncService = args.contractSyncService;
|
|
62
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
63
|
+
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
64
|
+
this.senderForTags = args.senderForTags;
|
|
65
|
+
this.simulator = args.simulator;
|
|
50
66
|
}
|
|
51
67
|
getPrivateContextInputs() {
|
|
52
68
|
return new PrivateContextInputs(this.callContext, this.anchorBlockHeader, this.txContext, this.sideEffectCounter);
|
|
@@ -133,19 +149,19 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
133
149
|
* @param recipient - The address receiving the log
|
|
134
150
|
* @returns An app tag to be used in a log.
|
|
135
151
|
*/ async privateGetNextAppTagAsSender(sender, recipient) {
|
|
136
|
-
const
|
|
137
|
-
const index = await this.#getIndexToUseForSecret(
|
|
152
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(this.contractAddress, sender, recipient);
|
|
153
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
138
154
|
this.log.debug(`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`);
|
|
139
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
155
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
140
156
|
return Tag.compute({
|
|
141
|
-
|
|
157
|
+
extendedSecret,
|
|
142
158
|
index
|
|
143
159
|
});
|
|
144
160
|
}
|
|
145
|
-
async #
|
|
161
|
+
async #calculateExtendedDirectionalAppTaggingSecret(contractAddress, sender, recipient) {
|
|
146
162
|
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
147
163
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
148
|
-
return
|
|
164
|
+
return ExtendedDirectionalAppTaggingSecret.compute(senderCompleteAddress, senderIvsk, recipient, contractAddress, recipient);
|
|
149
165
|
}
|
|
150
166
|
async #getIndexToUseForSecret(secret) {
|
|
151
167
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
@@ -156,7 +172,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
156
172
|
// This is a tagging secret we've not yet used in this tx, so first sync our store to make sure its indices
|
|
157
173
|
// are up to date. We do this here because this store is not synced as part of the global sync because
|
|
158
174
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
159
|
-
await syncSenderTaggingIndexes(secret, this.
|
|
175
|
+
await syncSenderTaggingIndexes(secret, this.aztecNode, this.senderTaggingStore, await this.anchorBlockHeader.hash(), this.jobId);
|
|
160
176
|
const lastUsedIndex = await this.senderTaggingStore.getLastUsedIndex(secret, this.jobId);
|
|
161
177
|
// If lastUsedIndex is undefined, we've never used this secret, so start from 0
|
|
162
178
|
// Otherwise, the next index to use is one past the last used index
|
|
@@ -348,11 +364,48 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
348
364
|
const simulatorSetupTimer = new Timer();
|
|
349
365
|
this.log.debug(`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`);
|
|
350
366
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
351
|
-
|
|
367
|
+
// When scopes are set and the target contract is a registered account (has keys in the keyStore),
|
|
368
|
+
// expand scopes to include it so nested private calls can sync and read the contract's own notes.
|
|
369
|
+
// We only expand for registered accounts because the log service needs the recipient's keys to derive
|
|
370
|
+
// tagging secrets, which are only available for registered accounts.
|
|
371
|
+
const expandedScopes = this.scopes !== 'ALL_SCOPES' && await this.keyStore.hasAccount(targetContractAddress) ? [
|
|
372
|
+
...this.scopes,
|
|
373
|
+
targetContractAddress
|
|
374
|
+
] : this.scopes;
|
|
375
|
+
await this.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, this.utilityExecutor, this.anchorBlockHeader, this.jobId, expandedScopes);
|
|
352
376
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(targetContractAddress, functionSelector);
|
|
353
377
|
const derivedTxContext = this.txContext.clone();
|
|
354
378
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
355
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
379
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
380
|
+
argsHash,
|
|
381
|
+
txContext: derivedTxContext,
|
|
382
|
+
callContext: derivedCallContext,
|
|
383
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
384
|
+
utilityExecutor: this.utilityExecutor,
|
|
385
|
+
authWitnesses: this.authWitnesses,
|
|
386
|
+
capsules: this.capsules,
|
|
387
|
+
executionCache: this.executionCache,
|
|
388
|
+
noteCache: this.noteCache,
|
|
389
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
390
|
+
contractStore: this.contractStore,
|
|
391
|
+
noteStore: this.noteStore,
|
|
392
|
+
keyStore: this.keyStore,
|
|
393
|
+
addressStore: this.addressStore,
|
|
394
|
+
aztecNode: this.aztecNode,
|
|
395
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
396
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
397
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
398
|
+
capsuleStore: this.capsuleStore,
|
|
399
|
+
privateEventStore: this.privateEventStore,
|
|
400
|
+
contractSyncService: this.contractSyncService,
|
|
401
|
+
jobId: this.jobId,
|
|
402
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
403
|
+
sideEffectCounter,
|
|
404
|
+
log: this.log,
|
|
405
|
+
scopes: expandedScopes,
|
|
406
|
+
senderForTags: this.senderForTags,
|
|
407
|
+
simulator: this.simulator
|
|
408
|
+
});
|
|
356
409
|
const setupTime = simulatorSetupTimer.ms();
|
|
357
410
|
const childExecutionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, targetArtifact, targetContractAddress, functionSelector);
|
|
358
411
|
if (isStaticCall) {
|
|
@@ -2,18 +2,20 @@ import type { ARCHIVE_HEIGHT, NOTE_HASH_TREE_HEIGHT } from '@aztec/constants';
|
|
|
2
2
|
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
5
|
-
import {
|
|
5
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
6
6
|
import type { MembershipWitness } from '@aztec/foundation/trees';
|
|
7
7
|
import type { KeyStore } from '@aztec/key-store';
|
|
8
8
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
9
9
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
10
|
import { BlockHash } from '@aztec/stdlib/block';
|
|
11
|
-
import type { CompleteAddress, ContractInstance } from '@aztec/stdlib/contract';
|
|
11
|
+
import type { CompleteAddress, ContractInstance, PartialAddress } from '@aztec/stdlib/contract';
|
|
12
12
|
import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
13
13
|
import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
|
|
14
|
+
import { type PublicKeys } from '@aztec/stdlib/keys';
|
|
14
15
|
import type { NoteStatus } from '@aztec/stdlib/note';
|
|
15
16
|
import { type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
16
17
|
import type { BlockHeader, Capsule } from '@aztec/stdlib/tx';
|
|
18
|
+
import type { AccessScopes } from '../../access_scopes.js';
|
|
17
19
|
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
18
20
|
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
19
21
|
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
@@ -24,13 +26,35 @@ import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_
|
|
|
24
26
|
import { UtilityContext } from '../noir-structs/utility_context.js';
|
|
25
27
|
import type { IMiscOracle, IUtilityExecutionOracle, NoteData } from './interfaces.js';
|
|
26
28
|
import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
29
|
+
/** Args for UtilityExecutionOracle constructor. */
|
|
30
|
+
export type UtilityExecutionOracleArgs = {
|
|
31
|
+
contractAddress: AztecAddress;
|
|
32
|
+
/** List of transient auth witnesses to be used during this simulation */
|
|
33
|
+
authWitnesses: AuthWitness[];
|
|
34
|
+
capsules: Capsule[];
|
|
35
|
+
anchorBlockHeader: BlockHeader;
|
|
36
|
+
contractStore: ContractStore;
|
|
37
|
+
noteStore: NoteStore;
|
|
38
|
+
keyStore: KeyStore;
|
|
39
|
+
addressStore: AddressStore;
|
|
40
|
+
aztecNode: AztecNode;
|
|
41
|
+
recipientTaggingStore: RecipientTaggingStore;
|
|
42
|
+
senderAddressBookStore: SenderAddressBookStore;
|
|
43
|
+
capsuleStore: CapsuleStore;
|
|
44
|
+
privateEventStore: PrivateEventStore;
|
|
45
|
+
jobId: string;
|
|
46
|
+
log?: ReturnType<typeof createLogger>;
|
|
47
|
+
scopes: AccessScopes;
|
|
48
|
+
};
|
|
27
49
|
/**
|
|
28
50
|
* The oracle for an execution of utility contract functions.
|
|
29
51
|
*/
|
|
30
52
|
export declare class UtilityExecutionOracle implements IMiscOracle, IUtilityExecutionOracle {
|
|
31
53
|
#private;
|
|
54
|
+
isMisc: true;
|
|
55
|
+
isUtility: true;
|
|
56
|
+
private contractLogger;
|
|
32
57
|
protected readonly contractAddress: AztecAddress;
|
|
33
|
-
/** List of transient auth witnesses to be used during this simulation */
|
|
34
58
|
protected readonly authWitnesses: AuthWitness[];
|
|
35
59
|
protected readonly capsules: Capsule[];
|
|
36
60
|
protected readonly anchorBlockHeader: BlockHeader;
|
|
@@ -44,14 +68,9 @@ export declare class UtilityExecutionOracle implements IMiscOracle, IUtilityExec
|
|
|
44
68
|
protected readonly capsuleStore: CapsuleStore;
|
|
45
69
|
protected readonly privateEventStore: PrivateEventStore;
|
|
46
70
|
protected readonly jobId: string;
|
|
47
|
-
protected log:
|
|
48
|
-
protected readonly scopes
|
|
49
|
-
|
|
50
|
-
isUtility: true;
|
|
51
|
-
private contractLogger;
|
|
52
|
-
constructor(contractAddress: AztecAddress,
|
|
53
|
-
/** List of transient auth witnesses to be used during this simulation */
|
|
54
|
-
authWitnesses: AuthWitness[], capsules: Capsule[], anchorBlockHeader: BlockHeader, contractStore: ContractStore, noteStore: NoteStore, keyStore: KeyStore, addressStore: AddressStore, aztecNode: AztecNode, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, capsuleStore: CapsuleStore, privateEventStore: PrivateEventStore, jobId: string, log?: Logger, scopes?: AztecAddress[] | undefined);
|
|
71
|
+
protected log: ReturnType<typeof createLogger>;
|
|
72
|
+
protected readonly scopes: AccessScopes;
|
|
73
|
+
constructor(args: UtilityExecutionOracleArgs);
|
|
55
74
|
utilityAssertCompatibleOracleVersion(version: number): void;
|
|
56
75
|
utilityGetRandomField(): Fr;
|
|
57
76
|
utilityGetUtilityContext(): UtilityContext;
|
|
@@ -114,11 +133,14 @@ export declare class UtilityExecutionOracle implements IMiscOracle, IUtilityExec
|
|
|
114
133
|
*/
|
|
115
134
|
utilityGetBlockHeader(blockNumber: BlockNumber): Promise<BlockHeader | undefined>;
|
|
116
135
|
/**
|
|
117
|
-
* Retrieve the
|
|
136
|
+
* Retrieve the public keys and partial address associated to a given address.
|
|
118
137
|
* @param account - The account address.
|
|
119
|
-
* @returns
|
|
138
|
+
* @returns The public keys and partial address, or `undefined` if the account is not registered.
|
|
120
139
|
*/
|
|
121
|
-
utilityTryGetPublicKeysAndPartialAddress(account: AztecAddress): Promise<
|
|
140
|
+
utilityTryGetPublicKeysAndPartialAddress(account: AztecAddress): Promise<{
|
|
141
|
+
publicKeys: PublicKeys;
|
|
142
|
+
partialAddress: PartialAddress;
|
|
143
|
+
} | undefined>;
|
|
122
144
|
protected getCompleteAddressOrFail(account: AztecAddress): Promise<CompleteAddress>;
|
|
123
145
|
/**
|
|
124
146
|
* Returns a contract instance associated with an address or throws if not found.
|
|
@@ -180,7 +202,7 @@ export declare class UtilityExecutionOracle implements IMiscOracle, IUtilityExec
|
|
|
180
202
|
* @param numberOfElements - Number of elements to read from the starting storage slot.
|
|
181
203
|
*/
|
|
182
204
|
utilityStorageRead(blockHash: BlockHash, contractAddress: AztecAddress, startStorageSlot: Fr, numberOfElements: number): Promise<Fr[]>;
|
|
183
|
-
|
|
205
|
+
utilityLog(level: number, message: string, fields: Fr[]): Promise<void>;
|
|
184
206
|
utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr): Promise<void>;
|
|
185
207
|
/**
|
|
186
208
|
* Validates all note and event validation requests enqueued via `enqueue_note_for_validation` and
|
|
@@ -208,4 +230,4 @@ export declare class UtilityExecutionOracle implements IMiscOracle, IUtilityExec
|
|
|
208
230
|
utilityGetSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point>;
|
|
209
231
|
protected getSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point>;
|
|
210
232
|
}
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eV9leGVjdXRpb25fb3JhY2xlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL29yYWNsZS91dGlsaXR5X2V4ZWN1dGlvbl9vcmFjbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRCxPQUFPLEVBQTBCLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEcsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFHM0UsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1B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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility_execution_oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/utility_execution_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"utility_execution_oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/utility_execution_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Aes128 } from '@aztec/foundation/crypto/aes128';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
-
import { LogLevels,
|
|
3
|
+
import { LogLevels, createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
5
5
|
import { computeAddressSecret } from '@aztec/stdlib/keys';
|
|
6
6
|
import { deriveEcdhSharedSecret } from '@aztec/stdlib/logs';
|
|
7
7
|
import { getNonNullifiedL1ToL2MessageWitness } from '@aztec/stdlib/messaging';
|
|
8
8
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
9
|
+
import { createContractLogger, logContractMessage } from '../../contract_logging.js';
|
|
9
10
|
import { EventService } from '../../events/event_service.js';
|
|
10
11
|
import { LogService } from '../../logs/log_service.js';
|
|
11
12
|
import { NoteService } from '../../notes/note_service.js';
|
|
@@ -20,6 +21,9 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
20
21
|
/**
|
|
21
22
|
* The oracle for an execution of utility contract functions.
|
|
22
23
|
*/ export class UtilityExecutionOracle {
|
|
24
|
+
isMisc = true;
|
|
25
|
+
isUtility = true;
|
|
26
|
+
contractLogger;
|
|
23
27
|
contractAddress;
|
|
24
28
|
authWitnesses;
|
|
25
29
|
capsules;
|
|
@@ -36,28 +40,23 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
36
40
|
jobId;
|
|
37
41
|
log;
|
|
38
42
|
scopes;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
this.
|
|
44
|
-
this.
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
48
|
-
this.
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
55
|
-
this.
|
|
56
|
-
this.jobId = jobId;
|
|
57
|
-
this.log = log;
|
|
58
|
-
this.scopes = scopes;
|
|
59
|
-
this.isMisc = true;
|
|
60
|
-
this.isUtility = true;
|
|
43
|
+
constructor(args){
|
|
44
|
+
this.contractAddress = args.contractAddress;
|
|
45
|
+
this.authWitnesses = args.authWitnesses;
|
|
46
|
+
this.capsules = args.capsules;
|
|
47
|
+
this.anchorBlockHeader = args.anchorBlockHeader;
|
|
48
|
+
this.contractStore = args.contractStore;
|
|
49
|
+
this.noteStore = args.noteStore;
|
|
50
|
+
this.keyStore = args.keyStore;
|
|
51
|
+
this.addressStore = args.addressStore;
|
|
52
|
+
this.aztecNode = args.aztecNode;
|
|
53
|
+
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
54
|
+
this.senderAddressBookStore = args.senderAddressBookStore;
|
|
55
|
+
this.capsuleStore = args.capsuleStore;
|
|
56
|
+
this.privateEventStore = args.privateEventStore;
|
|
57
|
+
this.jobId = args.jobId;
|
|
58
|
+
this.log = args.log ?? createLogger('simulator:client_view_context');
|
|
59
|
+
this.scopes = args.scopes;
|
|
61
60
|
}
|
|
62
61
|
utilityAssertCompatibleOracleVersion(version) {
|
|
63
62
|
if (version !== ORACLE_VERSION) {
|
|
@@ -77,11 +76,16 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
77
76
|
* @throws If the keys are not registered in the key store.
|
|
78
77
|
* @throws If scopes are defined and the account is not in the scopes.
|
|
79
78
|
*/ async utilityGetKeyValidationRequest(pkMHash) {
|
|
80
|
-
// If scopes are defined, check that the key belongs to an account in the scopes
|
|
81
|
-
if (this.scopes && this.scopes.length > 0) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
// If scopes are defined, check that the key belongs to an account in the scopes.
|
|
80
|
+
if (this.scopes !== 'ALL_SCOPES' && this.scopes.length > 0) {
|
|
81
|
+
let hasAccess = false;
|
|
82
|
+
for(let i = 0; i < this.scopes.length && !hasAccess; i++){
|
|
83
|
+
if (await this.keyStore.accountHasKey(this.scopes[i], pkMHash)) {
|
|
84
|
+
hasAccess = true;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (!hasAccess) {
|
|
88
|
+
throw new Error(`Key validation request denied: no scoped account has a key with hash ${pkMHash.toString()}.`);
|
|
85
89
|
}
|
|
86
90
|
}
|
|
87
91
|
return this.keyStore.getKeyValidationRequest(pkMHash, this.contractAddress);
|
|
@@ -148,11 +152,18 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
148
152
|
return block?.header;
|
|
149
153
|
}
|
|
150
154
|
/**
|
|
151
|
-
* Retrieve the
|
|
155
|
+
* Retrieve the public keys and partial address associated to a given address.
|
|
152
156
|
* @param account - The account address.
|
|
153
|
-
* @returns
|
|
154
|
-
*/ utilityTryGetPublicKeysAndPartialAddress(account) {
|
|
155
|
-
|
|
157
|
+
* @returns The public keys and partial address, or `undefined` if the account is not registered.
|
|
158
|
+
*/ async utilityTryGetPublicKeysAndPartialAddress(account) {
|
|
159
|
+
const completeAddress = await this.addressStore.getCompleteAddress(account);
|
|
160
|
+
if (!completeAddress) {
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
publicKeys: completeAddress.publicKeys,
|
|
165
|
+
partialAddress: completeAddress.partialAddress
|
|
166
|
+
};
|
|
156
167
|
}
|
|
157
168
|
async getCompleteAddressOrFail(account) {
|
|
158
169
|
const completeAddress = await this.addressStore.getCompleteAddress(account);
|
|
@@ -271,24 +282,20 @@ import { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
|
|
|
271
282
|
* Returns a per-contract logger whose output is prefixed with `contract_log::<name>(<addrAbbrev>)`.
|
|
272
283
|
*/ async #getContractLogger() {
|
|
273
284
|
if (!this.contractLogger) {
|
|
274
|
-
const addrAbbrev = this.contractAddress.toString().slice(0, 10);
|
|
275
|
-
const name = await this.contractStore.getDebugContractName(this.contractAddress);
|
|
276
|
-
const module = name ? `contract_log::${name}(${addrAbbrev})` : `contract_log::${addrAbbrev}`;
|
|
277
285
|
// Purpose of instanceId is to distinguish logs from different instances of the same component. It makes sense
|
|
278
286
|
// to re-use jobId as instanceId here as executions of different PXE jobs are isolated.
|
|
279
|
-
this.contractLogger =
|
|
287
|
+
this.contractLogger = await createContractLogger(this.contractAddress, (addr)=>this.contractStore.getDebugContractName(addr), {
|
|
280
288
|
instanceId: this.jobId
|
|
281
289
|
});
|
|
282
290
|
}
|
|
283
291
|
return this.contractLogger;
|
|
284
292
|
}
|
|
285
|
-
async
|
|
293
|
+
async utilityLog(level, message, fields) {
|
|
286
294
|
if (!LogLevels[level]) {
|
|
287
|
-
throw new Error(`Invalid
|
|
295
|
+
throw new Error(`Invalid log level: ${level}`);
|
|
288
296
|
}
|
|
289
|
-
const levelName = LogLevels[level];
|
|
290
297
|
const logger = await this.#getContractLogger();
|
|
291
|
-
logger[
|
|
298
|
+
logContractMessage(logger, LogLevels[level], message, fields);
|
|
292
299
|
}
|
|
293
300
|
async utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot) {
|
|
294
301
|
const logService = new LogService(this.aztecNode, this.anchorBlockHeader, this.keyStore, this.capsuleStore, this.recipientTaggingStore, this.senderAddressBookStore, this.addressStore, this.jobId, this.log.getBindings());
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { type LogLevel, type Logger } from '@aztec/foundation/log';
|
|
3
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import type { DebugLog } from '@aztec/stdlib/logs';
|
|
5
|
+
/** Resolves a contract address to a human-readable name, if available. */
|
|
6
|
+
export type ContractNameResolver = (address: AztecAddress) => Promise<string | undefined>;
|
|
7
|
+
/**
|
|
8
|
+
* Creates a logger whose output is prefixed with `contract_log::<name>(<addrAbbrev>)`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createContractLogger(contractAddress: AztecAddress, getContractName: ContractNameResolver, options?: {
|
|
11
|
+
instanceId?: string;
|
|
12
|
+
}): Promise<Logger>;
|
|
13
|
+
/**
|
|
14
|
+
* Formats and emits a single contract log message through the given logger.
|
|
15
|
+
*/
|
|
16
|
+
export declare function logContractMessage(logger: Logger, level: LogLevel, message: string, fields: Fr[]): void;
|
|
17
|
+
/**
|
|
18
|
+
* Displays debug logs collected during public function simulation,
|
|
19
|
+
* using the `contract_log::` prefixed logger format.
|
|
20
|
+
*/
|
|
21
|
+
export declare function displayDebugLogs(debugLogs: DebugLog[], getContractName: ContractNameResolver): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfbG9nZ2luZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnRyYWN0X2xvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLEtBQUssTUFBTSxFQUF1QyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hHLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELDBFQUEwRTtBQUMxRSxNQUFNLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxLQUFLLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7QUFFMUY7O0dBRUc7QUFDSCx3QkFBc0Isb0JBQW9CLENBQ3hDLGVBQWUsRUFBRSxZQUFZLEVBQzdCLGVBQWUsRUFBRSxvQkFBb0IsRUFDckMsT0FBTyxDQUFDLEVBQUU7SUFBRSxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUE7Q0FBRSxHQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBS2pCO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0Isa0JBQWtCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FFdkc7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0IsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBS2xIIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract_logging.d.ts","sourceRoot":"","sources":["../src/contract_logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAuC,MAAM,uBAAuB,CAAC;AACxG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,0EAA0E;AAC1E,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAE1F;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,YAAY,EAC7B,eAAe,EAAE,oBAAoB,EACrC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAEvG;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlH"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { applyStringFormatting, createLogger } from '@aztec/foundation/log';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a logger whose output is prefixed with `contract_log::<name>(<addrAbbrev>)`.
|
|
4
|
+
*/ export async function createContractLogger(contractAddress, getContractName, options) {
|
|
5
|
+
const addrAbbrev = contractAddress.toString().slice(0, 10);
|
|
6
|
+
const name = await getContractName(contractAddress);
|
|
7
|
+
const module = name ? `contract_log::${name}(${addrAbbrev})` : `contract_log::Unknown(${addrAbbrev})`;
|
|
8
|
+
return createLogger(module, options);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Formats and emits a single contract log message through the given logger.
|
|
12
|
+
*/ export function logContractMessage(logger, level, message, fields) {
|
|
13
|
+
logger[level](applyStringFormatting(message, fields));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Displays debug logs collected during public function simulation,
|
|
17
|
+
* using the `contract_log::` prefixed logger format.
|
|
18
|
+
*/ export async function displayDebugLogs(debugLogs, getContractName) {
|
|
19
|
+
for (const log of debugLogs){
|
|
20
|
+
const logger = await createContractLogger(log.contractAddress, getContractName);
|
|
21
|
+
logContractMessage(logger, log.level, log.message, log.fields);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -3,6 +3,7 @@ import type { FunctionCall, FunctionSelector } from '@aztec/stdlib/abi';
|
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
5
5
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
6
|
+
import type { AccessScopes } from '../access_scopes.js';
|
|
6
7
|
import type { StagedStore } from '../job_coordinator/job_coordinator.js';
|
|
7
8
|
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
8
9
|
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
@@ -31,11 +32,12 @@ export declare class ContractSyncService implements StagedStore {
|
|
|
31
32
|
* @param functionToInvokeAfterSync - The function selector that will be called after sync (used to validate it's
|
|
32
33
|
* not sync_state itself).
|
|
33
34
|
* @param utilityExecutor - Executor function for running the sync_state utility function.
|
|
35
|
+
* @param scopes - Access scopes to pass through to the utility executor (affects whose account's private state is discovered).
|
|
34
36
|
*/
|
|
35
|
-
ensureContractSynced(contractAddress: AztecAddress, functionToInvokeAfterSync: FunctionSelector | null, utilityExecutor: (call: FunctionCall) => Promise<any>, anchorBlockHeader: BlockHeader, jobId: string): Promise<void>;
|
|
37
|
+
ensureContractSynced(contractAddress: AztecAddress, functionToInvokeAfterSync: FunctionSelector | null, utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<any>, anchorBlockHeader: BlockHeader, jobId: string, scopes: AccessScopes): Promise<void>;
|
|
36
38
|
/** Clears sync cache. Called by BlockSynchronizer when anchor block changes. */
|
|
37
39
|
wipe(): void;
|
|
38
40
|
commit(jobId: string): Promise<void>;
|
|
39
41
|
discardStaged(jobId: string): Promise<void>;
|
|
40
42
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3Rfc3luY19zZXJ2aWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3Rfc3luYy9jb250cmFjdF9zeW5jX3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHckU7Ozs7O0dBS0c7QUFDSCxxQkFBYSxtQkFBb0IsWUFBVyxXQUFXOztJQVluRCxPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsR0FBRztJQWRiLFFBQVEsQ0FBQyxTQUFTLG1CQUFtQjtJQUtyQyxPQUFPLENBQUMsZUFBZSxDQUF5QztJQUdoRSxPQUFPLENBQUMsbUJBQW1CLENBQXVDO0lBRWxFLFlBQ1UsU0FBUyxFQUFFLFNBQVMsRUFDcEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsR0FBRyxFQUFFLE1BQU0sRUFDakI7SUFFSiw0RUFBNEU7SUFDNUUsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FFbEU7SUFFRDs7Ozs7Ozs7T0FRRztJQUNHLG9CQUFvQixDQUN4QixlQUFlLEVBQUUsWUFBWSxFQUM3Qix5QkFBeUIsRUFBRSxnQkFBZ0IsR0FBRyxJQUFJLEVBQ2xELGVBQWUsRUFBRSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFlBQVksS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQzNFLGlCQUFpQixFQUFFLFdBQVcsRUFDOUIsS0FBSyxFQUFFLE1BQU0sRUFDYixNQUFNLEVBQUUsWUFBWSxHQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLENBdUNmO0lBNEJELGdGQUFnRjtJQUNoRixJQUFJLElBQUksSUFBSSxDQUdYO0lBRUQsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUluQztJQUVELGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FNMUM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_sync_service.d.ts","sourceRoot":"","sources":["../../src/contract_sync/contract_sync_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAGrE;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,WAAW;;
|
|
1
|
+
{"version":3,"file":"contract_sync_service.d.ts","sourceRoot":"","sources":["../../src/contract_sync/contract_sync_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAGrE;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,WAAW;;IAYnD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAdb,QAAQ,CAAC,SAAS,mBAAmB;IAKrC,OAAO,CAAC,eAAe,CAAyC;IAGhE,OAAO,CAAC,mBAAmB,CAAuC;IAElE,YACU,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACjB;IAEJ,4EAA4E;IAC5E,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAElE;IAED;;;;;;;;OAQG;IACG,oBAAoB,CACxB,eAAe,EAAE,YAAY,EAC7B,yBAAyB,EAAE,gBAAgB,GAAG,IAAI,EAClD,eAAe,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,GAAG,CAAC,EAC3E,iBAAiB,EAAE,WAAW,EAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAuCf;IA4BD,gFAAgF;IAChF,IAAI,IAAI,IAAI,CAGX;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInC;IAED,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1C;CACF"}
|