@aztec/pxe 0.0.1-commit.ef17749e1 → 0.0.1-commit.f1b29a41e
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/block_synchronizer/block_synchronizer.d.ts +1 -1
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +6 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +9 -3
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +29 -6
- 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 +17 -9
- package/dest/contract_function_simulator/index.d.ts +2 -1
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -5
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -3
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -6
- 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 +5 -10
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +21 -20
- 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 +38 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +39 -19
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +91 -44
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +11 -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 +12 -44
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +43 -25
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +157 -61
- package/dest/contract_logging.d.ts +9 -4
- package/dest/contract_logging.d.ts.map +1 -1
- package/dest/contract_logging.js +21 -6
- package/dest/contract_sync/contract_sync_service.d.ts +7 -4
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
- package/dest/contract_sync/contract_sync_service.js +59 -32
- package/dest/contract_sync/helpers.d.ts +2 -2
- package/dest/contract_sync/helpers.d.ts.map +1 -1
- package/dest/contract_sync/helpers.js +7 -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 +16 -4
- package/dest/logs/log_service.d.ts +6 -7
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +24 -28
- 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 +2 -2
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +14 -5
- package/dest/oracle_version.d.ts +2 -2
- package/dest/oracle_version.js +2 -2
- package/dest/pxe.d.ts +6 -3
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +37 -21
- package/dest/storage/capsule_store/capsule_service.d.ts +22 -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 +33 -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/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +26 -25
- 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/index.d.ts +2 -2
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +10 -1
- 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 +2 -1
- 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 +24 -11
- package/package.json +16 -16
- package/src/block_synchronizer/block_synchronizer.ts +6 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +40 -7
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +16 -11
- package/src/contract_function_simulator/index.ts +1 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +8 -8
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -9
- package/src/contract_function_simulator/oracle/interfaces.ts +34 -28
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +98 -0
- package/src/contract_function_simulator/oracle/oracle.ts +120 -64
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +14 -62
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +279 -72
- package/src/contract_logging.ts +18 -5
- package/src/contract_sync/contract_sync_service.ts +89 -49
- package/src/contract_sync/helpers.ts +3 -2
- package/src/events/event_service.ts +17 -4
- package/src/logs/log_service.ts +51 -46
- package/src/messages/message_context_service.ts +44 -0
- package/src/notes/note_service.ts +16 -5
- package/src/oracle_version.ts +2 -2
- package/src/pxe.ts +55 -19
- package/src/storage/capsule_store/capsule_service.ts +91 -0
- package/src/storage/capsule_store/capsule_store.ts +34 -26
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/metadata.ts +1 -1
- package/src/storage/tagging_store/sender_tagging_store.ts +182 -135
- package/src/tagging/index.ts +1 -1
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +19 -1
- 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 +19 -9
|
@@ -6,6 +6,7 @@ import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
|
6
6
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
7
|
import { BlockHash } from '@aztec/stdlib/block';
|
|
8
8
|
import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
|
|
9
|
+
import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
|
|
9
10
|
import { packAsHintedNote } from './note_packing_utils.js';
|
|
10
11
|
export class UnavailableOracleError extends Error {
|
|
11
12
|
constructor(oracleName){
|
|
@@ -14,6 +15,25 @@ export class UnavailableOracleError extends Error {
|
|
|
14
15
|
}
|
|
15
16
|
/**
|
|
16
17
|
* A data source that has all the apis required by Aztec.nr.
|
|
18
|
+
*
|
|
19
|
+
* ## Oracle naming conventions
|
|
20
|
+
*
|
|
21
|
+
* We try to keep oracle naming consistent, please see below the conventions we adhere to.
|
|
22
|
+
*
|
|
23
|
+
* Each oracle method name has the form `aztec_{scope}_{verb}{Object}`, where:
|
|
24
|
+
*
|
|
25
|
+
* - **Scope prefix** indicates the execution context required:
|
|
26
|
+
* - `aztec_prv_` — available only during private function execution.
|
|
27
|
+
* - `aztec_utl_` — available during both utility and private execution.
|
|
28
|
+
*
|
|
29
|
+
* - **Verb** signals the operation's semantics (verb-first, then object):
|
|
30
|
+
* - `get` — read / lookup / get data from oracle into contract.
|
|
31
|
+
* - `does`/`is`/`has` — predicate (returns boolean).
|
|
32
|
+
* - `emit`/`notify` — propagate data from contract to oracle.
|
|
33
|
+
* - `set` — contract driven oracle state mutation (capsules, execution cache, tagging, etc).
|
|
34
|
+
* - `call` — trigger nested execution (control flow).
|
|
35
|
+
* - `assert` — validate a condition, throw on failure.
|
|
36
|
+
* - Standalone verbs (`delete`, `copy`, `decrypt`, `log`, etc) are used when no generic verb fits.
|
|
17
37
|
*/ export class Oracle {
|
|
18
38
|
handler;
|
|
19
39
|
constructor(handler){
|
|
@@ -60,11 +80,15 @@ export class UnavailableOracleError extends Error {
|
|
|
60
80
|
}
|
|
61
81
|
});
|
|
62
82
|
// Build callback object and return it
|
|
63
|
-
|
|
83
|
+
const callback = oracleNames.reduce((acc, name)=>{
|
|
64
84
|
const method = this[name];
|
|
65
85
|
acc[name] = method.bind(this);
|
|
66
86
|
return acc;
|
|
67
87
|
}, {});
|
|
88
|
+
return {
|
|
89
|
+
...callback,
|
|
90
|
+
...buildLegacyOracleCallbacks(this)
|
|
91
|
+
};
|
|
68
92
|
}
|
|
69
93
|
// eslint-disable-next-line camelcase
|
|
70
94
|
aztec_utl_assertCompatibleOracleVersion([version]) {
|
|
@@ -79,13 +103,13 @@ export class UnavailableOracleError extends Error {
|
|
|
79
103
|
]);
|
|
80
104
|
}
|
|
81
105
|
// eslint-disable-next-line camelcase
|
|
82
|
-
|
|
83
|
-
this.handlerAsPrivate().
|
|
106
|
+
aztec_prv_setHashPreimage(values, [hash]) {
|
|
107
|
+
this.handlerAsPrivate().setHashPreimage(values.map(Fr.fromString), Fr.fromString(hash));
|
|
84
108
|
return Promise.resolve([]);
|
|
85
109
|
}
|
|
86
110
|
// eslint-disable-next-line camelcase
|
|
87
|
-
async
|
|
88
|
-
const values = await this.handlerAsPrivate().
|
|
111
|
+
async aztec_prv_getHashPreimage([returnsHash]) {
|
|
112
|
+
const values = await this.handlerAsPrivate().getHashPreimage(Fr.fromString(returnsHash));
|
|
89
113
|
return [
|
|
90
114
|
values.map(toACVMField)
|
|
91
115
|
];
|
|
@@ -182,9 +206,9 @@ export class UnavailableOracleError extends Error {
|
|
|
182
206
|
];
|
|
183
207
|
}
|
|
184
208
|
// eslint-disable-next-line camelcase
|
|
185
|
-
async
|
|
209
|
+
async aztec_utl_getPublicKeysAndPartialAddress([address]) {
|
|
186
210
|
const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
|
|
187
|
-
const result = await this.handlerAsUtility().
|
|
211
|
+
const result = await this.handlerAsUtility().getPublicKeysAndPartialAddress(parsedAddress);
|
|
188
212
|
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
189
213
|
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
190
214
|
if (result === undefined) {
|
|
@@ -246,8 +270,8 @@ export class UnavailableOracleError extends Error {
|
|
|
246
270
|
];
|
|
247
271
|
}
|
|
248
272
|
// eslint-disable-next-line camelcase
|
|
249
|
-
async
|
|
250
|
-
const exists = await this.handlerAsUtility().
|
|
273
|
+
async aztec_utl_doesNullifierExist([innerNullifier]) {
|
|
274
|
+
const exists = await this.handlerAsUtility().doesNullifierExist(Fr.fromString(innerNullifier));
|
|
251
275
|
return [
|
|
252
276
|
toACVMField(exists)
|
|
253
277
|
];
|
|
@@ -258,8 +282,8 @@ export class UnavailableOracleError extends Error {
|
|
|
258
282
|
return message.toNoirRepresentation();
|
|
259
283
|
}
|
|
260
284
|
// eslint-disable-next-line camelcase
|
|
261
|
-
async
|
|
262
|
-
const values = await this.handlerAsUtility().
|
|
285
|
+
async aztec_utl_getFromPublicStorage([blockHash], [contractAddress], [startStorageSlot], [numberOfElements]) {
|
|
286
|
+
const values = await this.handlerAsUtility().getFromPublicStorage(BlockHash.fromString(blockHash), new AztecAddress(Fr.fromString(contractAddress)), Fr.fromString(startStorageSlot), +numberOfElements);
|
|
263
287
|
return [
|
|
264
288
|
values.map(toACVMField)
|
|
265
289
|
];
|
|
@@ -292,23 +316,18 @@ export class UnavailableOracleError extends Error {
|
|
|
292
316
|
];
|
|
293
317
|
}
|
|
294
318
|
// eslint-disable-next-line camelcase
|
|
295
|
-
async
|
|
296
|
-
await this.handlerAsPrivate().
|
|
319
|
+
async aztec_prv_assertValidPublicCalldata([calldataHash]) {
|
|
320
|
+
await this.handlerAsPrivate().assertValidPublicCalldata(Fr.fromString(calldataHash));
|
|
297
321
|
return [];
|
|
298
322
|
}
|
|
299
323
|
// eslint-disable-next-line camelcase
|
|
300
|
-
async
|
|
301
|
-
await this.handlerAsPrivate().
|
|
302
|
-
return [];
|
|
303
|
-
}
|
|
304
|
-
// eslint-disable-next-line camelcase
|
|
305
|
-
async aztec_prv_notifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]) {
|
|
306
|
-
await this.handlerAsPrivate().notifySetMinRevertibleSideEffectCounter(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
|
|
324
|
+
async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]) {
|
|
325
|
+
await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
|
|
307
326
|
return Promise.resolve([]);
|
|
308
327
|
}
|
|
309
328
|
// eslint-disable-next-line camelcase
|
|
310
|
-
async
|
|
311
|
-
const isRevertible = await this.handlerAsPrivate().
|
|
329
|
+
async aztec_prv_isExecutionInRevertiblePhase([sideEffectCounter]) {
|
|
330
|
+
const isRevertible = await this.handlerAsPrivate().isExecutionInRevertiblePhase(Fr.fromString(sideEffectCounter).toNumber());
|
|
312
331
|
return Promise.resolve([
|
|
313
332
|
toACVMField(isRevertible)
|
|
314
333
|
]);
|
|
@@ -321,28 +340,33 @@ export class UnavailableOracleError extends Error {
|
|
|
321
340
|
];
|
|
322
341
|
}
|
|
323
342
|
// eslint-disable-next-line camelcase
|
|
324
|
-
async
|
|
325
|
-
await this.handlerAsUtility().
|
|
343
|
+
async aztec_utl_getPendingTaggedLogs([pendingTaggedLogArrayBaseSlot], [scope]) {
|
|
344
|
+
await this.handlerAsUtility().getPendingTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot), AztecAddress.fromString(scope));
|
|
326
345
|
return [];
|
|
327
346
|
}
|
|
328
347
|
// eslint-disable-next-line camelcase
|
|
329
|
-
async aztec_utl_validateAndStoreEnqueuedNotesAndEvents([contractAddress], [noteValidationRequestsArrayBaseSlot], [eventValidationRequestsArrayBaseSlot]) {
|
|
330
|
-
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(AztecAddress.fromString(contractAddress), Fr.fromString(noteValidationRequestsArrayBaseSlot), Fr.fromString(eventValidationRequestsArrayBaseSlot));
|
|
348
|
+
async aztec_utl_validateAndStoreEnqueuedNotesAndEvents([contractAddress], [noteValidationRequestsArrayBaseSlot], [eventValidationRequestsArrayBaseSlot], [maxNotePackedLen], [maxEventSerializedLen], [scope]) {
|
|
349
|
+
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(AztecAddress.fromString(contractAddress), Fr.fromString(noteValidationRequestsArrayBaseSlot), Fr.fromString(eventValidationRequestsArrayBaseSlot), Fr.fromString(maxNotePackedLen).toNumber(), Fr.fromString(maxEventSerializedLen).toNumber(), AztecAddress.fromString(scope));
|
|
331
350
|
return [];
|
|
332
351
|
}
|
|
333
352
|
// eslint-disable-next-line camelcase
|
|
334
|
-
async
|
|
335
|
-
await this.handlerAsUtility().
|
|
353
|
+
async aztec_utl_getLogsByTag([contractAddress], [logRetrievalRequestsArrayBaseSlot], [logRetrievalResponsesArrayBaseSlot], [scope]) {
|
|
354
|
+
await this.handlerAsUtility().getLogsByTag(AztecAddress.fromString(contractAddress), Fr.fromString(logRetrievalRequestsArrayBaseSlot), Fr.fromString(logRetrievalResponsesArrayBaseSlot), AztecAddress.fromString(scope));
|
|
336
355
|
return [];
|
|
337
356
|
}
|
|
338
357
|
// eslint-disable-next-line camelcase
|
|
339
|
-
async
|
|
340
|
-
await this.handlerAsUtility().
|
|
358
|
+
async aztec_utl_getMessageContextsByTxHash([contractAddress], [messageContextRequestsArrayBaseSlot], [messageContextResponsesArrayBaseSlot], [scope]) {
|
|
359
|
+
await this.handlerAsUtility().getMessageContextsByTxHash(AztecAddress.fromString(contractAddress), Fr.fromString(messageContextRequestsArrayBaseSlot), Fr.fromString(messageContextResponsesArrayBaseSlot), AztecAddress.fromString(scope));
|
|
341
360
|
return [];
|
|
342
361
|
}
|
|
343
362
|
// eslint-disable-next-line camelcase
|
|
344
|
-
|
|
345
|
-
|
|
363
|
+
aztec_utl_setCapsule([contractAddress], [slot], capsule, [scope]) {
|
|
364
|
+
this.handlerAsUtility().setCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot), capsule.map(Fr.fromString), AztecAddress.fromField(Fr.fromString(scope)));
|
|
365
|
+
return Promise.resolve([]);
|
|
366
|
+
}
|
|
367
|
+
// eslint-disable-next-line camelcase
|
|
368
|
+
async aztec_utl_getCapsule([contractAddress], [slot], [tSize], [scope]) {
|
|
369
|
+
const values = await this.handlerAsUtility().getCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot), AztecAddress.fromField(Fr.fromString(scope)));
|
|
346
370
|
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
347
371
|
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
348
372
|
if (values === null) {
|
|
@@ -360,35 +384,58 @@ export class UnavailableOracleError extends Error {
|
|
|
360
384
|
}
|
|
361
385
|
}
|
|
362
386
|
// eslint-disable-next-line camelcase
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
return [];
|
|
387
|
+
aztec_utl_deleteCapsule([contractAddress], [slot], [scope]) {
|
|
388
|
+
this.handlerAsUtility().deleteCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(slot), AztecAddress.fromField(Fr.fromString(scope)));
|
|
389
|
+
return Promise.resolve([]);
|
|
366
390
|
}
|
|
367
391
|
// eslint-disable-next-line camelcase
|
|
368
|
-
async aztec_utl_copyCapsule([contractAddress], [srcSlot], [dstSlot], [numEntries]) {
|
|
369
|
-
await this.handlerAsUtility().copyCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(srcSlot), Fr.fromString(dstSlot), Fr.fromString(numEntries).toNumber());
|
|
392
|
+
async aztec_utl_copyCapsule([contractAddress], [srcSlot], [dstSlot], [numEntries], [scope]) {
|
|
393
|
+
await this.handlerAsUtility().copyCapsule(AztecAddress.fromField(Fr.fromString(contractAddress)), Fr.fromString(srcSlot), Fr.fromString(dstSlot), Fr.fromString(numEntries).toNumber(), AztecAddress.fromField(Fr.fromString(scope)));
|
|
370
394
|
return [];
|
|
371
395
|
}
|
|
372
396
|
// eslint-disable-next-line camelcase
|
|
373
|
-
async
|
|
397
|
+
async aztec_utl_decryptAes128(ciphertextBVecStorage, [ciphertextLength], iv, symKey) {
|
|
374
398
|
const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
|
|
375
399
|
const ivBuffer = fromUintArray(iv, 8);
|
|
376
400
|
const symKeyBuffer = fromUintArray(symKey, 8);
|
|
377
|
-
|
|
378
|
-
|
|
401
|
+
// Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
|
|
402
|
+
try {
|
|
403
|
+
const plaintext = await this.handlerAsUtility().decryptAes128(ciphertext, ivBuffer, symKeyBuffer);
|
|
404
|
+
const [storage, length] = bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
|
|
405
|
+
return [
|
|
406
|
+
toACVMField(1),
|
|
407
|
+
storage,
|
|
408
|
+
length
|
|
409
|
+
];
|
|
410
|
+
} catch {
|
|
411
|
+
const zeroStorage = Array(ciphertextBVecStorage.length).fill(toACVMField(0));
|
|
412
|
+
return [
|
|
413
|
+
toACVMField(0),
|
|
414
|
+
zeroStorage,
|
|
415
|
+
toACVMField(0)
|
|
416
|
+
];
|
|
417
|
+
}
|
|
379
418
|
}
|
|
380
419
|
// eslint-disable-next-line camelcase
|
|
381
|
-
async aztec_utl_getSharedSecret([address], [ephPKField0], [ephPKField1], [ephPKField2]) {
|
|
420
|
+
async aztec_utl_getSharedSecret([address], [ephPKField0], [ephPKField1], [ephPKField2], [contractAddress]) {
|
|
382
421
|
const secret = await this.handlerAsUtility().getSharedSecret(AztecAddress.fromField(Fr.fromString(address)), Point.fromFields([
|
|
383
422
|
ephPKField0,
|
|
384
423
|
ephPKField1,
|
|
385
424
|
ephPKField2
|
|
386
|
-
].map(Fr.fromString)));
|
|
387
|
-
return
|
|
425
|
+
].map(Fr.fromString)), AztecAddress.fromField(Fr.fromString(contractAddress)));
|
|
426
|
+
return [
|
|
427
|
+
toACVMField(secret)
|
|
428
|
+
];
|
|
429
|
+
}
|
|
430
|
+
// eslint-disable-next-line camelcase
|
|
431
|
+
aztec_utl_setContractSyncCacheInvalid([contractAddress], scopes, [scopeCount]) {
|
|
432
|
+
const scopeAddresses = scopes.slice(0, +scopeCount).map((s)=>AztecAddress.fromField(Fr.fromString(s)));
|
|
433
|
+
this.handlerAsUtility().setContractSyncCacheInvalid(AztecAddress.fromField(Fr.fromString(contractAddress)), scopeAddresses);
|
|
434
|
+
return Promise.resolve([]);
|
|
388
435
|
}
|
|
389
436
|
// eslint-disable-next-line camelcase
|
|
390
437
|
async aztec_utl_emitOffchainEffect(data) {
|
|
391
|
-
await this.
|
|
438
|
+
await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
|
|
392
439
|
return [];
|
|
393
440
|
}
|
|
394
441
|
// eslint-disable-next-line camelcase
|
|
@@ -45,11 +45,11 @@ import { Oracle } from './oracle.js';
|
|
|
45
45
|
appCircuitName: functionName
|
|
46
46
|
});
|
|
47
47
|
const contractClassLogs = privateExecutionOracle.getContractClassLogs();
|
|
48
|
-
const rawReturnValues = await privateExecutionOracle.
|
|
48
|
+
const rawReturnValues = await privateExecutionOracle.getHashPreimage(publicInputs.returnsHash);
|
|
49
49
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
50
50
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|
|
51
51
|
const offchainEffects = privateExecutionOracle.getOffchainEffects();
|
|
52
|
-
const
|
|
52
|
+
const taggingIndexRanges = privateExecutionOracle.getUsedTaggingIndexRanges();
|
|
53
53
|
const nestedExecutionResults = privateExecutionOracle.getNestedExecutionResults();
|
|
54
54
|
let timerSubtractionList = nestedExecutionResults;
|
|
55
55
|
let witgenTime = duration;
|
|
@@ -59,7 +59,9 @@ import { Oracle } from './oracle.js';
|
|
|
59
59
|
timerSubtractionList = timerSubtractionList.flatMap((nested)=>nested.nestedExecutionResults ?? []);
|
|
60
60
|
}
|
|
61
61
|
log.debug(`Returning from call to ${contractAddress.toString()}:${functionSelector}`);
|
|
62
|
-
return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, newNotes, noteHashNullifierCounterMap, rawReturnValues, offchainEffects
|
|
62
|
+
return new PrivateCallExecutionResult(artifact.bytecode, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, newNotes, noteHashNullifierCounterMap, rawReturnValues, offchainEffects.map((e)=>({
|
|
63
|
+
data: e.data
|
|
64
|
+
})), taggingIndexRanges, nestedExecutionResults, contractClassLogs, {
|
|
63
65
|
timings: {
|
|
64
66
|
witgen: witgenTime,
|
|
65
67
|
oracles: acirExecutionResult.oracles
|
|
@@ -3,12 +3,11 @@ import { type CircuitSimulator } from '@aztec/simulator/client';
|
|
|
3
3
|
import { type FunctionAbi, type FunctionCall, FunctionSelector, type NoteSelector } from '@aztec/stdlib/abi';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
6
|
-
import { type ContractClassLog, type
|
|
6
|
+
import { type ContractClassLog, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
7
7
|
import { Tag } from '@aztec/stdlib/logs';
|
|
8
8
|
import { type NoteStatus } from '@aztec/stdlib/note';
|
|
9
9
|
import { CallContext, CountedContractClassLog, NoteAndSlot, PrivateCallExecutionResult, type TxContext } from '@aztec/stdlib/tx';
|
|
10
10
|
import type { AccessScopes } from '../../access_scopes.js';
|
|
11
|
-
import type { ContractSyncService } from '../../contract_sync/contract_sync_service.js';
|
|
12
11
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
13
12
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
14
13
|
import { ExecutionTaggingIndexCache } from '../execution_tagging_index_cache.js';
|
|
@@ -26,7 +25,6 @@ export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contr
|
|
|
26
25
|
noteCache: ExecutionNoteCache;
|
|
27
26
|
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
28
27
|
senderTaggingStore: SenderTaggingStore;
|
|
29
|
-
contractSyncService: ContractSyncService;
|
|
30
28
|
totalPublicCalldataCount?: number;
|
|
31
29
|
sideEffectCounter?: number;
|
|
32
30
|
senderForTags?: AztecAddress;
|
|
@@ -49,7 +47,6 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
49
47
|
private newNotes;
|
|
50
48
|
private noteHashNullifierCounterMap;
|
|
51
49
|
private contractClassLogs;
|
|
52
|
-
private offchainEffects;
|
|
53
50
|
private nestedExecutionResults;
|
|
54
51
|
private readonly argsHash;
|
|
55
52
|
private readonly txContext;
|
|
@@ -59,7 +56,6 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
59
56
|
private readonly noteCache;
|
|
60
57
|
private readonly taggingIndexCache;
|
|
61
58
|
private readonly senderTaggingStore;
|
|
62
|
-
private readonly contractSyncService;
|
|
63
59
|
private totalPublicCalldataCount;
|
|
64
60
|
protected sideEffectCounter: number;
|
|
65
61
|
private senderForTags?;
|
|
@@ -82,15 +78,9 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
82
78
|
*/
|
|
83
79
|
getContractClassLogs(): CountedContractClassLog[];
|
|
84
80
|
/**
|
|
85
|
-
*
|
|
81
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
86
82
|
*/
|
|
87
|
-
|
|
88
|
-
data: Fr[];
|
|
89
|
-
}[];
|
|
90
|
-
/**
|
|
91
|
-
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
92
|
-
*/
|
|
93
|
-
getUsedPreTags(): PreTag[];
|
|
83
|
+
getUsedTaggingIndexRanges(): TaggingIndexRange[];
|
|
94
84
|
/**
|
|
95
85
|
* Return the nested execution results during this execution.
|
|
96
86
|
*/
|
|
@@ -130,14 +120,14 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
130
120
|
* @param values - Values to store.
|
|
131
121
|
* @returns The hash of the values.
|
|
132
122
|
*/
|
|
133
|
-
|
|
123
|
+
setHashPreimage(values: Fr[], hash: Fr): void;
|
|
134
124
|
/**
|
|
135
125
|
* Gets values from the execution cache.
|
|
136
126
|
* @param hash - Hash of the values.
|
|
137
127
|
* @returns The values.
|
|
138
128
|
*/
|
|
139
|
-
|
|
140
|
-
|
|
129
|
+
getHashPreimage(hash: Fr): Promise<Fr[]>;
|
|
130
|
+
doesNullifierExist(innerNullifier: Fr): Promise<boolean>;
|
|
141
131
|
/**
|
|
142
132
|
* Gets some notes for a storage slot.
|
|
143
133
|
*
|
|
@@ -215,26 +205,11 @@ export declare class PrivateExecutionOracle extends UtilityExecutionOracle imple
|
|
|
215
205
|
endSideEffectCounter: Fr;
|
|
216
206
|
returnsHash: Fr;
|
|
217
207
|
}>;
|
|
218
|
-
/**
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
223
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
224
|
-
*/
|
|
225
|
-
notifyEnqueuedPublicFunctionCall(_targetContractAddress: AztecAddress, calldataHash: Fr, _sideEffectCounter: number, _isStaticCall: boolean): Promise<void>;
|
|
226
|
-
/**
|
|
227
|
-
* Verify relevant information when a public teardown function is set.
|
|
228
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
229
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
230
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
231
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
232
|
-
*/
|
|
233
|
-
notifySetPublicTeardownFunctionCall(_targetContractAddress: AztecAddress, calldataHash: Fr, _sideEffectCounter: number, _isStaticCall: boolean): Promise<void>;
|
|
234
|
-
notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void>;
|
|
235
|
-
isSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean>;
|
|
208
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
209
|
+
assertValidPublicCalldata(calldataHash: Fr): Promise<void>;
|
|
210
|
+
notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void>;
|
|
211
|
+
isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean>;
|
|
236
212
|
private deriveCallContext;
|
|
237
213
|
getDebugFunctionName(): Promise<string>;
|
|
238
|
-
emitOffchainEffect(data: Fr[]): Promise<void>;
|
|
239
214
|
}
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb25fb3JhY2xlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL29yYWNsZS9wcml2YXRlX2V4ZWN1dGlvbl9vcmFjbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFpQixNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFFaEIsS0FBSyxZQUFZLEVBQ2pCLGdCQUFnQixFQUNoQixLQUFLLFlBQVksRUFFbEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQXVDLEtBQUssaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4SCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekMsT0FBTyxFQUFRLEtBQUssVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUNMLFdBQVcsRUFDWCx1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLDBCQUEwQixFQUMxQixLQUFLLFNBQVMsRUFDZixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFOUYsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private_execution_oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution_oracle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,YAAY,EACjB,gBAAgB,EAChB,KAAK,YAAY,EAElB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,KAAK,gBAAgB,EAAuC,KAAK,
|
|
1
|
+
{"version":3,"file":"private_execution_oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/private_execution_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,6 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
29
29
|
*/ newNotes = [];
|
|
30
30
|
noteHashNullifierCounterMap = new Map();
|
|
31
31
|
contractClassLogs = [];
|
|
32
|
-
offchainEffects = [];
|
|
33
32
|
nestedExecutionResults = [];
|
|
34
33
|
argsHash;
|
|
35
34
|
txContext;
|
|
@@ -39,7 +38,6 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
39
38
|
noteCache;
|
|
40
39
|
taggingIndexCache;
|
|
41
40
|
senderTaggingStore;
|
|
42
|
-
contractSyncService;
|
|
43
41
|
totalPublicCalldataCount;
|
|
44
42
|
sideEffectCounter;
|
|
45
43
|
senderForTags;
|
|
@@ -58,7 +56,6 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
58
56
|
this.noteCache = args.noteCache;
|
|
59
57
|
this.taggingIndexCache = args.taggingIndexCache;
|
|
60
58
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
61
|
-
this.contractSyncService = args.contractSyncService;
|
|
62
59
|
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
63
60
|
this.sideEffectCounter = args.sideEffectCounter ?? 0;
|
|
64
61
|
this.senderForTags = args.senderForTags;
|
|
@@ -103,14 +100,9 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
103
100
|
return this.contractClassLogs;
|
|
104
101
|
}
|
|
105
102
|
/**
|
|
106
|
-
*
|
|
107
|
-
*/
|
|
108
|
-
return this.
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
112
|
-
*/ getUsedPreTags() {
|
|
113
|
-
return this.taggingIndexCache.getUsedPreTags();
|
|
103
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
104
|
+
*/ getUsedTaggingIndexRanges() {
|
|
105
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
114
106
|
}
|
|
115
107
|
/**
|
|
116
108
|
* Return the nested execution results during this execution.
|
|
@@ -183,21 +175,21 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
183
175
|
* Store values in the execution cache.
|
|
184
176
|
* @param values - Values to store.
|
|
185
177
|
* @returns The hash of the values.
|
|
186
|
-
*/
|
|
178
|
+
*/ setHashPreimage(values, hash) {
|
|
187
179
|
return this.executionCache.store(values, hash);
|
|
188
180
|
}
|
|
189
181
|
/**
|
|
190
182
|
* Gets values from the execution cache.
|
|
191
183
|
* @param hash - Hash of the values.
|
|
192
184
|
* @returns The values.
|
|
193
|
-
*/
|
|
185
|
+
*/ getHashPreimage(hash) {
|
|
194
186
|
const preimage = this.executionCache.getPreimage(hash);
|
|
195
187
|
if (!preimage) {
|
|
196
188
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
197
189
|
}
|
|
198
190
|
return Promise.resolve(preimage);
|
|
199
191
|
}
|
|
200
|
-
async
|
|
192
|
+
async doesNullifierExist(innerNullifier) {
|
|
201
193
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
202
194
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
203
195
|
// in the current transaction.
|
|
@@ -205,7 +197,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
205
197
|
contractAddress: this.contractAddress
|
|
206
198
|
});
|
|
207
199
|
const nullifier = (await siloNullifier(this.contractAddress, innerNullifier)).toBigInt();
|
|
208
|
-
return this.noteCache.getNullifiers(this.contractAddress).has(nullifier) || await super.
|
|
200
|
+
return this.noteCache.getNullifiers(this.contractAddress).has(nullifier) || await super.doesNullifierExist(innerNullifier);
|
|
209
201
|
}
|
|
210
202
|
/**
|
|
211
203
|
* Gets some notes for a storage slot.
|
|
@@ -387,8 +379,9 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
387
379
|
senderTaggingStore: this.senderTaggingStore,
|
|
388
380
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
389
381
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
390
|
-
|
|
382
|
+
capsuleService: this.capsuleService,
|
|
391
383
|
privateEventStore: this.privateEventStore,
|
|
384
|
+
messageContextService: this.messageContextService,
|
|
392
385
|
contractSyncService: this.contractSyncService,
|
|
393
386
|
jobId: this.jobId,
|
|
394
387
|
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
@@ -414,7 +407,7 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
414
407
|
returnsHash: publicInputs.returnsHash
|
|
415
408
|
};
|
|
416
409
|
}
|
|
417
|
-
|
|
410
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */ assertValidPublicCalldata(calldataHash) {
|
|
418
411
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
419
412
|
if (!calldata) {
|
|
420
413
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -423,31 +416,12 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
423
416
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
424
417
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
425
418
|
}
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* Verify relevant information when a public function is enqueued.
|
|
429
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
430
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
431
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
432
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
433
|
-
*/ notifyEnqueuedPublicFunctionCall(_targetContractAddress, calldataHash, _sideEffectCounter, _isStaticCall) {
|
|
434
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
435
419
|
return Promise.resolve();
|
|
436
420
|
}
|
|
437
|
-
|
|
438
|
-
* Verify relevant information when a public teardown function is set.
|
|
439
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
440
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
441
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
442
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
443
|
-
*/ notifySetPublicTeardownFunctionCall(_targetContractAddress, calldataHash, _sideEffectCounter, _isStaticCall) {
|
|
444
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
445
|
-
return Promise.resolve();
|
|
446
|
-
}
|
|
447
|
-
notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter) {
|
|
421
|
+
notifyRevertiblePhaseStart(minRevertibleSideEffectCounter) {
|
|
448
422
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
449
423
|
}
|
|
450
|
-
|
|
424
|
+
isExecutionInRevertiblePhase(sideEffectCounter) {
|
|
451
425
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
452
426
|
}
|
|
453
427
|
/**
|
|
@@ -462,10 +436,4 @@ import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
|
462
436
|
getDebugFunctionName() {
|
|
463
437
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
464
438
|
}
|
|
465
|
-
emitOffchainEffect(data) {
|
|
466
|
-
this.offchainEffects.push({
|
|
467
|
-
data
|
|
468
|
-
});
|
|
469
|
-
return Promise.resolve();
|
|
470
|
-
}
|
|
471
439
|
}
|