@aztec/txe 0.0.1-commit.ee80a48 → 0.0.1-commit.ef17749e1

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 (52) 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 +22 -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 +118 -50
  12. package/dest/rpc_translator.d.ts +83 -83
  13. package/dest/rpc_translator.d.ts.map +1 -1
  14. package/dest/rpc_translator.js +259 -154
  15. package/dest/state_machine/archiver.d.ts +1 -1
  16. package/dest/state_machine/archiver.d.ts.map +1 -1
  17. package/dest/state_machine/archiver.js +2 -0
  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/index.d.ts +5 -5
  22. package/dest/state_machine/index.d.ts.map +1 -1
  23. package/dest/state_machine/index.js +15 -10
  24. package/dest/state_machine/mock_epoch_cache.d.ts +3 -1
  25. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
  26. package/dest/state_machine/mock_epoch_cache.js +4 -0
  27. package/dest/txe_session.d.ts +9 -6
  28. package/dest/txe_session.d.ts.map +1 -1
  29. package/dest/txe_session.js +82 -23
  30. package/dest/util/txe_public_contract_data_source.d.ts +2 -3
  31. package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
  32. package/dest/util/txe_public_contract_data_source.js +5 -22
  33. package/dest/utils/block_creation.d.ts +1 -1
  34. package/dest/utils/block_creation.d.ts.map +1 -1
  35. package/dest/utils/block_creation.js +3 -1
  36. package/package.json +15 -15
  37. package/src/index.ts +89 -52
  38. package/src/oracle/interfaces.ts +32 -31
  39. package/src/oracle/txe_oracle_public_context.ts +12 -12
  40. package/src/oracle/txe_oracle_top_level_context.ts +121 -103
  41. package/src/rpc_translator.ts +266 -157
  42. package/src/state_machine/archiver.ts +2 -0
  43. package/src/state_machine/dummy_p2p_client.ts +40 -22
  44. package/src/state_machine/index.ts +25 -9
  45. package/src/state_machine/mock_epoch_cache.ts +5 -0
  46. package/src/txe_session.ts +85 -71
  47. package/src/util/txe_public_contract_data_source.ts +10 -36
  48. package/src/utils/block_creation.ts +3 -1
  49. package/dest/util/txe_contract_store.d.ts +0 -12
  50. package/dest/util/txe_contract_store.d.ts.map +0 -1
  51. package/dest/util/txe_contract_store.js +0 -22
  52. 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_storeInExecutionCache(foreignValues, foreignHash) {
198
223
  const values = fromArray(foreignValues);
199
224
  const hash = fromSingle(foreignHash);
200
- this.handlerAsPrivate().privateStoreInExecutionCache(values, hash);
225
+ this.handlerAsPrivate().storeInExecutionCache(values, hash);
201
226
  return toForeignCallResult([]);
202
227
  }
