@aztec/txe 0.0.1-commit.f2ce05ee → 0.0.1-commit.f5d02921e

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.
Files changed (58) hide show
  1. package/dest/index.d.ts +1 -1
  2. package/dest/index.d.ts.map +1 -1
  3. package/dest/index.js +88 -54
  4. package/dest/oracle/interfaces.d.ts +29 -28
  5. package/dest/oracle/interfaces.d.ts.map +1 -1
  6. package/dest/oracle/txe_oracle_public_context.d.ts +13 -13
  7. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  8. package/dest/oracle/txe_oracle_public_context.js +12 -12
  9. package/dest/oracle/txe_oracle_top_level_context.d.ts +23 -23
  10. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  11. package/dest/oracle/txe_oracle_top_level_context.js +112 -54
  12. package/dest/rpc_translator.d.ts +87 -82
  13. package/dest/rpc_translator.d.ts.map +1 -1
  14. package/dest/rpc_translator.js +285 -152
  15. package/dest/state_machine/archiver.d.ts +3 -3
  16. package/dest/state_machine/archiver.d.ts.map +1 -1
  17. package/dest/state_machine/archiver.js +7 -8
  18. package/dest/state_machine/dummy_p2p_client.d.ts +16 -12
  19. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
  20. package/dest/state_machine/dummy_p2p_client.js +28 -16
  21. package/dest/state_machine/global_variable_builder.d.ts +3 -3
  22. package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
  23. package/dest/state_machine/global_variable_builder.js +1 -1
  24. package/dest/state_machine/index.d.ts +6 -3
  25. package/dest/state_machine/index.d.ts.map +1 -1
  26. package/dest/state_machine/index.js +9 -5
  27. package/dest/state_machine/mock_epoch_cache.d.ts +17 -3
  28. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
  29. package/dest/state_machine/mock_epoch_cache.js +32 -2
  30. package/dest/state_machine/synchronizer.d.ts +5 -5
  31. package/dest/state_machine/synchronizer.d.ts.map +1 -1
  32. package/dest/state_machine/synchronizer.js +3 -3
  33. package/dest/txe_session.d.ts +10 -6
  34. package/dest/txe_session.d.ts.map +1 -1
  35. package/dest/txe_session.js +90 -25
  36. package/dest/util/encoding.d.ts +69 -1
  37. package/dest/util/encoding.d.ts.map +1 -1
  38. package/dest/util/txe_public_contract_data_source.d.ts +2 -3
  39. package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
  40. package/dest/util/txe_public_contract_data_source.js +6 -25
  41. package/package.json +15 -15
  42. package/src/index.ts +89 -52
  43. package/src/oracle/interfaces.ts +32 -31
  44. package/src/oracle/txe_oracle_public_context.ts +12 -12
  45. package/src/oracle/txe_oracle_top_level_context.ts +118 -92
  46. package/src/rpc_translator.ts +332 -174
  47. package/src/state_machine/archiver.ts +6 -5
  48. package/src/state_machine/dummy_p2p_client.ts +39 -22
  49. package/src/state_machine/global_variable_builder.ts +7 -1
  50. package/src/state_machine/index.ts +10 -1
  51. package/src/state_machine/mock_epoch_cache.ts +42 -3
  52. package/src/state_machine/synchronizer.ts +4 -4
  53. package/src/txe_session.ts +102 -73
  54. package/src/util/txe_public_contract_data_source.ts +10 -38
  55. package/dest/util/txe_contract_store.d.ts +0 -12
  56. package/dest/util/txe_contract_store.d.ts.map +0 -1
  57. package/dest/util/txe_contract_store.js +0 -22
  58. package/src/util/txe_contract_store.ts +0 -36
