@aztec/pxe 0.0.1-commit.64b6bbb → 0.0.1-commit.684755437
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/index.d.ts +2 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -1
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +8 -6
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +114 -44
- 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 +49 -45
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.d.ts +44 -44
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +132 -89
- package/dest/contract_function_simulator/oracle/private_execution.js +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +22 -21
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +37 -37
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +39 -36
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +56 -53
- 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/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/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/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 +3 -3
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +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 +18 -13
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +48 -37
- 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/index.ts +1 -1
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +220 -63
- 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 +47 -44
- package/src/contract_function_simulator/oracle/oracle.ts +135 -107
- package/src/contract_function_simulator/oracle/private_execution.ts +1 -1
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +44 -39
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +64 -64
- 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/lazy/index.ts +3 -0
- package/src/entrypoints/server/index.ts +2 -0
- 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 +3 -3
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +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 +67 -54
- 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
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
15
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
16
16
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
17
|
-
import { type ContractClassLog,
|
|
17
|
+
import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type PreTag } from '@aztec/stdlib/logs';
|
|
18
18
|
import { Tag } from '@aztec/stdlib/logs';
|
|
19
19
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
20
20
|
import {
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
type TxContext,
|
|
26
26
|
} from '@aztec/stdlib/tx';
|
|
27
27
|
|
|
28
|
+
import type { AccessScopes } from '../../access_scopes.js';
|
|
28
29
|
import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
|
|
29
30
|
import { NoteService } from '../../notes/note_service.js';
|
|
30
31
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
@@ -43,7 +44,7 @@ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contr
|
|
|
43
44
|
txContext: TxContext;
|
|
44
45
|
callContext: CallContext;
|
|
45
46
|
/** Needed to trigger contract synchronization before nested calls */
|
|
46
|
-
utilityExecutor: (call: FunctionCall) => Promise<void>;
|
|
47
|
+
utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
47
48
|
executionCache: HashedValuesCache;
|
|
48
49
|
noteCache: ExecutionNoteCache;
|
|
49
50
|
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
@@ -78,7 +79,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
78
79
|
private readonly argsHash: Fr;
|
|
79
80
|
private readonly txContext: TxContext;
|
|
80
81
|
private readonly callContext: CallContext;
|
|
81
|
-
private readonly utilityExecutor: (call: FunctionCall) => Promise<void>;
|
|
82
|
+
private readonly utilityExecutor: (call: FunctionCall, scopes: AccessScopes) => Promise<void>;
|
|
82
83
|
private readonly executionCache: HashedValuesCache;
|
|
83
84
|
private readonly noteCache: ExecutionNoteCache;
|
|
84
85
|
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
@@ -188,7 +189,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
188
189
|
* The value persists through nested calls, meaning all calls down the stack will use the same
|
|
189
190
|
* 'senderForTags' value (unless it is replaced).
|
|
190
191
|
*/
|
|
191
|
-
public
|
|
192
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
192
193
|
return Promise.resolve(this.senderForTags);
|
|
193
194
|
}
|
|
194
195
|
|
|
@@ -203,7 +204,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
203
204
|
* through nested calls, meaning all calls down the stack will use the same 'senderForTags'
|
|
204
205
|
* value (unless it is replaced by another call to this setter).
|
|
205
206
|
*/
|
|
206
|
-
public
|
|
207
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
207
208
|
this.senderForTags = senderForTags;
|
|
208
209
|
return Promise.resolve();
|
|
209
210
|
}
|
|
@@ -214,26 +215,30 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
214
215
|
* @param recipient - The address receiving the log
|
|
215
216
|
* @returns An app tag to be used in a log.
|
|
216
217
|
*/
|
|
217
|
-
public async
|
|
218
|
-
const
|
|
218
|
+
public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
219
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
|
|
220
|
+
this.contractAddress,
|
|
221
|
+
sender,
|
|
222
|
+
recipient,
|
|
223
|
+
);
|
|
219
224
|
|
|
220
|
-
const index = await this.#getIndexToUseForSecret(
|
|
221
|
-
this.
|
|
225
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
226
|
+
this.logger.debug(
|
|
222
227
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
223
228
|
);
|
|
224
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
229
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
225
230
|
|
|
226
|
-
return Tag.compute({
|
|
231
|
+
return Tag.compute({ extendedSecret, index });
|
|
227
232
|
}
|
|
228
233
|
|
|
229
|
-
async #
|
|
234
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
230
235
|
contractAddress: AztecAddress,
|
|
231
236
|
sender: AztecAddress,
|
|
232
237
|
recipient: AztecAddress,
|
|
233
238
|
) {
|
|
234
239
|
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
235
240
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
236
|
-
return
|
|
241
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
237
242
|
senderCompleteAddress,
|
|
238
243
|
senderIvsk,
|
|
239
244
|
recipient,
|
|
@@ -242,7 +247,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
242
247
|
);
|
|
243
248
|
}
|
|
244
249
|
|
|
245
|
-
async #getIndexToUseForSecret(secret:
|
|
250
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
246
251
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
247
252
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
248
253
|
|
|
@@ -254,7 +259,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
254
259
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
255
260
|
await syncSenderTaggingIndexes(
|
|
256
261
|
secret,
|
|
257
|
-
this.contractAddress,
|
|
258
262
|
this.aztecNode,
|
|
259
263
|
this.senderTaggingStore,
|
|
260
264
|
await this.anchorBlockHeader.hash(),
|
|
@@ -273,7 +277,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
273
277
|
* @param values - Values to store.
|
|
274
278
|
* @returns The hash of the values.
|
|
275
279
|
*/
|
|
276
|
-
public
|
|
280
|
+
public storeInExecutionCache(values: Fr[], hash: Fr) {
|
|
277
281
|
return this.executionCache.store(values, hash);
|
|
278
282
|
}
|
|
279
283
|
|
|
@@ -282,7 +286,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
282
286
|
* @param hash - Hash of the values.
|
|
283
287
|
* @returns The values.
|
|
284
288
|
*/
|
|
285
|
-
public
|
|
289
|
+
public loadFromExecutionCache(hash: Fr): Promise<Fr[]> {
|
|
286
290
|
const preimage = this.executionCache.getPreimage(hash);
|
|
287
291
|
if (!preimage) {
|
|
288
292
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -290,12 +294,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
290
294
|
return Promise.resolve(preimage);
|
|
291
295
|
}
|
|
292
296
|
|
|
293
|
-
override async
|
|
297
|
+
override async checkNullifierExists(innerNullifier: Fr): Promise<boolean> {
|
|
294
298
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
295
299
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
296
300
|
// in the current transaction.
|
|
297
301
|
|
|
298
|
-
this.
|
|
302
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
299
303
|
contractAddress: this.contractAddress,
|
|
300
304
|
});
|
|
301
305
|
|
|
@@ -303,7 +307,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
303
307
|
|
|
304
308
|
return (
|
|
305
309
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
306
|
-
(await super.
|
|
310
|
+
(await super.checkNullifierExists(innerNullifier))
|
|
307
311
|
);
|
|
308
312
|
}
|
|
309
313
|
|
|
@@ -328,7 +332,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
328
332
|
* @param status - The status of notes to fetch.
|
|
329
333
|
* @returns Array of note data.
|
|
330
334
|
*/
|
|
331
|
-
public override async
|
|
335
|
+
public override async getNotes(
|
|
332
336
|
owner: AztecAddress | undefined,
|
|
333
337
|
storageSlot: Fr,
|
|
334
338
|
numSelects: number,
|
|
@@ -374,7 +378,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
374
378
|
offset,
|
|
375
379
|
});
|
|
376
380
|
|
|
377
|
-
this.
|
|
381
|
+
this.logger.debug(
|
|
378
382
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
379
383
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
380
384
|
.join(', ')}`,
|
|
@@ -394,7 +398,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
394
398
|
* @param noteHash - A hash of the new note.
|
|
395
399
|
* @returns
|
|
396
400
|
*/
|
|
397
|
-
public
|
|
401
|
+
public notifyCreatedNote(
|
|
398
402
|
owner: AztecAddress,
|
|
399
403
|
storageSlot: Fr,
|
|
400
404
|
randomness: Fr,
|
|
@@ -403,7 +407,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
403
407
|
noteHash: Fr,
|
|
404
408
|
counter: number,
|
|
405
409
|
) {
|
|
406
|
-
this.
|
|
410
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
407
411
|
contractAddress: this.callContext.contractAddress,
|
|
408
412
|
storageSlot,
|
|
409
413
|
randomness,
|
|
@@ -435,7 +439,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
435
439
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
436
440
|
* @param noteHash - A hash of the new note.
|
|
437
441
|
*/
|
|
438
|
-
public async
|
|
442
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
439
443
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
440
444
|
this.callContext.contractAddress,
|
|
441
445
|
innerNullifier,
|
|
@@ -452,19 +456,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
452
456
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
453
457
|
* @param noteHash - A hash of the new note.
|
|
454
458
|
*/
|
|
455
|
-
public
|
|
456
|
-
this.
|
|
459
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
460
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
457
461
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
458
462
|
}
|
|
459
463
|
|
|
460
464
|
/**
|
|
461
|
-
* Check if a nullifier has been emitted in the same transaction, i.e. if
|
|
465
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
462
466
|
* called for this inner nullifier from the contract with the specified address.
|
|
463
467
|
* @param innerNullifier - The inner nullifier to check.
|
|
464
468
|
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
465
469
|
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
466
470
|
*/
|
|
467
|
-
public async
|
|
471
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
468
472
|
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
469
473
|
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
470
474
|
return Promise.resolve(isNullifierPending);
|
|
@@ -477,10 +481,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
477
481
|
* @param log - The contract class log to be emitted.
|
|
478
482
|
* @param counter - The contract class log's counter.
|
|
479
483
|
*/
|
|
480
|
-
public
|
|
484
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
481
485
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
482
486
|
const text = log.toBuffer().toString('hex');
|
|
483
|
-
this.
|
|
487
|
+
this.logger.verbose(
|
|
484
488
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
485
489
|
);
|
|
486
490
|
}
|
|
@@ -506,7 +510,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
506
510
|
* @param isStaticCall - Whether the call is a static call.
|
|
507
511
|
* @returns The execution result.
|
|
508
512
|
*/
|
|
509
|
-
async
|
|
513
|
+
async callPrivateFunction(
|
|
510
514
|
targetContractAddress: AztecAddress,
|
|
511
515
|
functionSelector: FunctionSelector,
|
|
512
516
|
argsHash: Fr,
|
|
@@ -520,7 +524,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
520
524
|
}
|
|
521
525
|
|
|
522
526
|
const simulatorSetupTimer = new Timer();
|
|
523
|
-
this.
|
|
527
|
+
this.logger.debug(
|
|
524
528
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
525
529
|
);
|
|
526
530
|
|
|
@@ -532,6 +536,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
532
536
|
this.utilityExecutor,
|
|
533
537
|
this.anchorBlockHeader,
|
|
534
538
|
this.jobId,
|
|
539
|
+
this.scopes,
|
|
535
540
|
);
|
|
536
541
|
|
|
537
542
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
@@ -568,7 +573,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
568
573
|
jobId: this.jobId,
|
|
569
574
|
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
570
575
|
sideEffectCounter,
|
|
571
|
-
log: this.
|
|
576
|
+
log: this.logger,
|
|
572
577
|
scopes: this.scopes,
|
|
573
578
|
senderForTags: this.senderForTags,
|
|
574
579
|
simulator: this.simulator!,
|
|
@@ -622,7 +627,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
622
627
|
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
623
628
|
* @param isStaticCall - Whether the call is a static call.
|
|
624
629
|
*/
|
|
625
|
-
public
|
|
630
|
+
public notifyEnqueuedPublicFunctionCall(
|
|
626
631
|
_targetContractAddress: AztecAddress,
|
|
627
632
|
calldataHash: Fr,
|
|
628
633
|
_sideEffectCounter: number,
|
|
@@ -639,7 +644,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
639
644
|
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
640
645
|
* @param isStaticCall - Whether the call is a static call.
|
|
641
646
|
*/
|
|
642
|
-
public
|
|
647
|
+
public notifySetPublicTeardownFunctionCall(
|
|
643
648
|
_targetContractAddress: AztecAddress,
|
|
644
649
|
calldataHash: Fr,
|
|
645
650
|
_sideEffectCounter: number,
|
|
@@ -649,11 +654,11 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
649
654
|
return Promise.resolve();
|
|
650
655
|
}
|
|
651
656
|
|
|
652
|
-
public
|
|
657
|
+
public notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
653
658
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
654
659
|
}
|
|
655
660
|
|
|
656
|
-
public
|
|
661
|
+
public isSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean> {
|
|
657
662
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
658
663
|
}
|
|
659
664
|
|
|
@@ -681,7 +686,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
681
686
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
682
687
|
}
|
|
683
688
|
|
|
684
|
-
public
|
|
689
|
+
public emitOffchainEffect(data: Fr[]): Promise<void> {
|
|
685
690
|
this.offchainEffects.push({ data });
|
|
686
691
|
return Promise.resolve();
|
|
687
692
|
}
|