203
- async privateLoadFromExecutionCache(foreignHash) {
228
+ // eslint-disable-next-line camelcase
229
+ async aztec_prv_loadFromExecutionCache(foreignHash) {
204
230
  const hash = fromSingle(foreignHash);
205
- const returns = await this.handlerAsPrivate().privateLoadFromExecutionCache(hash);
231
+ const returns = await this.handlerAsPrivate().loadFromExecutionCache(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
- 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
- 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_storageRead(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().storageRead(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_checkNullifierExists(foreignInnerNullifier) {
304
339
  const innerNullifier = fromSingle(foreignInnerNullifier);
305
- const exists = await this.handlerAsUtility().utilityCheckNullifierExists(innerNullifier);
340
+ const exists = await this.handlerAsUtility().checkNullifierExists(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,36 +354,53 @@ export class RPCTranslator {
318
354
  ...instance.publicKeys.toFields()
319
355
  ].map(toSingle));
320
356
  }
321
- async utilityGetPublicKeysAndPartialAddress(foreignAddress) {
357
+ // eslint-disable-next-line camelcase
358
+ async aztec_utl_tryGetPublicKeysAndPartialAddress(foreignAddress) {
322
359
  const address = addressFromSingle(foreignAddress);
323
- const { publicKeys, partialAddress } = await this.handlerAsUtility().utilityGetPublicKeysAndPartialAddress(address);
324
- return toForeignCallResult([
325
- toArray([
326
- ...publicKeys.toFields(),
327
- partialAddress
328
- ])
329
- ]);
360
+ const result = await this.handlerAsUtility().tryGetPublicKeysAndPartialAddress(address);
361
+ // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
362
+ // with two fields: `some` (a boolean) and `value` (a field array in this case).
363
+ if (result === undefined) {
364
+ // No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
365
+ return toForeignCallResult([
366
+ toSingle(new Fr(0)),
367
+ toArray(Array(13).fill(new Fr(0)))
368
+ ]);
369
+ } else {
370
+ // Data was found so we set `some` to 1 and return it along with `value`.
371
+ return toForeignCallResult([
372
+ toSingle(new Fr(1)),
373
+ toArray([
374
+ ...result.publicKeys.toFields(),
375
+ result.partialAddress
376
+ ])
377
+ ]);
378
+ }
330
379
  }
331
- async utilityGetKeyValidationRequest(foreignPkMHash) {
380
+ // eslint-disable-next-line camelcase
381
+ async aztec_utl_getKeyValidationRequest(foreignPkMHash) {
332
382
  const pkMHash = fromSingle(foreignPkMHash);
333
- const keyValidationRequest = await this.handlerAsUtility().utilityGetKeyValidationRequest(pkMHash);
383
+ const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(pkMHash);
334
384
  return toForeignCallResult(keyValidationRequest.toFields().map(toSingle));
335
385
  }
336
- privateCallPrivateFunction(_foreignTargetContractAddress, _foreignFunctionSelector, _foreignArgsHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
386
+ // eslint-disable-next-line camelcase
387
+ aztec_prv_callPrivateFunction(_foreignTargetContractAddress, _foreignFunctionSelector, _foreignArgsHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
337
388
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::private_context`, use `private_call` instead');
338
389
  }
339
- async utilityGetNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
390
+ // eslint-disable-next-line camelcase
391
+ async aztec_utl_getNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
340
392
  const blockHash = new BlockHash(fromSingle(foreignBlockHash));
341
393
  const nullifier = fromSingle(foreignNullifier);
342
- const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(blockHash, nullifier);
394
+ const witness = await this.handlerAsUtility().getNullifierMembershipWitness(blockHash, nullifier);
343
395
  if (!witness) {
344
396
  throw new Error(`Nullifier membership witness not found at block ${blockHash}.`);
345
397
  }
346
398
  return toForeignCallResult(witness.toNoirRepresentation());
347
399
  }
348
- async utilityGetAuthWitness(foreignMessageHash) {
400
+ // eslint-disable-next-line camelcase
401
+ async aztec_utl_getAuthWitness(foreignMessageHash) {
349
402
  const messageHash = fromSingle(foreignMessageHash);
350
- const authWitness = await this.handlerAsUtility().utilityGetAuthWitness(messageHash);
403
+ const authWitness = await this.handlerAsUtility().getAuthWitness(messageHash);
351
404
  if (!authWitness) {
352
405
  throw new Error(`Auth witness not found for message hash ${messageHash}.`);
353
406
  }
@@ -355,92 +408,106 @@ export class RPCTranslator {
355
408
  toArray(authWitness)
356
409
  ]);
357
410
  }
358
- privateNotifyEnqueuedPublicFunctionCall(_foreignTargetContractAddress, _foreignCalldataHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
411
+ // eslint-disable-next-line camelcase
412
+ aztec_prv_notifyEnqueuedPublicFunctionCall(_foreignTargetContractAddress, _foreignCalldataHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
359
413
  throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
360
414
  }
361
- privateNotifySetPublicTeardownFunctionCall(_foreignTargetContractAddress, _foreignCalldataHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
415
+ // eslint-disable-next-line camelcase
416
+ aztec_prv_notifySetPublicTeardownFunctionCall(_foreignTargetContractAddress, _foreignCalldataHash, _foreignSideEffectCounter, _foreignIsStaticCall) {
362
417
  throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
363
418
  }
364
- privateNotifySetMinRevertibleSideEffectCounter(_foreignMinRevertibleSideEffectCounter) {
419
+ // eslint-disable-next-line camelcase
420
+ aztec_prv_notifySetMinRevertibleSideEffectCounter(_foreignMinRevertibleSideEffectCounter) {
365
421
  throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
366
422
  }
367
- async privateIsSideEffectCounterRevertible(foreignSideEffectCounter) {
423
+ // eslint-disable-next-line camelcase
424
+ async aztec_prv_isSideEffectCounterRevertible(foreignSideEffectCounter) {
368
425
  const sideEffectCounter = fromSingle(foreignSideEffectCounter).toNumber();
369
- const isRevertible = await this.handlerAsPrivate().privateIsSideEffectCounterRevertible(sideEffectCounter);
426
+ const isRevertible = await this.handlerAsPrivate().isSideEffectCounterRevertible(sideEffectCounter);
370
427
  return toForeignCallResult([
371
428
  toSingle(new Fr(isRevertible))
372
429
  ]);
373
430
  }
374
- utilityGetUtilityContext() {
375
- const context = this.handlerAsUtility().utilityGetUtilityContext();
431
+ // eslint-disable-next-line camelcase
432
+ aztec_utl_getUtilityContext() {
433
+ const context = this.handlerAsUtility().getUtilityContext();
376
434
  return toForeignCallResult(context.toNoirRepresentation());
377
435
  }
378
- async utilityGetBlockHeader(foreignBlockNumber) {
436
+ // eslint-disable-next-line camelcase
437
+ async aztec_utl_getBlockHeader(foreignBlockNumber) {
379
438
  const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
380
- const header = await this.handlerAsUtility().utilityGetBlockHeader(blockNumber);
439
+ const header = await this.handlerAsUtility().getBlockHeader(blockNumber);
381
440
  if (!header) {
382
441
  throw new Error(`Block header not found for block ${blockNumber}.`);
383
442
  }
384
443
  return toForeignCallResult(header.toFields().map(toSingle));
385
444
  }
386
- async utilityGetNoteHashMembershipWitness(foreignAnchorBlockHash, foreignNoteHash) {
445
+ // eslint-disable-next-line camelcase
446
+ async aztec_utl_getNoteHashMembershipWitness(foreignAnchorBlockHash, foreignNoteHash) {
387
447
  const blockHash = new BlockHash(fromSingle(foreignAnchorBlockHash));
388
448
  const noteHash = fromSingle(foreignNoteHash);
389
- const witness = await this.handlerAsUtility().utilityGetNoteHashMembershipWitness(blockHash, noteHash);
449
+ const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(blockHash, noteHash);
390
450
  if (!witness) {
391
451
  throw new Error(`Note hash ${noteHash} not found in the note hash tree at block ${blockHash.toString()}.`);
392
452
  }
393
453
  return toForeignCallResult(witness.toNoirRepresentation());
394
454
  }
395
- async utilityGetBlockHashMembershipWitness(foreignAnchorBlockHash, foreignBlockHash) {
455
+ // eslint-disable-next-line camelcase
456
+ async aztec_utl_getBlockHashMembershipWitness(foreignAnchorBlockHash, foreignBlockHash) {
396
457
  const anchorBlockHash = new BlockHash(fromSingle(foreignAnchorBlockHash));
397
458
  const blockHash = new BlockHash(fromSingle(foreignBlockHash));
398
- const witness = await this.handlerAsUtility().utilityGetBlockHashMembershipWitness(anchorBlockHash, blockHash);
459
+ const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(anchorBlockHash, blockHash);
399
460
  if (!witness) {
400
461
  throw new Error(`Block hash ${blockHash.toString()} not found in the archive tree at anchor block ${anchorBlockHash.toString()}.`);
401
462
  }
402
463
  return toForeignCallResult(witness.toNoirRepresentation());
403
464
  }
404
- async utilityGetLowNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
465
+ // eslint-disable-next-line camelcase
466
+ async aztec_utl_getLowNullifierMembershipWitness(foreignBlockHash, foreignNullifier) {
405
467
  const blockHash = new BlockHash(fromSingle(foreignBlockHash));
406
468
  const nullifier = fromSingle(foreignNullifier);
407
- const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(blockHash, nullifier);
469
+ const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(blockHash, nullifier);
408
470
  if (!witness) {
409
471
  throw new Error(`Low nullifier witness not found for nullifier ${nullifier} at block ${blockHash}.`);
410
472
  }
411
473
  return toForeignCallResult(witness.toNoirRepresentation());
412
474
  }
413
- async utilityFetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot) {
475
+ // eslint-disable-next-line camelcase
476
+ async aztec_utl_fetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot) {
414
477
  const pendingTaggedLogArrayBaseSlot = fromSingle(foreignPendingTaggedLogArrayBaseSlot);
415
- await this.handlerAsUtility().utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot);
478
+ await this.handlerAsUtility().fetchTaggedLogs(pendingTaggedLogArrayBaseSlot);
416
479
  return toForeignCallResult([]);
417
480
  }
418
- async utilityValidateAndStoreEnqueuedNotesAndEvents(foreignContractAddress, foreignNoteValidationRequestsArrayBaseSlot, foreignEventValidationRequestsArrayBaseSlot) {
481
+ // eslint-disable-next-line camelcase
482
+ async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(foreignContractAddress, foreignNoteValidationRequestsArrayBaseSlot, foreignEventValidationRequestsArrayBaseSlot) {
419
483
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
420
484
  const noteValidationRequestsArrayBaseSlot = fromSingle(foreignNoteValidationRequestsArrayBaseSlot);
421
485
  const eventValidationRequestsArrayBaseSlot = fromSingle(foreignEventValidationRequestsArrayBaseSlot);
422
- await this.handlerAsUtility().utilityValidateAndStoreEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot);
486
+ await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot);
423
487
  return toForeignCallResult([]);
424
488
  }
425
- async utilityBulkRetrieveLogs(foreignContractAddress, foreignLogRetrievalRequestsArrayBaseSlot, foreignLogRetrievalResponsesArrayBaseSlot) {
489
+ // eslint-disable-next-line camelcase
490
+ async aztec_utl_bulkRetrieveLogs(foreignContractAddress, foreignLogRetrievalRequestsArrayBaseSlot, foreignLogRetrievalResponsesArrayBaseSlot) {
426
491
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
427
492
  const logRetrievalRequestsArrayBaseSlot = fromSingle(foreignLogRetrievalRequestsArrayBaseSlot);
428
493
  const logRetrievalResponsesArrayBaseSlot = fromSingle(foreignLogRetrievalResponsesArrayBaseSlot);
429
- await this.handlerAsUtility().utilityBulkRetrieveLogs(contractAddress, logRetrievalRequestsArrayBaseSlot, logRetrievalResponsesArrayBaseSlot);
494
+ await this.handlerAsUtility().bulkRetrieveLogs(contractAddress, logRetrievalRequestsArrayBaseSlot, logRetrievalResponsesArrayBaseSlot);
430
495
  return toForeignCallResult([]);
431
496
  }
432
- async utilityStoreCapsule(foreignContractAddress, foreignSlot, foreignCapsule) {
497
+ // eslint-disable-next-line camelcase
498
+ async aztec_utl_storeCapsule(foreignContractAddress, foreignSlot, foreignCapsule) {
433
499
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
434
500
  const slot = fromSingle(foreignSlot);
435
501
  const capsule = fromArray(foreignCapsule);
436
- await this.handlerAsUtility().utilityStoreCapsule(contractAddress, slot, capsule);
502
+ await this.handlerAsUtility().storeCapsule(contractAddress, slot, capsule);
437
503
  return toForeignCallResult([]);
438
504
  }
439
- async utilityLoadCapsule(foreignContractAddress, foreignSlot, foreignTSize) {
505
+ // eslint-disable-next-line camelcase
506
+ async aztec_utl_loadCapsule(foreignContractAddress, foreignSlot, foreignTSize) {
440
507
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
441
508
  const slot = fromSingle(foreignSlot);
442
509
  const tSize = fromSingle(foreignTSize).toNumber();
443
- const values = await this.handlerAsUtility().utilityLoadCapsule(contractAddress, slot);
510
+ const values = await this.handlerAsUtility().loadCapsule(contractAddress, slot);
444
511
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
445
512
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
446
513
  if (values === null) {
@@ -457,197 +524,233 @@ export class RPCTranslator {
457
524
  ]);
458
525
  }
459
526
  }
460
- async utilityDeleteCapsule(foreignContractAddress, foreignSlot) {
527
+ // eslint-disable-next-line camelcase
528
+ async aztec_utl_deleteCapsule(foreignContractAddress, foreignSlot) {
461
529
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
462
530
  const slot = fromSingle(foreignSlot);
463
- await this.handlerAsUtility().utilityDeleteCapsule(contractAddress, slot);
531
+ await this.handlerAsUtility().deleteCapsule(contractAddress, slot);
464
532
  return toForeignCallResult([]);
465
533
  }
466
- async utilityCopyCapsule(foreignContractAddress, foreignSrcSlot, foreignDstSlot, foreignNumEntries) {
534
+ // eslint-disable-next-line camelcase
535
+ async aztec_utl_copyCapsule(foreignContractAddress, foreignSrcSlot, foreignDstSlot, foreignNumEntries) {
467
536
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
468
537
  const srcSlot = fromSingle(foreignSrcSlot);
469
538
  const dstSlot = fromSingle(foreignDstSlot);
470
539
  const numEntries = fromSingle(foreignNumEntries).toNumber();
471
- await this.handlerAsUtility().utilityCopyCapsule(contractAddress, srcSlot, dstSlot, numEntries);
540
+ await this.handlerAsUtility().copyCapsule(contractAddress, srcSlot, dstSlot, numEntries);
472
541
  return toForeignCallResult([]);
473
542
  }
474
543
  // TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
475
544
  // 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
476
545
  // to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
477
546
  // existence of a txe_oracle method?
478
- async utilityAes128Decrypt(foreignCiphertextBVecStorage, foreignCiphertextLength, foreignIv, foreignSymKey) {
547
+ // eslint-disable-next-line camelcase
548
+ async aztec_utl_aes128Decrypt(foreignCiphertextBVecStorage, foreignCiphertextLength, foreignIv, foreignSymKey) {
479
549
  const ciphertext = fromUintBoundedVec(foreignCiphertextBVecStorage, foreignCiphertextLength, 8);
480
550
  const iv = fromUintArray(foreignIv, 8);
481
551
  const symKey = fromUintArray(foreignSymKey, 8);
482
- const plaintextBuffer = await this.handlerAsUtility().utilityAes128Decrypt(ciphertext, iv, symKey);
552
+ const plaintextBuffer = await this.handlerAsUtility().aes128Decrypt(ciphertext, iv, symKey);
483
553
  return toForeignCallResult(arrayToBoundedVec(bufferToU8Array(plaintextBuffer), foreignCiphertextBVecStorage.length));
484
554
  }
485
- async utilityGetSharedSecret(foreignAddress, foreignEphPKField0, foreignEphPKField1, foreignEphPKField2) {
555
+ // eslint-disable-next-line camelcase
556
+ async aztec_utl_getSharedSecret(foreignAddress, foreignEphPKField0, foreignEphPKField1, foreignEphPKField2) {
486
557
  const address = AztecAddress.fromField(fromSingle(foreignAddress));
487
558
  const ephPK = Point.fromFields([
488
559
  fromSingle(foreignEphPKField0),
489
560
  fromSingle(foreignEphPKField1),
490
561
  fromSingle(foreignEphPKField2)
491
562
  ]);
492
- const secret = await this.handlerAsUtility().utilityGetSharedSecret(address, ephPK);
563
+ const secret = await this.handlerAsUtility().getSharedSecret(address, ephPK);
493
564
  return toForeignCallResult(secret.toFields().map(toSingle));
494
565
  }
495
- emitOffchainEffect(_foreignData) {
566
+ // eslint-disable-next-line camelcase
567
+ aztec_utl_emitOffchainEffect(_foreignData) {
496
568
  throw new Error('Offchain effects are not yet supported in the TestEnvironment');
497
569
  }
498
570
  // AVM opcodes
499
- avmOpcodeEmitUnencryptedLog(_foreignMessage) {
571
+ // eslint-disable-next-line camelcase
572
+ aztec_avm_emitPublicLog(_foreignMessage) {
500
573
  // TODO(#8811): Implement
501
574
  return toForeignCallResult([]);
502
575
  }
503
- async avmOpcodeStorageRead(foreignSlot, foreignContractAddress) {
576
+ // eslint-disable-next-line camelcase
577
+ async aztec_avm_storageRead(foreignSlot, foreignContractAddress) {
504
578
  const slot = fromSingle(foreignSlot);
505
579
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
506
- const value = (await this.handlerAsAvm().avmOpcodeStorageRead(slot, contractAddress)).value;
580
+ const value = (await this.handlerAsAvm().storageRead(slot, contractAddress)).value;
507
581
  return toForeignCallResult([
508
582
  toSingle(new Fr(value))
509
583
  ]);
510
584
  }
511
- async avmOpcodeStorageWrite(foreignSlot, foreignValue) {
585
+ // eslint-disable-next-line camelcase
586
+ async aztec_avm_storageWrite(foreignSlot, foreignValue) {
512
587
  const slot = fromSingle(foreignSlot);
513
588
  const value = fromSingle(foreignValue);
514
- await this.handlerAsAvm().avmOpcodeStorageWrite(slot, value);
589
+ await this.handlerAsAvm().storageWrite(slot, value);
515
590
  return toForeignCallResult([]);
516
591
  }
517
- async avmOpcodeGetContractInstanceDeployer(foreignAddress) {
592
+ // eslint-disable-next-line camelcase
593
+ async aztec_avm_getContractInstanceDeployer(foreignAddress) {
518
594
  const address = addressFromSingle(foreignAddress);
519
- const instance = await this.handlerAsUtility().utilityGetContractInstance(address);
595
+ const instance = await this.handlerAsUtility().getContractInstance(address);
520
596
  return toForeignCallResult([
521
597
  toSingle(instance.deployer),
522
598
  // AVM requires an extra boolean indicating the instance was found
523
599
  toSingle(new Fr(1))
524
600
  ]);
525
601
  }
526
- async avmOpcodeGetContractInstanceClassId(foreignAddress) {
602
+ // eslint-disable-next-line camelcase
603
+ async aztec_avm_getContractInstanceClassId(foreignAddress) {
527
604
  const address = addressFromSingle(foreignAddress);
528
- const instance = await this.handlerAsUtility().utilityGetContractInstance(address);
605
+ const instance = await this.handlerAsUtility().getContractInstance(address);
529
606
  return toForeignCallResult([
530
607
  toSingle(instance.currentContractClassId),
531
608
  // AVM requires an extra boolean indicating the instance was found
532
609
  toSingle(new Fr(1))
533
610
  ]);
534
611
  }
535
- async avmOpcodeGetContractInstanceInitializationHash(foreignAddress) {
612
+ // eslint-disable-next-line camelcase
613
+ async aztec_avm_getContractInstanceInitializationHash(foreignAddress) {
536
614
  const address = addressFromSingle(foreignAddress);
537
- const instance = await this.handlerAsUtility().utilityGetContractInstance(address);
615
+ const instance = await this.handlerAsUtility().getContractInstance(address);
538
616
  return toForeignCallResult([
539
617
  toSingle(instance.initializationHash),
540
618
  // AVM requires an extra boolean indicating the instance was found
541
619
  toSingle(new Fr(1))
542
620
  ]);
543
621
  }
544
- async avmOpcodeSender() {
545
- const sender = await this.handlerAsAvm().avmOpcodeSender();
622
+ // eslint-disable-next-line camelcase
623
+ async aztec_avm_sender() {
624
+ const sender = await this.handlerAsAvm().sender();
546
625
  return toForeignCallResult([
547
626
  toSingle(sender)
548
627
  ]);
549
628
  }
550
- async avmOpcodeEmitNullifier(foreignNullifier) {
629
+ // eslint-disable-next-line camelcase
630
+ async aztec_avm_emitNullifier(foreignNullifier) {
551
631
  const nullifier = fromSingle(foreignNullifier);
552
- await this.handlerAsAvm().avmOpcodeEmitNullifier(nullifier);
632
+ await this.handlerAsAvm().emitNullifier(nullifier);
553
633
  return toForeignCallResult([]);
554
634
  }
555
- async avmOpcodeEmitNoteHash(foreignNoteHash) {
635
+ // eslint-disable-next-line camelcase
636
+ async aztec_avm_emitNoteHash(foreignNoteHash) {
556
637
  const noteHash = fromSingle(foreignNoteHash);
557
- await this.handlerAsAvm().avmOpcodeEmitNoteHash(noteHash);
638
+ await this.handlerAsAvm().emitNoteHash(noteHash);
558
639
  return toForeignCallResult([]);
559
640
  }
560
- async avmOpcodeNullifierExists(foreignSiloedNullifier) {
641
+ // eslint-disable-next-line camelcase
642
+ async aztec_avm_nullifierExists(foreignSiloedNullifier) {
561
643
  const siloedNullifier = fromSingle(foreignSiloedNullifier);
562
- const exists = await this.handlerAsAvm().avmOpcodeNullifierExists(siloedNullifier);
644
+ const exists = await this.handlerAsAvm().nullifierExists(siloedNullifier);
563
645
  return toForeignCallResult([
564
646
  toSingle(new Fr(exists))
565
647
  ]);
566
648
  }
567
- async avmOpcodeAddress() {
568
- const contractAddress = await this.handlerAsAvm().avmOpcodeAddress();
649
+ // eslint-disable-next-line camelcase
650
+ async aztec_avm_address() {
651
+ const contractAddress = await this.handlerAsAvm().address();
569
652
  return toForeignCallResult([
570
653
  toSingle(contractAddress.toField())
571
654
  ]);
572
655
  }
573
- async avmOpcodeBlockNumber() {
574
- const blockNumber = await this.handlerAsAvm().avmOpcodeBlockNumber();
656
+ // eslint-disable-next-line camelcase
657
+ async aztec_avm_blockNumber() {
658
+ const blockNumber = await this.handlerAsAvm().blockNumber();
575
659
  return toForeignCallResult([
576
660
  toSingle(new Fr(blockNumber))
577
661
  ]);
578
662
  }
579
- async avmOpcodeTimestamp() {
580
- const timestamp = await this.handlerAsAvm().avmOpcodeTimestamp();
663
+ // eslint-disable-next-line camelcase
664
+ async aztec_avm_timestamp() {
665
+ const timestamp = await this.handlerAsAvm().timestamp();
581
666
  return toForeignCallResult([
582
667
  toSingle(new Fr(timestamp))
583
668
  ]);
584
669
  }
585
- async avmOpcodeIsStaticCall() {
586
- const isStaticCall = await this.handlerAsAvm().avmOpcodeIsStaticCall();
670
+ // eslint-disable-next-line camelcase
671
+ async aztec_avm_isStaticCall() {
672
+ const isStaticCall = await this.handlerAsAvm().isStaticCall();
587
673
  return toForeignCallResult([
588
674
  toSingle(new Fr(isStaticCall ? 1 : 0))
589
675
  ]);
590
676
  }
591
- async avmOpcodeChainId() {
592
- const chainId = await this.handlerAsAvm().avmOpcodeChainId();
677
+ // eslint-disable-next-line camelcase
678
+ async aztec_avm_chainId() {
679
+ const chainId = await this.handlerAsAvm().chainId();
593
680
  return toForeignCallResult([
594
681
  toSingle(chainId)
595
682
  ]);
596
683
  }
597
- async avmOpcodeVersion() {
598
- const version = await this.handlerAsAvm().avmOpcodeVersion();
684
+ // eslint-disable-next-line camelcase
685
+ async aztec_avm_version() {
686
+ const version = await this.handlerAsAvm().version();
599
687
  return toForeignCallResult([
600
688
  toSingle(version)
601
689
  ]);
602
690
  }
603
- avmOpcodeReturndataSize() {
691
+ // eslint-disable-next-line camelcase
692
+ aztec_avm_returndataSize() {
604
693
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
605
694
  }
606
- avmOpcodeReturndataCopy(_foreignRdOffset, _foreignCopySize) {
695
+ // eslint-disable-next-line camelcase
696
+ aztec_avm_returndataCopy(_foreignRdOffset, _foreignCopySize) {
607
697
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
608
698
  }
609
- avmOpcodeCall(_foreignL2Gas, _foreignDaGas, _foreignAddress, _foreignLength, _foreignArgs) {
699
+ // eslint-disable-next-line camelcase
700
+ aztec_avm_call(_foreignL2Gas, _foreignDaGas, _foreignAddress, _foreignLength, _foreignArgs) {
610
701
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
611
702
  }
612
- avmOpcodeStaticCall(_foreignL2Gas, _foreignDaGas, _foreignAddress, _foreignLength, _foreignArgs) {
703
+ // eslint-disable-next-line camelcase
704
+ aztec_avm_staticCall(_foreignL2Gas, _foreignDaGas, _foreignAddress, _foreignLength, _foreignArgs) {
613
705
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
614
706
  }
615
- avmOpcodeSuccessCopy() {
707
+ // eslint-disable-next-line camelcase
708
+ aztec_avm_successCopy() {
616
709
  throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
617
710
  }
618
- async txePrivateCallNewFlow(foreignFrom, foreignTargetContractAddress, foreignFunctionSelector, foreignArgs, foreignArgsHash, foreignIsStaticCall) {
711
+ // eslint-disable-next-line camelcase
712
+ async aztec_txe_privateCallNewFlow(foreignFrom, foreignTargetContractAddress, foreignFunctionSelector, foreignArgs, foreignArgsHash, foreignIsStaticCall) {
619
713
  const from = addressFromSingle(foreignFrom);
620
714
  const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
621
715
  const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
622
716
  const args = fromArray(foreignArgs);
623
717
  const argsHash = fromSingle(foreignArgsHash);
624
718
  const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
625
- const returnValues = await this.handlerAsTxe().txePrivateCallNewFlow(from, targetContractAddress, functionSelector, args, argsHash, isStaticCall);
719
+ const returnValues = await this.handlerAsTxe().privateCallNewFlow(from, targetContractAddress, functionSelector, args, argsHash, isStaticCall, this.stateHandler.getCurrentJob());
720
+ // TODO(F-335): Avoid doing the following call here.
721
+ await this.stateHandler.cycleJob();
626
722
  return toForeignCallResult([
627
723
  toArray(returnValues)
628
724
  ]);
629
725
  }
630
- async txeSimulateUtilityFunction(foreignTargetContractAddress, foreignFunctionSelector, foreignArgs) {
726
+ // eslint-disable-next-line camelcase
727
+ async aztec_txe_executeUtilityFunction(foreignTargetContractAddress, foreignFunctionSelector, foreignArgs) {
631
728
  const targetContractAddress = addressFromSingle(foreignTargetContractAddress);
632
729
  const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
633
730
  const args = fromArray(foreignArgs);
634
- const returnValues = await this.handlerAsTxe().txeSimulateUtilityFunction(targetContractAddress, functionSelector, args);
731
+ const returnValues = await this.handlerAsTxe().executeUtilityFunction(targetContractAddress, functionSelector, args, this.stateHandler.getCurrentJob());
732
+ // TODO(F-335): Avoid doing the following call here.
733
+ await this.stateHandler.cycleJob();
635
734
  return toForeignCallResult([
636
735
  toArray(returnValues)
637
736
  ]);
638
737
  }
639
- async txePublicCallNewFlow(foreignFrom, foreignAddress, foreignCalldata, foreignIsStaticCall) {
738
+ // eslint-disable-next-line camelcase
739
+ async aztec_txe_publicCallNewFlow(foreignFrom, foreignAddress, foreignCalldata, foreignIsStaticCall) {
640
740
  const from = addressFromSingle(foreignFrom);
641
741
  const address = addressFromSingle(foreignAddress);
642
742
  const calldata = fromArray(foreignCalldata);
643
743
  const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
644
- const returnValues = await this.handlerAsTxe().txePublicCallNewFlow(from, address, calldata, isStaticCall);
744
+ const returnValues = await this.handlerAsTxe().publicCallNewFlow(from, address, calldata, isStaticCall);
745
+ // TODO(F-335): Avoid doing the following call here.
746
+ await this.stateHandler.cycleJob();
645
747
  return toForeignCallResult([
646
748
  toArray(returnValues)
647
749
  ]);
648
750
  }
649
- async privateGetSenderForTags() {
650
- const sender = await this.handlerAsPrivate().privateGetSenderForTags();
751
+ // eslint-disable-next-line camelcase
752
+ async aztec_prv_getSenderForTags() {
753
+ const sender = await this.handlerAsPrivate().getSenderForTags();
651
754
  // Return a Noir Option struct with `some` and `value` fields
652
755
  if (sender === undefined) {
653
756
  // No sender found, return Option with some=0 and value=0
@@ -663,15 +766,17 @@ export class RPCTranslator {
663
766
  ]);
664
767
  }
665
768
  }
666
- async privateSetSenderForTags(foreignSenderForTags) {
769
+ // eslint-disable-next-line camelcase
770
+ async aztec_prv_setSenderForTags(foreignSenderForTags) {
667
771
  const senderForTags = AztecAddress.fromField(fromSingle(foreignSenderForTags));
668
- await this.handlerAsPrivate().privateSetSenderForTags(senderForTags);
772
+ await this.handlerAsPrivate().setSenderForTags(senderForTags);
669
773
  return toForeignCallResult([]);
670
774
  }
671
- async privateGetNextAppTagAsSender(foreignSender, foreignRecipient) {
775
+ // eslint-disable-next-line camelcase
776
+ async aztec_prv_getNextAppTagAsSender(foreignSender, foreignRecipient) {
672
777
  const sender = AztecAddress.fromField(fromSingle(foreignSender));
673
778
  const recipient = AztecAddress.fromField(fromSingle(foreignRecipient));
674
- const nextAppTag = await this.handlerAsPrivate().privateGetNextAppTagAsSender(sender, recipient);
779
+ const nextAppTag = await this.handlerAsPrivate().getNextAppTagAsSender(sender, recipient);
675
780
  return toForeignCallResult([
676
781
  toSingle(nextAppTag.value)
677
782
  ]);