@@ -6,7 +6,7 @@ import { EventSelector, 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 { addressFromSingle, arrayOfArraysToBoundedVecOfArrays, arrayToBoundedVec, bufferToU8Array, fromArray, fromSingle, fromUintArray, fromUintBoundedVec, toArray, toForeignCallResult, toSingle } from './util/encoding.js';
9
- const MAX_EVENT_LEN = 12; // This is MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_RESERVED_FIELDS
9
+ const MAX_EVENT_LEN = 10; // This is MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN
10
10
  const MAX_PRIVATE_EVENTS_PER_TXE_QUERY = 5;
11
11
  export class UnavailableOracleError extends Error {
12
12
  constructor(oracleName){
@@ -61,59 +61,69 @@ export class RPCTranslator {
61
61
  return this.oracleHandler;
62
62
  }
63
63
  // TXE session state transition functions - these get handled by the state handler
64
- async txeSetTopLevelTXEContext() {
64
+ // eslint-disable-next-line camelcase
65
+ async aztec_txe_setTopLevelTXEContext() {
65
66
  await this.stateHandler.enterTopLevelState();
66
67
  return toForeignCallResult([]);
67
68
  }
68
- async txeSetPrivateTXEContext(foreignContractAddressIsSome, foreignContractAddressValue, foreignAnchorBlockNumberIsSome, foreignAnchorBlockNumberValue) {
69
+ // eslint-disable-next-line camelcase
70
+ async aztec_txe_setPrivateTXEContext(foreignContractAddressIsSome, foreignContractAddressValue, foreignAnchorBlockNumberIsSome, foreignAnchorBlockNumberValue) {
69
71
  const contractAddress = fromSingle(foreignContractAddressIsSome).toBool() ? AztecAddress.fromField(fromSingle(foreignContractAddressValue)) : undefined;
70
72
  const anchorBlockNumber = fromSingle(foreignAnchorBlockNumberIsSome).toBool() ? BlockNumber(fromSingle(foreignAnchorBlockNumberValue).toNumber()) : undefined;
71
73
  const privateContextInputs = await this.stateHandler.enterPrivateState(contractAddress, anchorBlockNumber);
72
74
  return toForeignCallResult(privateContextInputs.toFields().map(toSingle));
73
75
  }
74
- async txeSetPublicTXEContext(foreignContractAddressIsSome, foreignContractAddressValue) {
76
+ // eslint-disable-next-line camelcase
77
+ async aztec_txe_setPublicTXEContext(foreignContractAddressIsSome, foreignContractAddressValue) {
75
78
  const contractAddress = fromSingle(foreignContractAddressIsSome).toBool() ? AztecAddress.fromField(fromSingle(foreignContractAddressValue)) : undefined;
76
79
  await this.stateHandler.enterPublicState(contractAddress);
77
80
  return toForeignCallResult([]);
78
81
  }
79
- async txeSetUtilityTXEContext(foreignContractAddressIsSome, foreignContractAddressValue) {
82
+ // eslint-disable-next-line camelcase
83
+ async aztec_txe_setUtilityTXEContext(foreignContractAddressIsSome, foreignContractAddressValue) {
80
84
  const contractAddress = fromSingle(foreignContractAddressIsSome).toBool() ? AztecAddress.fromField(fromSingle(foreignContractAddressValue)) : undefined;
81
85
  await this.stateHandler.enterUtilityState(contractAddress);
82
86
  return toForeignCallResult([]);
83
87
  }
84
88
  // Other oracles - these get handled by the oracle handler
85
89
  // TXE-specific oracles
86
- txeGetDefaultAddress() {
87
- const defaultAddress = this.handlerAsTxe().txeGetDefaultAddress();
90
+ // eslint-disable-next-line camelcase
91
+ aztec_txe_getDefaultAddress() {
92
+ const defaultAddress = this.handlerAsTxe().getDefaultAddress();
88
93
  return toForeignCallResult([
89
94
  toSingle(defaultAddress)
90
95
  ]);
91
96
  }
92
- async txeGetNextBlockNumber() {
93
- const nextBlockNumber = await this.handlerAsTxe().txeGetNextBlockNumber();
97
+ // eslint-disable-next-line camelcase
98
+ async aztec_txe_getNextBlockNumber() {
99
+ const nextBlockNumber = await this.handlerAsTxe().getNextBlockNumber();
94
100
  return toForeignCallResult([
95
101
  toSingle(nextBlockNumber)
96
102
  ]);
97
103
  }
98
- async txeGetNextBlockTimestamp() {
99
- const nextBlockTimestamp = await this.handlerAsTxe().txeGetNextBlockTimestamp();
104
+ // eslint-disable-next-line camelcase
105
+ async aztec_txe_getNextBlockTimestamp() {
106
+ const nextBlockTimestamp = await this.handlerAsTxe().getNextBlockTimestamp();
100
107
  return toForeignCallResult([
101
108
  toSingle(nextBlockTimestamp)
102
109
  ]);
103
110
  }
104
- async txeAdvanceBlocksBy(foreignBlocks) {
111
+ // eslint-disable-next-line camelcase
112
+ async aztec_txe_advanceBlocksBy(foreignBlocks) {
105
113
  const blocks = fromSingle(foreignBlocks).toNumber();
106
- await this.handlerAsTxe().txeAdvanceBlocksBy(blocks);
114
+ await this.handlerAsTxe().advanceBlocksBy(blocks);
107
115
  return toForeignCallResult([]);
108
116
  }
109
- txeAdvanceTimestampBy(foreignDuration) {
117
+ // eslint-disable-next-line camelcase
118
+ aztec_txe_advanceTimestampBy(foreignDuration) {
110
119
  const duration = fromSingle(foreignDuration).toBigInt();
111
- this.handlerAsTxe().txeAdvanceTimestampBy(duration);
120
+ this.handlerAsTxe().advanceTimestampBy(duration);
112
121
  return toForeignCallResult([]);
113
122
  }
114
- async txeDeploy(artifact, instance, foreignSecret) {
123
+ // eslint-disable-next-line camelcase
124
+ async aztec_txe_deploy(artifact, instance, foreignSecret) {
115
125
  const secret = fromSingle(foreignSecret);
116
- await this.handlerAsTxe().txeDeploy(artifact, instance, secret);
126
+ await this.handlerAsTxe().deploy(artifact, instance, secret);
117
127
  return toForeignCallResult([
118
128
  toArray([
119
129
  instance.salt,
@@ -124,59 +134,73 @@ export class RPCTranslator {
124
134
  ])
125
135
  ]);
126
136
  }
127
- async txeCreateAccount(foreignSecret) {
137
+ // eslint-disable-next-line camelcase
138
+ async aztec_txe_createAccount(foreignSecret) {
128
139
  const secret = fromSingle(foreignSecret);
129
- const completeAddress = await this.handlerAsTxe().txeCreateAccount(secret);
140
+ const completeAddress = await this.handlerAsTxe().createAccount(secret);
130
141
  return toForeignCallResult([
131
142
  toSingle(completeAddress.address),
132
143
  ...completeAddress.publicKeys.toFields().map(toSingle)
133
144
  ]);
134
145
  }
135
- async txeAddAccount(artifact, instance, foreignSecret) {
146
+ // eslint-disable-next-line camelcase
147
+ async aztec_txe_addAccount(artifact, instance, foreignSecret) {
136
148
  const secret = fromSingle(foreignSecret);
137
- const completeAddress = await this.handlerAsTxe().txeAddAccount(artifact, instance, secret);
149
+ const completeAddress = await this.handlerAsTxe().addAccount(artifact, instance, secret);
138
150
  return toForeignCallResult([
139
151
  toSingle(completeAddress.address),
140
152
  ...completeAddress.publicKeys.toFields().map(toSingle)
141
153
  ]);
142
154
  }
143
- async txeAddAuthWitness(foreignAddress, foreignMessageHash) {
155
+ // eslint-disable-next-line camelcase
156
+ async aztec_txe_addAuthWitness(foreignAddress, foreignMessageHash) {
144
157
  const address = addressFromSingle(foreignAddress);
145
158
  const messageHash = fromSingle(foreignMessageHash);
146
- await this.handlerAsTxe().txeAddAuthWitness(address, messageHash);
159
+ await this.handlerAsTxe().addAuthWitness(address, messageHash);
147
160
  return toForeignCallResult([]);
148
161
  }
149
162
  // PXE oracles
150
- utilityAssertCompatibleOracleVersion(foreignVersion) {
163
+ // eslint-disable-next-line camelcase
164
+ aztec_utl_assertCompatibleOracleVersion(foreignVersion) {
151
165
  const version = fromSingle(foreignVersion).toNumber();
152
- this.handlerAsMisc().utilityAssertCompatibleOracleVersion(version);
166
+ this.handlerAsMisc().assertCompatibleOracleVersion(version);
153
167
  return toForeignCallResult([]);
154
168
  }
155
- utilityGetRandomField() {
156
- const randomField = this.handlerAsMisc().utilityGetRandomField();
169
+ // eslint-disable-next-line camelcase
170
+ aztec_utl_getRandomField() {
171
+ const randomField = this.handlerAsMisc().getRandomField();
157
172
  return toForeignCallResult([
158
173
  toSingle(randomField)
159
174
  ]);
160
175
  }
161
- async txeGetLastBlockTimestamp() {
162
- const timestamp = await this.handlerAsTxe().txeGetLastBlockTimestamp();
176
+ // eslint-disable-next-line camelcase
177
+ async aztec_txe_getLastBlockTimestamp() {
178
+ const timestamp = await this.handlerAsTxe().getLastBlockTimestamp();
163
179
  return toForeignCallResult([
164
180
  toSingle(new Fr(timestamp))
165
181
  ]);
166
182
  }
167
- async txeGetLastTxEffects() {
168
- const { txHash, noteHashes, nullifiers } = await this.handlerAsTxe().txeGetLastTxEffects();
183
+ // eslint-disable-next-line camelcase
184
+ async aztec_txe_getLastTxEffects() {
185
+ const { txHash, noteHashes, nullifiers } = await this.handlerAsTxe().getLastTxEffects();
169
186
  return toForeignCallResult([
170
187
  toSingle(txHash.hash),
171
188
  ...arrayToBoundedVec(toArray(noteHashes), MAX_NOTE_HASHES_PER_TX),
172
189
  ...arrayToBoundedVec(toArray(nullifiers), MAX_NULLIFIERS_PER_TX)
173
190
  ]);
174
191
  }
175
- async txeGetPrivateEvents(foreignSelector, foreignContractAddress, foreignScope) {
192
+ // eslint-disable-next-line camelcase
193
+ async aztec_txe_getPrivateEvents(foreignSelector, foreignContractAddress, foreignScope) {
176
194
  const selector = EventSelector.fromField(fromSingle(foreignSelector));
177
195
  const contractAddress = addressFromSingle(foreignContractAddress);
178
196
  const scope = addressFromSingle(foreignScope);
179
- const events = await this.handlerAsTxe().txeGetPrivateEvents(selector, contractAddress, scope);
197
+ // TODO(F-335): Avoid doing the following 2 calls here.
198
+ {
199
+ await this.handlerAsTxe().syncContractNonOracleMethod(contractAddress, scope, this.stateHandler.getCurrentJob());
200
+ // We cycle job to commit the stores after the contract sync.
201
+ await this.stateHandler.cycleJob();
202
+ }
203
+ const events = await this.handlerAsTxe().getPrivateEvents(selector, contractAddress, scope);
180
204
  if (events.length > MAX_PRIVATE_EVENTS_PER_TXE_QUERY) {
181
205
  throw new Error(`Array of length ${events.length} larger than maxLen ${MAX_PRIVATE_EVENTS_PER_TXE_QUERY}`);
182
206
  }
@@ -194,48 +218,54 @@ export class RPCTranslator {
194
218
  toSingle(queryLength)
195
219
  ]);
196
220
  }
197
- privateStoreInExecutionCache(foreignValues, foreignHash) {
221
+ // eslint-disable-next-line camelcase
222
+ aztec_prv_setHashPreimage(foreignValues, foreignHash) {
198
223
  const values = fromArray(foreignValues);
199
224
  const hash = fromSingle(foreignHash);
200
- this.handlerAsPrivate().privateStoreInExecutionCache(values, hash);
225
+ this.handlerAsPrivate().setHashPreimage(values, hash);
201
226
  return toForeignCallResult([]);
202
227
  }
203
- async privateLoadFromExecutionCache(foreignHash) {
228
+ // eslint-disable-next-line camelcase
229
+ async aztec_prv_getHashPreimage(foreignHash) {
204
230
  const hash = fromSingle(foreignHash);
205
- const returns = await this.handlerAsPrivate().privateLoadFromExecutionCache(hash);
231
+ const returns = await this.handlerAsPrivate().getHashPreimage(hash);
206
232
  return toForeignCallResult([
207
233
  toArray(returns)
208
234
  ]);
209
235
  }
210
236
  // When the argument is a slice, noir automatically adds a length field to oracle call.
211
237
  // When the argument is an array, we add the field length manually to the signature.
212
- async utilityDebugLog(foreignLevel, foreignMessage, _foreignLength, foreignFields) {
238
+ // eslint-disable-next-line camelcase
239
+ async aztec_utl_log(foreignLevel, foreignMessage, _foreignLength, foreignFields) {
213
240
  const level = fromSingle(foreignLevel).toNumber();
214
241
  const message = fromArray(foreignMessage).map((field)=>String.fromCharCode(field.toNumber())).join('');
215
242
  const fields = fromArray(foreignFields);
216
- await this.handlerAsMisc().utilityDebugLog(level, message, fields);
243
+ await this.handlerAsMisc().log(level, message, fields);
217
244
  return toForeignCallResult([]);
218
245
  }
219
- async utilityStorageRead(foreignBlockHash, foreignContractAddress, foreignStartStorageSlot, foreignNumberOfElements) {
246
+ // eslint-disable-next-line camelcase
247
+ async aztec_utl_getFromPublicStorage(foreignBlockHash, foreignContractAddress, foreignStartStorageSlot, foreignNumberOfElements) {
220
248
  const blockHash = new BlockHash(fromSingle(foreignBlockHash));
221
249
  const contractAddress = addressFromSingle(foreignContractAddress);
222
250
  const startStorageSlot = fromSingle(foreignStartStorageSlot);
223
251
  const numberOfElements = fromSingle(foreignNumberOfElements).toNumber();
224
- const values = await this.handlerAsUtility().utilityStorageRead(blockHash, contractAddress, startStorageSlot, numberOfElements);
252
+ const values = await this.handlerAsUtility().getFromPublicStorage(blockHash, contractAddress, startStorageSlot, numberOfElements);
225
253
  return toForeignCallResult([
226
254
  toArray(values)
227
255
  ]);
228
256
  }
229
- async utilityGetPublicDataWitness(foreignBlockHash, foreignLeafSlot) {
257
+ // eslint-disable-next-line camelcase
258
+ async aztec_utl_getPublicDataWitness(foreignBlockHash, foreignLeafSlot) {
230
259
  const blockHash = new BlockHash(fromSingle(foreignBlockHash));
231
260
  const leafSlot = fromSingle(foreignLeafSlot);
232
- const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(blockHash, leafSlot);
261
+ const witness = await this.handlerAsUtility().getPublicDataWitness(blockHash, leafSlot);
233
262
  if (!witness) {
234
263
  throw new Error(`Public data witness not found for slot ${leafSlot} at block ${blockHash.toString()}.`);
235
264
  }
236
265
  return toForeignCallResult(witness.toNoirRepresentation());
237
266
  }
238
- async utilityGetNotes(foreignOwnerIsSome, foreignOwnerValue, foreignStorageSlot, foreignNumSelects, foreignSelectByIndexes, foreignSelectByOffsets, foreignSelectByLengths, foreignSelectValues, foreignSelectComparators, foreignSortByIndexes, foreignSortByOffsets, foreignSortByLengths, foreignSortOrder, foreignLimit, foreignOffset, foreignStatus, foreignMaxNotes, foreignPackedHintedNoteLength) {
267
+ // eslint-disable-next-line camelcase
268
+ async aztec_utl_getNotes(foreignOwnerIsSome, foreignOwnerValue, foreignStorageSlot, foreignNumSelects, foreignSelectByIndexes, foreignSelectByOffsets, foreignSelectByLengths, foreignSelectValues, foreignSelectComparators, foreignSortByIndexes, foreignSortByOffsets, foreignSortByLengths, foreignSortOrder, foreignLimit, foreignOffset, foreignStatus, foreignMaxNotes, foreignPackedHintedNoteLength) {
239
269
  // Parse Option<AztecAddress>: ownerIsSome is 0 for None, 1 for Some
240
270
  const owner = fromSingle(foreignOwnerIsSome).toBool() ? AztecAddress.fromField(fromSingle(foreignOwnerValue)) : undefined;
241
271
  const storageSlot = fromSingle(foreignStorageSlot);
@@ -254,7 +284,7 @@ export class RPCTranslator {
254
284
  const status = fromSingle(foreignStatus).toNumber();
255
285
  const maxNotes = fromSingle(foreignMaxNotes).toNumber();
256
286
  const packedHintedNoteLength = fromSingle(foreignPackedHintedNoteLength).toNumber();
257
- const noteDatas = await this.handlerAsUtility().utilityGetNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status);
287
+ const noteDatas = await this.handlerAsUtility().getNotes(owner, storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status);
258
288
  const returnDataAsArrayOfArrays = noteDatas.map((noteData)=>packAsHintedNote({
259
289
  contractAddress: noteData.contractAddress,
260
290
  owner: noteData.owner,
@@ -269,7 +299,8 @@ export class RPCTranslator {
269
299
  // At last we convert the array of arrays to a bounded vec of arrays
270
300
  return toForeignCallResult(arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfForeignCallSingleArrays, maxNotes, packedHintedNoteLength));
271
301
  }
272
- privateNotifyCreatedNote(foreignOwner, foreignStorageSlot, foreignRandomness, foreignNoteTypeId, foreignNote, foreignNoteHash, foreignCounter) {
302
+ // eslint-disable-next-line camelcase
303
+ aztec_prv_notifyCreatedNote(foreignOwner, foreignStorageSlot, foreignRandomness, foreignNoteTypeId, foreignNote, foreignNoteHash, foreignCounter) {
273
304
  const owner = addressFromSingle(foreignOwner);
274
305
  const storageSlot = fromSingle(foreignStorageSlot);
275
306
  const randomness = fromSingle(foreignRandomness);
@@ -277,39 +308,44 @@ export class RPCTranslator {
277
308
  const note = fromArray(foreignNote);
278
309
  const noteHash = fromSingle(foreignNoteHash);
279
310
  const counter = fromSingle(foreignCounter).toNumber();
280
- this.handlerAsPrivate().privateNotifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter);
311
+ this.handlerAsPrivate().notifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter);
281
312
  return toForeignCallResult([]);
282
313
  }
283
- async privateNotifyNullifiedNote(foreignInnerNullifier, foreignNoteHash, foreignCounter) {
314
+ // eslint-disable-next-line camelcase
315
+ async aztec_prv_notifyNullifiedNote(foreignInnerNullifier, foreignNoteHash, foreignCounter) {
284
316
  const innerNullifier = fromSingle(foreignInnerNullifier);
285
317
  const noteHash = fromSingle(foreignNoteHash);
286
318
  const counter = fromSingle(foreignCounter).toNumber();
287
- await this.handlerAsPrivate().privateNotifyNullifiedNote(innerNullifier, noteHash, counter);
319
+ await this.handlerAsPrivate().notifyNullifiedNote(innerNullifier, noteHash, counter);
288
320
  return toForeignCallResult([]);
289
321
  }
290
- async privateNotifyCreatedNullifier(foreignInnerNullifier) {
322
+ // eslint-disable-next-line camelcase
323
+ async aztec_prv_notifyCreatedNullifier(foreignInnerNullifier) {
291
324
  const innerNullifier = fromSingle(foreignInnerNullifier);
292
- await this.handlerAsPrivate().privateNotifyCreatedNullifier(innerNullifier);
325
+ await this.handlerAsPrivate().notifyCreatedNullifier(innerNullifier);
293
326
  return toForeignCallResult([]);
294
327
  }
295
- async privateIsNullifierPending(foreignInnerNullifier, foreignContractAddress) {
328
+ // eslint-disable-next-line camelcase
329
+ async aztec_prv_isNullifierPending(foreignInnerNullifier, foreignContractAddress) {
296
330
  const innerNullifier = fromSingle(foreignInnerNullifier);
297
331
  const contractAddress = addressFromSingle(foreignContractAddress);
298
- const isPending = await this.handlerAsPrivate().privateIsNullifierPending(innerNullifier, contractAddress);
332
+ const isPending = await this.handlerAsPrivate().isNullifierPending(innerNullifier, contractAddress);
299
333
  return toForeignCallResult([
300
334
  toSingle(new Fr(isPending))
301
335
  ]);
302
336
  }
303
- async utilityCheckNullifierExists(foreignInnerNullifier) {
337
+ // eslint-disable-next-line camelcase
338
+ async aztec_utl_doesNullifierExist(foreignInnerNullifier) {
304
339
  const innerNullifier = fromSingle(foreignInnerNullifier);
305
- const exists = await this.handlerAsUtility().utilityCheckNullifierExists(innerNullifier);
340
+ const exists = await this.handlerAsUtility().doesNullifierExist(innerNullifier);
306
341
  return toForeignCallResult([
307
342
  toSingle(new Fr(exists))
308
343
  ]);
309
344
  }
310
- async utilityGetContractInstance(foreignAddress) {
345
+ // eslint-disable-next-line camelcase
346
+ async aztec_utl_getContractInstance(foreignAddress) {
311
347
  const address = addressFromSingle(foreignAddress);
312
- const instance = await this.handlerAsUtility().utilityGetContractInstance(address);
348
+ const instance = await this.handlerAsUtility().getContractInstance(address);
313
349
  return toForeignCallResult([
314
350
  instance.salt,
315
351
  instance.deployer.toField(),
@@ -318,9 +354,10 @@ export class RPCTranslator {
318
354
  ...instance.publicKeys.toFields()
319
355
  ].map(toSingle));
320
356
  }
321
- async utilityTryGetPublicKeysAndPartialAddress(foreignAddress) {
357
+ // eslint-disable-next-line camelcase
358
+ async aztec_utl_getPublicKeysAndPartialAddress(foreignAddress) {
322
359
  const address = addressFromSingle(foreignAddress);
323
- const result = await this.handlerAsUtility().utilityTryGetPublicKeysAndPartialAddress(address);
360
+ const result = await this.handlerAsUtility().getPublicKeysAndPartialAddress(address);
324
361
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
325
362
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
326
363
  if (result === undefined) {
@@ -340,26 +377,30 @@ export class RPCTranslator {
340
377
  ]);
341
378
  }
342
379
  }
343
- async utilityGetKeyValidationRequest(foreignPkMHash) {
380
+ // eslint-disable-next-line camelcase
381
+ async aztec_utl_getKeyValidationRequest(foreignPkMHash) {
344
382
  const pkMHash = fromSingle(foreignPkMHash);
345
- const keyValidationRequest = await this.handlerAsUtility().utilityGetKeyValidationRequest(pkMHash);
383
+ const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(pkMHash);
346
384
  return toForeignCallResult(keyValidationRequest.toFields().map(toSingle));
347
385
  }
348
- privateCallPrivateFunction(_foreignTargetContractAddress, _foreignFunctionSelector, _foreignArgsHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
386
+ // eslint-disable-next-line camelcase
387
+ aztec_prv_callPrivateFunction(_foreignTargetContractAddress, _foreignFunctionSelector, _foreignArgsHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
349
388
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::private_context`, use `private_call` instead');
350
389
  }
351
- async utilityGetNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
390
+ // eslint-disable-next-line camelcase
391
+ async aztec_utl_getNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
352
392
  const blockHash = new BlockHash(fromSingle(foreignBlockHash));
353
393
  const nullifier = fromSingle(foreignNullifier);
354
- const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(blockHash, nullifier);
394
+ const witness = await this.handlerAsUtility().getNullifierMembershipWitness(blockHash, nullifier);
355
395
  if (!witness) {
356
396
  throw new Error(`Nullifier membership witness not found at block ${blockHash}.`);
357
397
  }
358
398
  return toForeignCallResult(witness.toNoirRepresentation());
359
399
  }
360
- async utilityGetAuthWitness(foreignMessageHash) {
400
+ // eslint-disable-next-line camelcase
401
+ async aztec_utl_getAuthWitness(foreignMessageHash) {
361
402
  const messageHash = fromSingle(foreignMessageHash);
362
- const authWitness = await this.handlerAsUtility().utilityGetAuthWitness(messageHash);
403
+ const authWitness = await this.handlerAsUtility().getAuthWitness(messageHash);
363
404
  if (!authWitness) {
364
405
  throw new Error(`Auth witness not found for message hash ${messageHash}.`);
365
406
  }
@@ -367,92 +408,118 @@ export class RPCTranslator {
367
408
  toArray(authWitness)
368
409
  ]);
369
410
  }
370
- privateNotifyEnqueuedPublicFunctionCall(_foreignTargetContractAddress, _foreignCalldataHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
371
- throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
372
- }
373
- privateNotifySetPublicTeardownFunctionCall(_foreignTargetContractAddress, _foreignCalldataHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
411
+ // eslint-disable-next-line camelcase
412
+ aztec_prv_assertValidPublicCalldata(_foreignCalldataHash) {
374
413
  throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
375
414
  }
376
- privateNotifySetMinRevertibleSideEffectCounter(_foreignMinRevertibleSideEffectCounter) {
415
+ // eslint-disable-next-line camelcase
416
+ aztec_prv_notifyRevertiblePhaseStart(_foreignMinRevertibleSideEffectCounter) {
377
417
  throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
378
418
  }
379
- async privateIsSideEffectCounterRevertible(foreignSideEffectCounter) {
419
+ // eslint-disable-next-line camelcase
420
+ async aztec_prv_isExecutionInRevertiblePhase(foreignSideEffectCounter) {
380
421
  const sideEffectCounter = fromSingle(foreignSideEffectCounter).toNumber();
381
- const isRevertible = await this.handlerAsPrivate().privateIsSideEffectCounterRevertible(sideEffectCounter);
422
+ const isRevertible = await this.handlerAsPrivate().isExecutionInRevertiblePhase(sideEffectCounter);
382
423
  return toForeignCallResult([
383
424
  toSingle(new Fr(isRevertible))
384
425
  ]);
385
426
  }
386
- utilityGetUtilityContext() {
387
- const context = this.handlerAsUtility().utilityGetUtilityContext();
427
+ // eslint-disable-next-line camelcase
428
+ aztec_utl_getUtilityContext() {
429
+ const context = this.handlerAsUtility().getUtilityContext();
388
430
  return toForeignCallResult(context.toNoirRepresentation());
389
431
  }
390
- async utilityGetBlockHeader(foreignBlockNumber) {
432
+ // eslint-disable-next-line camelcase
433
+ async aztec_utl_getBlockHeader(foreignBlockNumber) {
391
434
  const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
392
- const header = await this.handlerAsUtility().utilityGetBlockHeader(blockNumber);
435
+ const header = await this.handlerAsUtility().getBlockHeader(blockNumber);
393
436
  if (!header) {
394
437
  throw new Error(`Block header not found for block ${blockNumber}.`);
395
438
  }
396
439
  return toForeignCallResult(header.toFields().map(toSingle));
397
440
  }
398
- async utilityGetNoteHashMembershipWitness(foreignAnchorBlockHash, foreignNoteHash) {
441
+ // eslint-disable-next-line camelcase
442
+ async aztec_utl_getNoteHashMembershipWitness(foreignAnchorBlockHash, foreignNoteHash) {
399
443
  const blockHash = new BlockHash(fromSingle(foreignAnchorBlockHash));
400
444
  const noteHash = fromSingle(foreignNoteHash);
401
- const witness = await this.handlerAsUtility().utilityGetNoteHashMembershipWitness(blockHash, noteHash);
445
+ const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(blockHash, noteHash);
402
446
  if (!witness) {
403
447
  throw new Error(`Note hash ${noteHash} not found in the note hash tree at block ${blockHash.toString()}.`);
404
448
  }
405
449
  return toForeignCallResult(witness.toNoirRepresentation());
406
450
  }
407
- async utilityGetBlockHashMembershipWitness(foreignAnchorBlockHash, foreignBlockHash) {
451
+ // eslint-disable-next-line camelcase
452
+ async aztec_utl_getBlockHashMembershipWitness(foreignAnchorBlockHash, foreignBlockHash) {
408
453
  const anchorBlockHash = new BlockHash(fromSingle(foreignAnchorBlockHash));
409
454
  const blockHash = new BlockHash(fromSingle(foreignBlockHash));
410
- const witness = await this.handlerAsUtility().utilityGetBlockHashMembershipWitness(anchorBlockHash, blockHash);
455
+ const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(anchorBlockHash, blockHash);
411
456
  if (!witness) {
412
457
  throw new Error(`Block hash ${blockHash.toString()} not found in the archive tree at anchor block ${anchorBlockHash.toString()}.`);
413
458
  }
414
459
  return toForeignCallResult(witness.toNoirRepresentation());
415
460
  }
416
- async utilityGetLowNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
461
+ // eslint-disable-next-line camelcase
462
+ async aztec_utl_getLowNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
417
463
  const blockHash = new BlockHash(fromSingle(foreignBlockHash));
418
464
  const nullifier = fromSingle(foreignNullifier);
419
- const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(blockHash, nullifier);
465
+ const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(blockHash, nullifier);
420
466
  if (!witness) {
421
467
  throw new Error(`Low nullifier witness not found for nullifier ${nullifier} at block ${blockHash}.`);
422
468
  }
423
469
  return toForeignCallResult(witness.toNoirRepresentation());
424
470
  }
425
- async utilityFetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot) {
471
+ // eslint-disable-next-line camelcase
472
+ async aztec_utl_getPendingTaggedLogs(foreignPendingTaggedLogArrayBaseSlot, foreignScope) {
426
473
  const pendingTaggedLogArrayBaseSlot = fromSingle(foreignPendingTaggedLogArrayBaseSlot);
427
- await this.handlerAsUtility().utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot);
474
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
475
+ await this.handlerAsUtility().getPendingTaggedLogs(pendingTaggedLogArrayBaseSlot, scope);
428
476
  return toForeignCallResult([]);
429
477
  }
430
- async utilityValidateAndStoreEnqueuedNotesAndEvents(foreignContractAddress, foreignNoteValidationRequestsArrayBaseSlot, foreignEventValidationRequestsArrayBaseSlot) {
478
+ // eslint-disable-next-line camelcase
479
+ async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(foreignContractAddress, foreignNoteValidationRequestsArrayBaseSlot, foreignEventValidationRequestsArrayBaseSlot, foreignMaxNotePackedLen, foreignMaxEventSerializedLen, foreignScope) {
431
480
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
432
481
  const noteValidationRequestsArrayBaseSlot = fromSingle(foreignNoteValidationRequestsArrayBaseSlot);
433
482
  const eventValidationRequestsArrayBaseSlot = fromSingle(foreignEventValidationRequestsArrayBaseSlot);
434
- await this.handlerAsUtility().utilityValidateAndStoreEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot);
483
+ const maxNotePackedLen = fromSingle(foreignMaxNotePackedLen).toNumber();
484
+ const maxEventSerializedLen = fromSingle(foreignMaxEventSerializedLen).toNumber();
485
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
486
+ await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot, maxNotePackedLen, maxEventSerializedLen, scope);
435
487
  return toForeignCallResult([]);
436
488
  }
437
- async utilityBulkRetrieveLogs(foreignContractAddress, foreignLogRetrievalRequestsArrayBaseSlot, foreignLogRetrievalResponsesArrayBaseSlot) {
489
+ // eslint-disable-next-line camelcase
490
+ async aztec_utl_getLogsByTag(foreignContractAddress, foreignLogRetrievalRequestsArrayBaseSlot, foreignLogRetrievalResponsesArrayBaseSlot, foreignScope) {
438
491
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
439
492
  const logRetrievalRequestsArrayBaseSlot = fromSingle(foreignLogRetrievalRequestsArrayBaseSlot);
440
493
  const logRetrievalResponsesArrayBaseSlot = fromSingle(foreignLogRetrievalResponsesArrayBaseSlot);
441
- await this.handlerAsUtility().utilityBulkRetrieveLogs(contractAddress, logRetrievalRequestsArrayBaseSlot, logRetrievalResponsesArrayBaseSlot);
494
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
495
+ await this.handlerAsUtility().getLogsByTag(contractAddress, logRetrievalRequestsArrayBaseSlot, logRetrievalResponsesArrayBaseSlot, scope);
442
496
  return toForeignCallResult([]);
443
497
  }
444
- async utilityStoreCapsule(foreignContractAddress, foreignSlot, foreignCapsule) {
498
+ // eslint-disable-next-line camelcase
499
+ async aztec_utl_getMessageContextsByTxHash(foreignContractAddress, foreignMessageContextRequestsArrayBaseSlot, foreignMessageContextResponsesArrayBaseSlot, foreignScope) {
500
+ const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
501
+ const messageContextRequestsArrayBaseSlot = fromSingle(foreignMessageContextRequestsArrayBaseSlot);
502
+ const messageContextResponsesArrayBaseSlot = fromSingle(foreignMessageContextResponsesArrayBaseSlot);
503
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
504
+ await this.handlerAsUtility().getMessageContextsByTxHash(contractAddress, messageContextRequestsArrayBaseSlot, messageContextResponsesArrayBaseSlot, scope);
505
+ return toForeignCallResult([]);
506
+ }
507
+ // eslint-disable-next-line camelcase
508
+ aztec_utl_setCapsule(foreignContractAddress, foreignSlot, foreignCapsule, foreignScope) {
445
509
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
446
510
  const slot = fromSingle(foreignSlot);
447
511
  const capsule = fromArray(foreignCapsule);
448
- await this.handlerAsUtility().utilityStoreCapsule(contractAddress, slot, capsule);
512
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
513
+ this.handlerAsUtility().setCapsule(contractAddress, slot, capsule, scope);
449
514
  return toForeignCallResult([]);
450
515
  }
451
- async utilityLoadCapsule(foreignContractAddress, foreignSlot, foreignTSize) {
516
+ // eslint-disable-next-line camelcase
517
+ async aztec_utl_getCapsule(foreignContractAddress, foreignSlot, foreignTSize, foreignScope) {
452
518
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
453
519
  const slot = fromSingle(foreignSlot);
454
520
  const tSize = fromSingle(foreignTSize).toNumber();
455
- const values = await this.handlerAsUtility().utilityLoadCapsule(contractAddress, slot);
521
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
522
+ const values = await this.handlerAsUtility().getCapsule(contractAddress, slot, scope);
456
523
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
457
524
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
458
525
  if (values === null) {
@@ -469,197 +536,261 @@ export class RPCTranslator {
469
536
  ]);
470
537
  }
471
538
  }
472
- async utilityDeleteCapsule(foreignContractAddress, foreignSlot) {
539
+ // eslint-disable-next-line camelcase
540
+ aztec_utl_deleteCapsule(foreignContractAddress, foreignSlot, foreignScope) {
473
541
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
474
542
  const slot = fromSingle(foreignSlot);
475
- await this.handlerAsUtility().utilityDeleteCapsule(contractAddress, slot);
543
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
544
+ this.handlerAsUtility().deleteCapsule(contractAddress, slot, scope);
476
545
  return toForeignCallResult([]);
477
546
  }
478
- async utilityCopyCapsule(foreignContractAddress, foreignSrcSlot, foreignDstSlot, foreignNumEntries) {
547
+ // eslint-disable-next-line camelcase
548
+ async aztec_utl_copyCapsule(foreignContractAddress, foreignSrcSlot, foreignDstSlot, foreignNumEntries, foreignScope) {
479
549
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
480
550
  const srcSlot = fromSingle(foreignSrcSlot);
481
551
  const dstSlot = fromSingle(foreignDstSlot);
482
552
  const numEntries = fromSingle(foreignNumEntries).toNumber();
483
- await this.handlerAsUtility().utilityCopyCapsule(contractAddress, srcSlot, dstSlot, numEntries);
553
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
554
+ await this.handlerAsUtility().copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, scope);
484
555
  return toForeignCallResult([]);
485
556
  }
486
557
  // TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
487
558
  // The compiler didn't throw an error, so it took me a while to learn of the existence of this file, and that I need
488
559
  // to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
489
560
  // existence of a txe_oracle method?
490
- async utilityAes128Decrypt(foreignCiphertextBVecStorage, foreignCiphertextLength, foreignIv, foreignSymKey) {
561
+ // eslint-disable-next-line camelcase
562
+ async aztec_utl_decryptAes128(foreignCiphertextBVecStorage, foreignCiphertextLength, foreignIv, foreignSymKey) {
491
563
  const ciphertext = fromUintBoundedVec(foreignCiphertextBVecStorage, foreignCiphertextLength, 8);
492
564
  const iv = fromUintArray(foreignIv, 8);
493
565
  const symKey = fromUintArray(foreignSymKey, 8);
494
- const plaintextBuffer = await this.handlerAsUtility().utilityAes128Decrypt(ciphertext, iv, symKey);
495
- return toForeignCallResult(arrayToBoundedVec(bufferToU8Array(plaintextBuffer), foreignCiphertextBVecStorage.length));
566
+ // Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
567
+ try {
568
+ const plaintextBuffer = await this.handlerAsUtility().decryptAes128(ciphertext, iv, symKey);
569
+ const [storage, length] = arrayToBoundedVec(bufferToU8Array(plaintextBuffer), foreignCiphertextBVecStorage.length);
570
+ return toForeignCallResult([
571
+ toSingle(new Fr(1)),
572
+ storage,
573
+ length
574
+ ]);
575
+ } catch {
576
+ const zeroStorage = toArray(Array(foreignCiphertextBVecStorage.length).fill(new Fr(0)));
577
+ return toForeignCallResult([
578
+ toSingle(new Fr(0)),
579
+ zeroStorage,
580
+ toSingle(new Fr(0))
581
+ ]);
582
+ }
496
583
  }
497
- async utilityGetSharedSecret(foreignAddress, foreignEphPKField0, foreignEphPKField1, foreignEphPKField2) {
584
+ // eslint-disable-next-line camelcase
585
+ async aztec_utl_getSharedSecret(foreignAddress, foreignEphPKField0, foreignEphPKField1, foreignEphPKField2, foreignContractAddress) {
498
586
  const address = AztecAddress.fromField(fromSingle(foreignAddress));
499
587
  const ephPK = Point.fromFields([
500
588
  fromSingle(foreignEphPKField0),
501
589
  fromSingle(foreignEphPKField1),
502
590
  fromSingle(foreignEphPKField2)
503
591
  ]);
504
- const secret = await this.handlerAsUtility().utilityGetSharedSecret(address, ephPK);
505
- return toForeignCallResult(secret.toFields().map(toSingle));
592
+ const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
593
+ const secret = await this.handlerAsUtility().getSharedSecret(address, ephPK, contractAddress);
594
+ return toForeignCallResult([
595
+ toSingle(secret)
596
+ ]);
597
+ }
598
+ // eslint-disable-next-line camelcase
599
+ aztec_utl_setContractSyncCacheInvalid(foreignContractAddress, foreignScopes, foreignScopeCount) {
600
+ const contractAddress = addressFromSingle(foreignContractAddress);
601
+ const count = fromSingle(foreignScopeCount).toNumber();
602
+ const scopes = fromArray(foreignScopes).slice(0, count).map((f)=>new AztecAddress(f));
603
+ this.handlerAsUtility().setContractSyncCacheInvalid(contractAddress, scopes);
604
+ return Promise.resolve(toForeignCallResult([]));
506
605
  }
507
- emitOffchainEffect(_foreignData) {
606
+ // eslint-disable-next-line camelcase
607
+ aztec_utl_emitOffchainEffect(_foreignData) {
508
608
  throw new Error('Offchain effects are not yet supported in the TestEnvironment');
509
609
  }
510
610
  // AVM opcodes
511
- avmOpcodeEmitUnencryptedLog(_foreignMessage) {
611
+ // eslint-disable-next-line camelcase
612
+ aztec_avm_emitPublicLog(_foreignMessage) {
512
613
  // TODO(#8811): Implement
513
614
  return toForeignCallResult([]);
514
615
  }
515
- async avmOpcodeStorageRead(foreignSlot, foreignContractAddress) {
616
+ // eslint-disable-next-line camelcase
617
+ async aztec_avm_storageRead(foreignSlot, foreignContractAddress) {
516
618
  const slot = fromSingle(foreignSlot);
517
619
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
518
- const value = (await this.handlerAsAvm().avmOpcodeStorageRead(slot, contractAddress)).value;
620
+ const value = (await this.handlerAsAvm().storageRead(slot, contractAddress)).value;
519
621
  return toForeignCallResult([
520
622
  toSingle(new Fr(value))
521
623
  ]);
522
624
  }
523
- async avmOpcodeStorageWrite(foreignSlot, foreignValue) {
625
+ // eslint-disable-next-line camelcase
626
+ async aztec_avm_storageWrite(foreignSlot, foreignValue) {
524
627
  const slot = fromSingle(foreignSlot);
525
628
  const value = fromSingle(foreignValue);
526
- await this.handlerAsAvm().avmOpcodeStorageWrite(slot, value);
629
+ await this.handlerAsAvm().storageWrite(slot, value);
527
630
  return toForeignCallResult([]);
528
631
  }
529
- async avmOpcodeGetContractInstanceDeployer(foreignAddress) {
632
+ // eslint-disable-next-line camelcase
633
+ async aztec_avm_getContractInstanceDeployer(foreignAddress) {
530
634
  const address = addressFromSingle(foreignAddress);
531
- const instance = await this.handlerAsUtility().utilityGetContractInstance(address);
635
+ const instance = await this.handlerAsUtility().getContractInstance(address);
532
636
  return toForeignCallResult([
533
637
  toSingle(instance.deployer),
534
638
  // AVM requires an extra boolean indicating the instance was found
535
639
  toSingle(new Fr(1))
536
640
  ]);
537
641
  }
538
- async avmOpcodeGetContractInstanceClassId(foreignAddress) {
642
+ // eslint-disable-next-line camelcase
643
+ async aztec_avm_getContractInstanceClassId(foreignAddress) {
539
644
  const address = addressFromSingle(foreignAddress);
540
- const instance = await this.handlerAsUtility().utilityGetContractInstance(address);
645
+ const instance = await this.handlerAsUtility().getContractInstance(address);
541
646
  return toForeignCallResult([
542
647
  toSingle(instance.currentContractClassId),
543
648
  // AVM requires an extra boolean indicating the instance was found
544
649
  toSingle(new Fr(1))
545
650
  ]);
546
651
  }
547
- async avmOpcodeGetContractInstanceInitializationHash(foreignAddress) {
652
+ // eslint-disable-next-line camelcase
653
+ async aztec_avm_getContractInstanceInitializationHash(foreignAddress) {
548
654
  const address = addressFromSingle(foreignAddress);
549
- const instance = await this.handlerAsUtility().utilityGetContractInstance(address);
655
+ const instance = await this.handlerAsUtility().getContractInstance(address);
550
656
  return toForeignCallResult([
551
657
  toSingle(instance.initializationHash),
552
658
  // AVM requires an extra boolean indicating the instance was found
553
659
  toSingle(new Fr(1))
554
660
  ]);
555
661
  }
556
- async avmOpcodeSender() {
557
- const sender = await this.handlerAsAvm().avmOpcodeSender();
662
+ // eslint-disable-next-line camelcase
663
+ async aztec_avm_sender() {
664
+ const sender = await this.handlerAsAvm().sender();
558
665
  return toForeignCallResult([
559
666
  toSingle(sender)
560
667
  ]);
561
668
  }
562
- async avmOpcodeEmitNullifier(foreignNullifier) {
669
+ // eslint-disable-next-line camelcase
670
+ async aztec_avm_emitNullifier(foreignNullifier) {
563
671
  const nullifier = fromSingle(foreignNullifier);
564
- await this.handlerAsAvm().avmOpcodeEmitNullifier(nullifier);
672
+ await this.handlerAsAvm().emitNullifier(nullifier);
565
673
  return toForeignCallResult([]);
566
674
  }
567
- async avmOpcodeEmitNoteHash(foreignNoteHash) {
675
+ // eslint-disable-next-line camelcase
676
+ async aztec_avm_emitNoteHash(foreignNoteHash) {
568
677
  const noteHash = fromSingle(foreignNoteHash);
569
- await this.handlerAsAvm().avmOpcodeEmitNoteHash(noteHash);
678
+ await this.handlerAsAvm().emitNoteHash(noteHash);
570
679
  return toForeignCallResult([]);
571
680
  }
572
- async avmOpcodeNullifierExists(foreignSiloedNullifier) {
681
+ // eslint-disable-next-line camelcase
682
+ async aztec_avm_nullifierExists(foreignSiloedNullifier) {
573
683
  const siloedNullifier = fromSingle(foreignSiloedNullifier);
574
- const exists = await this.handlerAsAvm().avmOpcodeNullifierExists(siloedNullifier);
684
+ const exists = await this.handlerAsAvm().nullifierExists(siloedNullifier);
575
685
  return toForeignCallResult([
576
686
  toSingle(new Fr(exists))
577
687
  ]);
578
688
  }
579
- async avmOpcodeAddress() {
580
- const contractAddress = await this.handlerAsAvm().avmOpcodeAddress();
689
+ // eslint-disable-next-line camelcase
690
+ async aztec_avm_address() {
691
+ const contractAddress = await this.handlerAsAvm().address();
581
692
  return toForeignCallResult([
582
693
  toSingle(contractAddress.toField())
583
694
  ]);
584
695
  }
585
- async avmOpcodeBlockNumber() {
586
- const blockNumber = await this.handlerAsAvm().avmOpcodeBlockNumber();
696
+ // eslint-disable-next-line camelcase
697
+ async aztec_avm_blockNumber() {
698
+ const blockNumber = await this.handlerAsAvm().blockNumber();
587
699
  return toForeignCallResult([
588
700
  toSingle(new Fr(blockNumber))
589
701
  ]);
590
702
  }
591
- async avmOpcodeTimestamp() {
592
- const timestamp = await this.handlerAsAvm().avmOpcodeTimestamp();
703
+ // eslint-disable-next-line camelcase
704
+ async aztec_avm_timestamp() {
705
+ const timestamp = await this.handlerAsAvm().timestamp();
593
706
  return toForeignCallResult([
594
707
  toSingle(new Fr(timestamp))
595
708
  ]);
596
709
  }
597
- async avmOpcodeIsStaticCall() {
598
- const isStaticCall = await this.handlerAsAvm().avmOpcodeIsStaticCall();
710
+ // eslint-disable-next-line camelcase
711
+ async aztec_avm_isStaticCall() {
712
+ const isStaticCall = await this.handlerAsAvm().isStaticCall();
599
713
  return toForeignCallResult([
600
714
  toSingle(new Fr(isStaticCall ? 1 : 0))
601
715
  ]);
602
716
  }
603
- async avmOpcodeChainId() {
604
- const chainId = await this.handlerAsAvm().avmOpcodeChainId();
717
+ // eslint-disable-next-line camelcase
718
+ async aztec_avm_chainId() {
719
+ const chainId = await this.handlerAsAvm().chainId();
605
720
  return toForeignCallResult([
606
721
  toSingle(chainId)
607
722
  ]);
608
723
  }
609
- async avmOpcodeVersion() {
610
- const version = await this.handlerAsAvm().avmOpcodeVersion();
724
+ // eslint-disable-next-line camelcase
725
+ async aztec_avm_version() {
726
+ const version = await this.handlerAsAvm().version();
611
727
  return toForeignCallResult([
612
728
  toSingle(version)
613
729
  ]);
614
730
  }
615
- avmOpcodeReturndataSize() {
731
+ // eslint-disable-next-line camelcase
732
+ aztec_avm_returndataSize() {
616
733
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
617
734
  }
618
- avmOpcodeReturndataCopy(_foreignRdOffset, _foreignCopySize) {
735
+ // eslint-disable-next-line camelcase
736
+ aztec_avm_returndataCopy(_foreignRdOffset, _foreignCopySize) {
619
737
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
620
738
  }
621
- avmOpcodeCall(_foreignL2Gas, _foreignDaGas, _foreignAddress, _foreignLength, _foreignArgs) {
739
+ // eslint-disable-next-line camelcase
740
+ aztec_avm_call(_foreignL2Gas, _foreignDaGas, _foreignAddress, _foreignLength, _foreignArgs) {
622
741
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
623
742
  }
624
- avmOpcodeStaticCall(_foreignL2Gas, _foreignDaGas, _foreignAddress, _foreignLength, _foreignArgs) {
743
+ // eslint-disable-next-line camelcase
744
+ aztec_avm_staticCall(_foreignL2Gas, _foreignDaGas, _foreignAddress, _foreignLength, _foreignArgs) {
625
745
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
626
746
  }
627
- avmOpcodeSuccessCopy() {
747
+ // eslint-disable-next-line camelcase
748
+ aztec_avm_successCopy() {
628
749
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
629
750
  }
630
- async txePrivateCallNewFlow(foreignFrom, foreignTargetContractAddress, foreignFunctionSelector, foreignArgs, foreignArgsHash, foreignIsStaticCall) {
751
+ // eslint-disable-next-line camelcase
752
+ async aztec_txe_privateCallNewFlow(foreignFrom, foreignTargetContractAddress, foreignFunctionSelector, foreignArgs, foreignArgsHash, foreignIsStaticCall) {
631
753
  const from = addressFromSingle(foreignFrom);
632
754
  const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
633
755
  const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
634
756
  const args = fromArray(foreignArgs);
635
757
  const argsHash = fromSingle(foreignArgsHash);
636
758
  const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
637
- const returnValues = await this.handlerAsTxe().txePrivateCallNewFlow(from, targetContractAddress, functionSelector, args, argsHash, isStaticCall);
759
+ const returnValues = await this.handlerAsTxe().privateCallNewFlow(from, targetContractAddress, functionSelector, args, argsHash, isStaticCall, this.stateHandler.getCurrentJob());
760
+ // TODO(F-335): Avoid doing the following call here.
761
+ await this.stateHandler.cycleJob();
638
762
  return toForeignCallResult([
639
763
  toArray(returnValues)
640
764
  ]);
641
765
  }
642
- async txeSimulateUtilityFunction(foreignTargetContractAddress, foreignFunctionSelector, foreignArgs) {
766
+ // eslint-disable-next-line camelcase
767
+ async aztec_txe_executeUtilityFunction(foreignTargetContractAddress, foreignFunctionSelector, foreignArgs) {
643
768
  const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
644
769
  const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
645
770
  const args = fromArray(foreignArgs);
646
- const returnValues = await this.handlerAsTxe().txeSimulateUtilityFunction(targetContractAddress, functionSelector, args);
771
+ const returnValues = await this.handlerAsTxe().executeUtilityFunction(targetContractAddress, functionSelector, args, this.stateHandler.getCurrentJob());
772
+ // TODO(F-335): Avoid doing the following call here.
773
+ await this.stateHandler.cycleJob();
647
774
  return toForeignCallResult([
648
775
  toArray(returnValues)
649
776
  ]);
650
777
  }
651
- async txePublicCallNewFlow(foreignFrom, foreignAddress, foreignCalldata, foreignIsStaticCall) {
778
+ // eslint-disable-next-line camelcase
779
+ async aztec_txe_publicCallNewFlow(foreignFrom, foreignAddress, foreignCalldata, foreignIsStaticCall) {
652
780
  const from = addressFromSingle(foreignFrom);
653
781
  const address = addressFromSingle(foreignAddress);
654
782
  const calldata = fromArray(foreignCalldata);
655
783
  const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
656
- const returnValues = await this.handlerAsTxe().txePublicCallNewFlow(from, address, calldata, isStaticCall);
784
+ const returnValues = await this.handlerAsTxe().publicCallNewFlow(from, address, calldata, isStaticCall);
785
+ // TODO(F-335): Avoid doing the following call here.
786
+ await this.stateHandler.cycleJob();
657
787
  return toForeignCallResult([
658
788
  toArray(returnValues)
659
789
  ]);
660
790
  }
661
- async privateGetSenderForTags() {
662
- const sender = await this.handlerAsPrivate().privateGetSenderForTags();
791
+ // eslint-disable-next-line camelcase
792
+ async aztec_prv_getSenderForTags() {
793
+ const sender = await this.handlerAsPrivate().getSenderForTags();
663
794
  // Return a Noir Option struct with `some` and `value` fields
664
795
  if (sender === undefined) {
665
796
  // No sender found, return Option with some=0 and value=0
@@ -675,15 +806,17 @@ export class RPCTranslator {
675
806
  ]);
676
807
  }
677
808
  }
678
- async privateSetSenderForTags(foreignSenderForTags) {
809
+ // eslint-disable-next-line camelcase
810
+ async aztec_prv_setSenderForTags(foreignSenderForTags) {
679
811
  const senderForTags = AztecAddress.fromField(fromSingle(foreignSenderForTags));
680
- await this.handlerAsPrivate().privateSetSenderForTags(senderForTags);
812
+ await this.handlerAsPrivate().setSenderForTags(senderForTags);
681
813
  return toForeignCallResult([]);
682
814
  }
683
- async privateGetNextAppTagAsSender(foreignSender, foreignRecipient) {
815
+ // eslint-disable-next-line camelcase
816
+ async aztec_prv_getNextAppTagAsSender(foreignSender, foreignRecipient) {
684
817
  const sender = AztecAddress.fromField(fromSingle(foreignSender));
685
818
  const recipient = AztecAddress.fromField(fromSingle(foreignRecipient));
686
- const nextAppTag = await this.handlerAsPrivate().privateGetNextAppTagAsSender(sender, recipient);
819
+ const nextAppTag = await this.handlerAsPrivate().getNextAppTagAsSender(sender, recipient);
687
820
  return toForeignCallResult([
688
821
  toSingle(nextAppTag.value)
689
822
  ]);