@aztec/txe 0.0.1-commit.ff7989d6c → 0.0.1-commit.fff30aa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +8 -6
- package/dest/oracle/interfaces.d.ts +29 -28
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +13 -13
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +12 -12
- package/dest/oracle/txe_oracle_top_level_context.d.ts +28 -22
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +73 -46
- package/dest/rpc_translator.d.ts +120 -82
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +376 -153
- package/dest/state_machine/archiver.d.ts +3 -3
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +5 -7
- package/dest/state_machine/dummy_p2p_client.d.ts +2 -2
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +1 -1
- package/dest/state_machine/index.d.ts +4 -2
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +6 -2
- package/dest/state_machine/synchronizer.d.ts +5 -5
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +3 -3
- package/dest/txe_session.d.ts +9 -3
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +36 -17
- package/dest/util/encoding.d.ts +40 -41
- package/dest/util/encoding.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/index.ts +8 -5
- package/src/oracle/interfaces.ts +32 -31
- package/src/oracle/txe_oracle_public_context.ts +12 -12
- package/src/oracle/txe_oracle_top_level_context.ts +96 -49
- package/src/rpc_translator.ts +438 -175
- package/src/state_machine/archiver.ts +5 -5
- package/src/state_machine/dummy_p2p_client.ts +1 -1
- package/src/state_machine/index.ts +5 -1
- package/src/state_machine/synchronizer.ts +4 -4
- package/src/txe_session.ts +45 -17
package/src/rpc_translator.ts
CHANGED
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
toSingle,
|
|
31
31
|
} from './util/encoding.js';
|
|
32
32
|
|
|
33
|
-
const MAX_EVENT_LEN =
|
|
33
|
+
const MAX_EVENT_LEN = 10; // This is MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_PLAINTEXT_RESERVED_FIELDS_LEN
|
|
34
34
|
const MAX_PRIVATE_EVENTS_PER_TXE_QUERY = 5;
|
|
35
35
|
|
|
36
36
|
export class UnavailableOracleError extends Error {
|
|
@@ -104,13 +104,15 @@ export class RPCTranslator {
|
|
|
104
104
|
|
|
105
105
|
// TXE session state transition functions - these get handled by the state handler
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
// eslint-disable-next-line camelcase
|
|
108
|
+
async aztec_txe_setTopLevelTXEContext() {
|
|
108
109
|
await this.stateHandler.enterTopLevelState();
|
|
109
110
|
|
|
110
111
|
return toForeignCallResult([]);
|
|
111
112
|
}
|
|
112
113
|
|
|
113
|
-
|
|
114
|
+
// eslint-disable-next-line camelcase
|
|
115
|
+
async aztec_txe_setPrivateTXEContext(
|
|
114
116
|
foreignContractAddressIsSome: ForeignCallSingle,
|
|
115
117
|
foreignContractAddressValue: ForeignCallSingle,
|
|
116
118
|
foreignAnchorBlockNumberIsSome: ForeignCallSingle,
|
|
@@ -129,7 +131,8 @@ export class RPCTranslator {
|
|
|
129
131
|
return toForeignCallResult(privateContextInputs.toFields().map(toSingle));
|
|
130
132
|
}
|
|
131
133
|
|
|
132
|
-
|
|
134
|
+
// eslint-disable-next-line camelcase
|
|
135
|
+
async aztec_txe_setPublicTXEContext(
|
|
133
136
|
foreignContractAddressIsSome: ForeignCallSingle,
|
|
134
137
|
foreignContractAddressValue: ForeignCallSingle,
|
|
135
138
|
) {
|
|
@@ -142,7 +145,8 @@ export class RPCTranslator {
|
|
|
142
145
|
return toForeignCallResult([]);
|
|
143
146
|
}
|
|
144
147
|
|
|
145
|
-
|
|
148
|
+
// eslint-disable-next-line camelcase
|
|
149
|
+
async aztec_txe_setUtilityTXEContext(
|
|
146
150
|
foreignContractAddressIsSome: ForeignCallSingle,
|
|
147
151
|
foreignContractAddressValue: ForeignCallSingle,
|
|
148
152
|
) {
|
|
@@ -159,44 +163,54 @@ export class RPCTranslator {
|
|
|
159
163
|
|
|
160
164
|
// TXE-specific oracles
|
|
161
165
|
|
|
162
|
-
|
|
163
|
-
|
|
166
|
+
// eslint-disable-next-line camelcase
|
|
167
|
+
aztec_txe_getDefaultAddress() {
|
|
168
|
+
const defaultAddress = this.handlerAsTxe().getDefaultAddress();
|
|
164
169
|
|
|
165
170
|
return toForeignCallResult([toSingle(defaultAddress)]);
|
|
166
171
|
}
|
|
167
172
|
|
|
168
|
-
|
|
169
|
-
|
|
173
|
+
// eslint-disable-next-line camelcase
|
|
174
|
+
async aztec_txe_getNextBlockNumber() {
|
|
175
|
+
const nextBlockNumber = await this.handlerAsTxe().getNextBlockNumber();
|
|
170
176
|
|
|
171
177
|
return toForeignCallResult([toSingle(nextBlockNumber)]);
|
|
172
178
|
}
|
|
173
179
|
|
|
174
|
-
|
|
175
|
-
|
|
180
|
+
// eslint-disable-next-line camelcase
|
|
181
|
+
async aztec_txe_getNextBlockTimestamp() {
|
|
182
|
+
const nextBlockTimestamp = await this.handlerAsTxe().getNextBlockTimestamp();
|
|
176
183
|
|
|
177
184
|
return toForeignCallResult([toSingle(nextBlockTimestamp)]);
|
|
178
185
|
}
|
|
179
186
|
|
|
180
|
-
|
|
187
|
+
// eslint-disable-next-line camelcase
|
|
188
|
+
async aztec_txe_advanceBlocksBy(foreignBlocks: ForeignCallSingle) {
|
|
181
189
|
const blocks = fromSingle(foreignBlocks).toNumber();
|
|
182
190
|
|
|
183
|
-
await this.handlerAsTxe().
|
|
191
|
+
await this.handlerAsTxe().advanceBlocksBy(blocks);
|
|
184
192
|
|
|
185
193
|
return toForeignCallResult([]);
|
|
186
194
|
}
|
|
187
195
|
|
|
188
|
-
|
|
196
|
+
// eslint-disable-next-line camelcase
|
|
197
|
+
aztec_txe_advanceTimestampBy(foreignDuration: ForeignCallSingle) {
|
|
189
198
|
const duration = fromSingle(foreignDuration).toBigInt();
|
|
190
199
|
|
|
191
|
-
this.handlerAsTxe().
|
|
200
|
+
this.handlerAsTxe().advanceTimestampBy(duration);
|
|
192
201
|
|
|
193
202
|
return toForeignCallResult([]);
|
|
194
203
|
}
|
|
195
204
|
|
|
196
|
-
|
|
205
|
+
// eslint-disable-next-line camelcase
|
|
206
|
+
async aztec_txe_deploy(
|
|
207
|
+
artifact: ContractArtifact,
|
|
208
|
+
instance: ContractInstanceWithAddress,
|
|
209
|
+
foreignSecret: ForeignCallSingle,
|
|
210
|
+
) {
|
|
197
211
|
const secret = fromSingle(foreignSecret);
|
|
198
212
|
|
|
199
|
-
await this.handlerAsTxe().
|
|
213
|
+
await this.handlerAsTxe().deploy(artifact, instance, secret);
|
|
200
214
|
|
|
201
215
|
return toForeignCallResult([
|
|
202
216
|
toArray([
|
|
@@ -209,10 +223,11 @@ export class RPCTranslator {
|
|
|
209
223
|
]);
|
|
210
224
|
}
|
|
211
225
|
|
|
212
|
-
|
|
226
|
+
// eslint-disable-next-line camelcase
|
|
227
|
+
async aztec_txe_createAccount(foreignSecret: ForeignCallSingle) {
|
|
213
228
|
const secret = fromSingle(foreignSecret);
|
|
214
229
|
|
|
215
|
-
const completeAddress = await this.handlerAsTxe().
|
|
230
|
+
const completeAddress = await this.handlerAsTxe().createAccount(secret);
|
|
216
231
|
|
|
217
232
|
return toForeignCallResult([
|
|
218
233
|
toSingle(completeAddress.address),
|
|
@@ -220,14 +235,15 @@ export class RPCTranslator {
|
|
|
220
235
|
]);
|
|
221
236
|
}
|
|
222
237
|
|
|
223
|
-
|
|
238
|
+
// eslint-disable-next-line camelcase
|
|
239
|
+
async aztec_txe_addAccount(
|
|
224
240
|
artifact: ContractArtifact,
|
|
225
241
|
instance: ContractInstanceWithAddress,
|
|
226
242
|
foreignSecret: ForeignCallSingle,
|
|
227
243
|
) {
|
|
228
244
|
const secret = fromSingle(foreignSecret);
|
|
229
245
|
|
|
230
|
-
const completeAddress = await this.handlerAsTxe().
|
|
246
|
+
const completeAddress = await this.handlerAsTxe().addAccount(artifact, instance, secret);
|
|
231
247
|
|
|
232
248
|
return toForeignCallResult([
|
|
233
249
|
toSingle(completeAddress.address),
|
|
@@ -235,39 +251,45 @@ export class RPCTranslator {
|
|
|
235
251
|
]);
|
|
236
252
|
}
|
|
237
253
|
|
|
238
|
-
|
|
254
|
+
// eslint-disable-next-line camelcase
|
|
255
|
+
async aztec_txe_addAuthWitness(foreignAddress: ForeignCallSingle, foreignMessageHash: ForeignCallSingle) {
|
|
239
256
|
const address = addressFromSingle(foreignAddress);
|
|
240
257
|
const messageHash = fromSingle(foreignMessageHash);
|
|
241
258
|
|
|
242
|
-
await this.handlerAsTxe().
|
|
259
|
+
await this.handlerAsTxe().addAuthWitness(address, messageHash);
|
|
243
260
|
|
|
244
261
|
return toForeignCallResult([]);
|
|
245
262
|
}
|
|
246
263
|
|
|
247
264
|
// PXE oracles
|
|
248
265
|
|
|
249
|
-
|
|
250
|
-
|
|
266
|
+
// eslint-disable-next-line camelcase
|
|
267
|
+
aztec_utl_assertCompatibleOracleVersionV2(foreignMajor: ForeignCallSingle, foreignMinor: ForeignCallSingle) {
|
|
268
|
+
const major = fromSingle(foreignMajor).toNumber();
|
|
269
|
+
const minor = fromSingle(foreignMinor).toNumber();
|
|
251
270
|
|
|
252
|
-
this.handlerAsMisc().
|
|
271
|
+
this.handlerAsMisc().assertCompatibleOracleVersion(major, minor);
|
|
253
272
|
|
|
254
273
|
return toForeignCallResult([]);
|
|
255
274
|
}
|
|
256
275
|
|
|
257
|
-
|
|
258
|
-
|
|
276
|
+
// eslint-disable-next-line camelcase
|
|
277
|
+
aztec_utl_getRandomField() {
|
|
278
|
+
const randomField = this.handlerAsMisc().getRandomField();
|
|
259
279
|
|
|
260
280
|
return toForeignCallResult([toSingle(randomField)]);
|
|
261
281
|
}
|
|
262
282
|
|
|
263
|
-
|
|
264
|
-
|
|
283
|
+
// eslint-disable-next-line camelcase
|
|
284
|
+
async aztec_txe_getLastBlockTimestamp() {
|
|
285
|
+
const timestamp = await this.handlerAsTxe().getLastBlockTimestamp();
|
|
265
286
|
|
|
266
287
|
return toForeignCallResult([toSingle(new Fr(timestamp))]);
|
|
267
288
|
}
|
|
268
289
|
|
|
269
|
-
|
|
270
|
-
|
|
290
|
+
// eslint-disable-next-line camelcase
|
|
291
|
+
async aztec_txe_getLastTxEffects() {
|
|
292
|
+
const { txHash, noteHashes, nullifiers } = await this.handlerAsTxe().getLastTxEffects();
|
|
271
293
|
|
|
272
294
|
return toForeignCallResult([
|
|
273
295
|
toSingle(txHash.hash),
|
|
@@ -276,7 +298,8 @@ export class RPCTranslator {
|
|
|
276
298
|
]);
|
|
277
299
|
}
|
|
278
300
|
|
|
279
|
-
|
|
301
|
+
// eslint-disable-next-line camelcase
|
|
302
|
+
async aztec_txe_getPrivateEvents(
|
|
280
303
|
foreignSelector: ForeignCallSingle,
|
|
281
304
|
foreignContractAddress: ForeignCallSingle,
|
|
282
305
|
foreignScope: ForeignCallSingle,
|
|
@@ -285,7 +308,14 @@ export class RPCTranslator {
|
|
|
285
308
|
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
286
309
|
const scope = addressFromSingle(foreignScope);
|
|
287
310
|
|
|
288
|
-
|
|
311
|
+
// TODO(F-335): Avoid doing the following 2 calls here.
|
|
312
|
+
{
|
|
313
|
+
await this.handlerAsTxe().syncContractNonOracleMethod(contractAddress, scope, this.stateHandler.getCurrentJob());
|
|
314
|
+
// We cycle job to commit the stores after the contract sync.
|
|
315
|
+
await this.stateHandler.cycleJob();
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
const events = await this.handlerAsTxe().getPrivateEvents(selector, contractAddress, scope);
|
|
289
319
|
|
|
290
320
|
if (events.length > MAX_PRIVATE_EVENTS_PER_TXE_QUERY) {
|
|
291
321
|
throw new Error(`Array of length ${events.length} larger than maxLen ${MAX_PRIVATE_EVENTS_PER_TXE_QUERY}`);
|
|
@@ -309,26 +339,29 @@ export class RPCTranslator {
|
|
|
309
339
|
return toForeignCallResult([toArray(rawArrayStorage), toArray(eventLengths), toSingle(queryLength)]);
|
|
310
340
|
}
|
|
311
341
|
|
|
312
|
-
|
|
342
|
+
// eslint-disable-next-line camelcase
|
|
343
|
+
aztec_prv_setHashPreimage(foreignValues: ForeignCallArray, foreignHash: ForeignCallSingle) {
|
|
313
344
|
const values = fromArray(foreignValues);
|
|
314
345
|
const hash = fromSingle(foreignHash);
|
|
315
346
|
|
|
316
|
-
this.handlerAsPrivate().
|
|
347
|
+
this.handlerAsPrivate().setHashPreimage(values, hash);
|
|
317
348
|
|
|
318
349
|
return toForeignCallResult([]);
|
|
319
350
|
}
|
|
320
351
|
|
|
321
|
-
|
|
352
|
+
// eslint-disable-next-line camelcase
|
|
353
|
+
async aztec_prv_getHashPreimage(foreignHash: ForeignCallSingle) {
|
|
322
354
|
const hash = fromSingle(foreignHash);
|
|
323
355
|
|
|
324
|
-
const returns = await this.handlerAsPrivate().
|
|
356
|
+
const returns = await this.handlerAsPrivate().getHashPreimage(hash);
|
|
325
357
|
|
|
326
358
|
return toForeignCallResult([toArray(returns)]);
|
|
327
359
|
}
|
|
328
360
|
|
|
329
361
|
// When the argument is a slice, noir automatically adds a length field to oracle call.
|
|
330
362
|
// When the argument is an array, we add the field length manually to the signature.
|
|
331
|
-
|
|
363
|
+
// eslint-disable-next-line camelcase
|
|
364
|
+
async aztec_utl_log(
|
|
332
365
|
foreignLevel: ForeignCallSingle,
|
|
333
366
|
foreignMessage: ForeignCallArray,
|
|
334
367
|
_foreignLength: ForeignCallSingle,
|
|
@@ -340,12 +373,13 @@ export class RPCTranslator {
|
|
|
340
373
|
.join('');
|
|
341
374
|
const fields = fromArray(foreignFields);
|
|
342
375
|
|
|
343
|
-
await this.handlerAsMisc().
|
|
376
|
+
await this.handlerAsMisc().log(level, message, fields);
|
|
344
377
|
|
|
345
378
|
return toForeignCallResult([]);
|
|
346
379
|
}
|
|
347
380
|
|
|
348
|
-
|
|
381
|
+
// eslint-disable-next-line camelcase
|
|
382
|
+
async aztec_utl_getFromPublicStorage(
|
|
349
383
|
foreignBlockHash: ForeignCallSingle,
|
|
350
384
|
foreignContractAddress: ForeignCallSingle,
|
|
351
385
|
foreignStartStorageSlot: ForeignCallSingle,
|
|
@@ -356,7 +390,7 @@ export class RPCTranslator {
|
|
|
356
390
|
const startStorageSlot = fromSingle(foreignStartStorageSlot);
|
|
357
391
|
const numberOfElements = fromSingle(foreignNumberOfElements).toNumber();
|
|
358
392
|
|
|
359
|
-
const values = await this.handlerAsUtility().
|
|
393
|
+
const values = await this.handlerAsUtility().getFromPublicStorage(
|
|
360
394
|
blockHash,
|
|
361
395
|
contractAddress,
|
|
362
396
|
startStorageSlot,
|
|
@@ -366,11 +400,12 @@ export class RPCTranslator {
|
|
|
366
400
|
return toForeignCallResult([toArray(values)]);
|
|
367
401
|
}
|
|
368
402
|
|
|
369
|
-
|
|
403
|
+
// eslint-disable-next-line camelcase
|
|
404
|
+
async aztec_utl_getPublicDataWitness(foreignBlockHash: ForeignCallSingle, foreignLeafSlot: ForeignCallSingle) {
|
|
370
405
|
const blockHash = new BlockHash(fromSingle(foreignBlockHash));
|
|
371
406
|
const leafSlot = fromSingle(foreignLeafSlot);
|
|
372
407
|
|
|
373
|
-
const witness = await this.handlerAsUtility().
|
|
408
|
+
const witness = await this.handlerAsUtility().getPublicDataWitness(blockHash, leafSlot);
|
|
374
409
|
|
|
375
410
|
if (!witness) {
|
|
376
411
|
throw new Error(`Public data witness not found for slot ${leafSlot} at block ${blockHash.toString()}.`);
|
|
@@ -378,7 +413,8 @@ export class RPCTranslator {
|
|
|
378
413
|
return toForeignCallResult(witness.toNoirRepresentation());
|
|
379
414
|
}
|
|
380
415
|
|
|
381
|
-
|
|
416
|
+
// eslint-disable-next-line camelcase
|
|
417
|
+
async aztec_utl_getNotes(
|
|
382
418
|
foreignOwnerIsSome: ForeignCallSingle,
|
|
383
419
|
foreignOwnerValue: ForeignCallSingle,
|
|
384
420
|
foreignStorageSlot: ForeignCallSingle,
|
|
@@ -419,7 +455,7 @@ export class RPCTranslator {
|
|
|
419
455
|
const maxNotes = fromSingle(foreignMaxNotes).toNumber();
|
|
420
456
|
const packedHintedNoteLength = fromSingle(foreignPackedHintedNoteLength).toNumber();
|
|
421
457
|
|
|
422
|
-
const noteDatas = await this.handlerAsUtility().
|
|
458
|
+
const noteDatas = await this.handlerAsUtility().getNotes(
|
|
423
459
|
owner,
|
|
424
460
|
storageSlot,
|
|
425
461
|
numSelects,
|
|
@@ -460,7 +496,8 @@ export class RPCTranslator {
|
|
|
460
496
|
);
|
|
461
497
|
}
|
|
462
498
|
|
|
463
|
-
|
|
499
|
+
// eslint-disable-next-line camelcase
|
|
500
|
+
aztec_prv_notifyCreatedNote(
|
|
464
501
|
foreignOwner: ForeignCallSingle,
|
|
465
502
|
foreignStorageSlot: ForeignCallSingle,
|
|
466
503
|
foreignRandomness: ForeignCallSingle,
|
|
@@ -477,20 +514,13 @@ export class RPCTranslator {
|
|
|
477
514
|
const noteHash = fromSingle(foreignNoteHash);
|
|
478
515
|
const counter = fromSingle(foreignCounter).toNumber();
|
|
479
516
|
|
|
480
|
-
this.handlerAsPrivate().
|
|
481
|
-
owner,
|
|
482
|
-
storageSlot,
|
|
483
|
-
randomness,
|
|
484
|
-
noteTypeId,
|
|
485
|
-
note,
|
|
486
|
-
noteHash,
|
|
487
|
-
counter,
|
|
488
|
-
);
|
|
517
|
+
this.handlerAsPrivate().notifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter);
|
|
489
518
|
|
|
490
519
|
return toForeignCallResult([]);
|
|
491
520
|
}
|
|
492
521
|
|
|
493
|
-
|
|
522
|
+
// eslint-disable-next-line camelcase
|
|
523
|
+
async aztec_prv_notifyNullifiedNote(
|
|
494
524
|
foreignInnerNullifier: ForeignCallSingle,
|
|
495
525
|
foreignNoteHash: ForeignCallSingle,
|
|
496
526
|
foreignCounter: ForeignCallSingle,
|
|
@@ -499,40 +529,47 @@ export class RPCTranslator {
|
|
|
499
529
|
const noteHash = fromSingle(foreignNoteHash);
|
|
500
530
|
const counter = fromSingle(foreignCounter).toNumber();
|
|
501
531
|
|
|
502
|
-
await this.handlerAsPrivate().
|
|
532
|
+
await this.handlerAsPrivate().notifyNullifiedNote(innerNullifier, noteHash, counter);
|
|
503
533
|
|
|
504
534
|
return toForeignCallResult([]);
|
|
505
535
|
}
|
|
506
536
|
|
|
507
|
-
|
|
537
|
+
// eslint-disable-next-line camelcase
|
|
538
|
+
async aztec_prv_notifyCreatedNullifier(foreignInnerNullifier: ForeignCallSingle) {
|
|
508
539
|
const innerNullifier = fromSingle(foreignInnerNullifier);
|
|
509
540
|
|
|
510
|
-
await this.handlerAsPrivate().
|
|
541
|
+
await this.handlerAsPrivate().notifyCreatedNullifier(innerNullifier);
|
|
511
542
|
|
|
512
543
|
return toForeignCallResult([]);
|
|
513
544
|
}
|
|
514
545
|
|
|
515
|
-
|
|
546
|
+
// eslint-disable-next-line camelcase
|
|
547
|
+
async aztec_prv_isNullifierPending(
|
|
548
|
+
foreignInnerNullifier: ForeignCallSingle,
|
|
549
|
+
foreignContractAddress: ForeignCallSingle,
|
|
550
|
+
) {
|
|
516
551
|
const innerNullifier = fromSingle(foreignInnerNullifier);
|
|
517
552
|
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
518
553
|
|
|
519
|
-
const isPending = await this.handlerAsPrivate().
|
|
554
|
+
const isPending = await this.handlerAsPrivate().isNullifierPending(innerNullifier, contractAddress);
|
|
520
555
|
|
|
521
556
|
return toForeignCallResult([toSingle(new Fr(isPending))]);
|
|
522
557
|
}
|
|
523
558
|
|
|
524
|
-
|
|
559
|
+
// eslint-disable-next-line camelcase
|
|
560
|
+
async aztec_utl_doesNullifierExist(foreignInnerNullifier: ForeignCallSingle) {
|
|
525
561
|
const innerNullifier = fromSingle(foreignInnerNullifier);
|
|
526
562
|
|
|
527
|
-
const exists = await this.handlerAsUtility().
|
|
563
|
+
const exists = await this.handlerAsUtility().doesNullifierExist(innerNullifier);
|
|
528
564
|
|
|
529
565
|
return toForeignCallResult([toSingle(new Fr(exists))]);
|
|
530
566
|
}
|
|
531
567
|
|
|
532
|
-
|
|
568
|
+
// eslint-disable-next-line camelcase
|
|
569
|
+
async aztec_utl_getContractInstance(foreignAddress: ForeignCallSingle) {
|
|
533
570
|
const address = addressFromSingle(foreignAddress);
|
|
534
571
|
|
|
535
|
-
const instance = await this.handlerAsUtility().
|
|
572
|
+
const instance = await this.handlerAsUtility().getContractInstance(address);
|
|
536
573
|
|
|
537
574
|
return toForeignCallResult(
|
|
538
575
|
[
|
|
@@ -545,10 +582,11 @@ export class RPCTranslator {
|
|
|
545
582
|
);
|
|
546
583
|
}
|
|
547
584
|
|
|
548
|
-
|
|
585
|
+
// eslint-disable-next-line camelcase
|
|
586
|
+
async aztec_utl_getPublicKeysAndPartialAddress(foreignAddress: ForeignCallSingle) {
|
|
549
587
|
const address = addressFromSingle(foreignAddress);
|
|
550
588
|
|
|
551
|
-
const result = await this.handlerAsUtility().
|
|
589
|
+
const result = await this.handlerAsUtility().getPublicKeysAndPartialAddress(address);
|
|
552
590
|
|
|
553
591
|
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
554
592
|
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
@@ -564,15 +602,17 @@ export class RPCTranslator {
|
|
|
564
602
|
}
|
|
565
603
|
}
|
|
566
604
|
|
|
567
|
-
|
|
605
|
+
// eslint-disable-next-line camelcase
|
|
606
|
+
async aztec_utl_getKeyValidationRequest(foreignPkMHash: ForeignCallSingle) {
|
|
568
607
|
const pkMHash = fromSingle(foreignPkMHash);
|
|
569
608
|
|
|
570
|
-
const keyValidationRequest = await this.handlerAsUtility().
|
|
609
|
+
const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(pkMHash);
|
|
571
610
|
|
|
572
611
|
return toForeignCallResult(keyValidationRequest.toFields().map(toSingle));
|
|
573
612
|
}
|
|
574
613
|
|
|
575
|
-
|
|
614
|
+
// eslint-disable-next-line camelcase
|
|
615
|
+
aztec_prv_callPrivateFunction(
|
|
576
616
|
_foreignTargetContractAddress: ForeignCallSingle,
|
|
577
617
|
_foreignFunctionSelector: ForeignCallSingle,
|
|
578
618
|
_foreignArgsHash: ForeignCallSingle,
|
|
@@ -584,11 +624,15 @@ export class RPCTranslator {
|
|
|
584
624
|
);
|
|
585
625
|
}
|
|
586
626
|
|
|
587
|
-
|
|
627
|
+
// eslint-disable-next-line camelcase
|
|
628
|
+
async aztec_utl_getNullifierMembershipWitness(
|
|
629
|
+
foreignBlockHash: ForeignCallSingle,
|
|
630
|
+
foreignNullifier: ForeignCallSingle,
|
|
631
|
+
) {
|
|
588
632
|
const blockHash = new BlockHash(fromSingle(foreignBlockHash));
|
|
589
633
|
const nullifier = fromSingle(foreignNullifier);
|
|
590
634
|
|
|
591
|
-
const witness = await this.handlerAsUtility().
|
|
635
|
+
const witness = await this.handlerAsUtility().getNullifierMembershipWitness(blockHash, nullifier);
|
|
592
636
|
|
|
593
637
|
if (!witness) {
|
|
594
638
|
throw new Error(`Nullifier membership witness not found at block ${blockHash}.`);
|
|
@@ -596,10 +640,11 @@ export class RPCTranslator {
|
|
|
596
640
|
return toForeignCallResult(witness.toNoirRepresentation());
|
|
597
641
|
}
|
|
598
642
|
|
|
599
|
-
|
|
643
|
+
// eslint-disable-next-line camelcase
|
|
644
|
+
async aztec_utl_getAuthWitness(foreignMessageHash: ForeignCallSingle) {
|
|
600
645
|
const messageHash = fromSingle(foreignMessageHash);
|
|
601
646
|
|
|
602
|
-
const authWitness = await this.handlerAsUtility().
|
|
647
|
+
const authWitness = await this.handlerAsUtility().getAuthWitness(messageHash);
|
|
603
648
|
|
|
604
649
|
if (!authWitness) {
|
|
605
650
|
throw new Error(`Auth witness not found for message hash ${messageHash}.`);
|
|
@@ -607,44 +652,35 @@ export class RPCTranslator {
|
|
|
607
652
|
return toForeignCallResult([toArray(authWitness)]);
|
|
608
653
|
}
|
|
609
654
|
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
_foreignCalldataHash: ForeignCallSingle,
|
|
613
|
-
_foreignSideEffectCounter: ForeignCallSingle,
|
|
614
|
-
_foreignIsStaticCall: ForeignCallSingle,
|
|
615
|
-
) {
|
|
655
|
+
// eslint-disable-next-line camelcase
|
|
656
|
+
public aztec_prv_assertValidPublicCalldata(_foreignCalldataHash: ForeignCallSingle) {
|
|
616
657
|
throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
|
|
617
658
|
}
|
|
618
659
|
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
_foreignCalldataHash: ForeignCallSingle,
|
|
622
|
-
_foreignSideEffectCounter: ForeignCallSingle,
|
|
623
|
-
_foreignIsStaticCall: ForeignCallSingle,
|
|
624
|
-
) {
|
|
625
|
-
throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
public privateNotifySetMinRevertibleSideEffectCounter(_foreignMinRevertibleSideEffectCounter: ForeignCallSingle) {
|
|
660
|
+
// eslint-disable-next-line camelcase
|
|
661
|
+
public aztec_prv_notifyRevertiblePhaseStart(_foreignMinRevertibleSideEffectCounter: ForeignCallSingle) {
|
|
629
662
|
throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
|
|
630
663
|
}
|
|
631
664
|
|
|
632
|
-
|
|
665
|
+
// eslint-disable-next-line camelcase
|
|
666
|
+
public async aztec_prv_isExecutionInRevertiblePhase(foreignSideEffectCounter: ForeignCallSingle) {
|
|
633
667
|
const sideEffectCounter = fromSingle(foreignSideEffectCounter).toNumber();
|
|
634
|
-
const isRevertible = await this.handlerAsPrivate().
|
|
668
|
+
const isRevertible = await this.handlerAsPrivate().isExecutionInRevertiblePhase(sideEffectCounter);
|
|
635
669
|
return toForeignCallResult([toSingle(new Fr(isRevertible))]);
|
|
636
670
|
}
|
|
637
671
|
|
|
638
|
-
|
|
639
|
-
|
|
672
|
+
// eslint-disable-next-line camelcase
|
|
673
|
+
aztec_utl_getUtilityContext() {
|
|
674
|
+
const context = this.handlerAsUtility().getUtilityContext();
|
|
640
675
|
|
|
641
676
|
return toForeignCallResult(context.toNoirRepresentation());
|
|
642
677
|
}
|
|
643
678
|
|
|
644
|
-
|
|
679
|
+
// eslint-disable-next-line camelcase
|
|
680
|
+
async aztec_utl_getBlockHeader(foreignBlockNumber: ForeignCallSingle) {
|
|
645
681
|
const blockNumber = BlockNumber(fromSingle(foreignBlockNumber).toNumber());
|
|
646
682
|
|
|
647
|
-
const header = await this.handlerAsUtility().
|
|
683
|
+
const header = await this.handlerAsUtility().getBlockHeader(blockNumber);
|
|
648
684
|
|
|
649
685
|
if (!header) {
|
|
650
686
|
throw new Error(`Block header not found for block ${blockNumber}.`);
|
|
@@ -652,14 +688,15 @@ export class RPCTranslator {
|
|
|
652
688
|
return toForeignCallResult(header.toFields().map(toSingle));
|
|
653
689
|
}
|
|
654
690
|
|
|
655
|
-
|
|
691
|
+
// eslint-disable-next-line camelcase
|
|
692
|
+
async aztec_utl_getNoteHashMembershipWitness(
|
|
656
693
|
foreignAnchorBlockHash: ForeignCallSingle,
|
|
657
694
|
foreignNoteHash: ForeignCallSingle,
|
|
658
695
|
) {
|
|
659
696
|
const blockHash = new BlockHash(fromSingle(foreignAnchorBlockHash));
|
|
660
697
|
const noteHash = fromSingle(foreignNoteHash);
|
|
661
698
|
|
|
662
|
-
const witness = await this.handlerAsUtility().
|
|
699
|
+
const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(blockHash, noteHash);
|
|
663
700
|
|
|
664
701
|
if (!witness) {
|
|
665
702
|
throw new Error(`Note hash ${noteHash} not found in the note hash tree at block ${blockHash.toString()}.`);
|
|
@@ -667,14 +704,15 @@ export class RPCTranslator {
|
|
|
667
704
|
return toForeignCallResult(witness.toNoirRepresentation());
|
|
668
705
|
}
|
|
669
706
|
|
|
670
|
-
|
|
707
|
+
// eslint-disable-next-line camelcase
|
|
708
|
+
async aztec_utl_getBlockHashMembershipWitness(
|
|
671
709
|
foreignAnchorBlockHash: ForeignCallSingle,
|
|
672
710
|
foreignBlockHash: ForeignCallSingle,
|
|
673
711
|
) {
|
|
674
712
|
const anchorBlockHash = new BlockHash(fromSingle(foreignAnchorBlockHash));
|
|
675
713
|
const blockHash = new BlockHash(fromSingle(foreignBlockHash));
|
|
676
714
|
|
|
677
|
-
const witness = await this.handlerAsUtility().
|
|
715
|
+
const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(anchorBlockHash, blockHash);
|
|
678
716
|
|
|
679
717
|
if (!witness) {
|
|
680
718
|
throw new Error(
|
|
@@ -684,14 +722,15 @@ export class RPCTranslator {
|
|
|
684
722
|
return toForeignCallResult(witness.toNoirRepresentation());
|
|
685
723
|
}
|
|
686
724
|
|
|
687
|
-
|
|
725
|
+
// eslint-disable-next-line camelcase
|
|
726
|
+
async aztec_utl_getLowNullifierMembershipWitness(
|
|
688
727
|
foreignBlockHash: ForeignCallSingle,
|
|
689
728
|
foreignNullifier: ForeignCallSingle,
|
|
690
729
|
) {
|
|
691
730
|
const blockHash = new BlockHash(fromSingle(foreignBlockHash));
|
|
692
731
|
const nullifier = fromSingle(foreignNullifier);
|
|
693
732
|
|
|
694
|
-
const witness = await this.handlerAsUtility().
|
|
733
|
+
const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(blockHash, nullifier);
|
|
695
734
|
|
|
696
735
|
if (!witness) {
|
|
697
736
|
throw new Error(`Low nullifier witness not found for nullifier ${nullifier} at block ${blockHash}.`);
|
|
@@ -699,74 +738,167 @@ export class RPCTranslator {
|
|
|
699
738
|
return toForeignCallResult(witness.toNoirRepresentation());
|
|
700
739
|
}
|
|
701
740
|
|
|
702
|
-
|
|
741
|
+
// eslint-disable-next-line camelcase
|
|
742
|
+
async aztec_utl_getPendingTaggedLogs(
|
|
743
|
+
foreignPendingTaggedLogArrayBaseSlot: ForeignCallSingle,
|
|
744
|
+
foreignScope: ForeignCallSingle,
|
|
745
|
+
) {
|
|
703
746
|
const pendingTaggedLogArrayBaseSlot = fromSingle(foreignPendingTaggedLogArrayBaseSlot);
|
|
747
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
704
748
|
|
|
705
|
-
await this.handlerAsUtility().
|
|
749
|
+
await this.handlerAsUtility().getPendingTaggedLogs(pendingTaggedLogArrayBaseSlot, scope);
|
|
706
750
|
|
|
707
751
|
return toForeignCallResult([]);
|
|
708
752
|
}
|
|
709
753
|
|
|
710
|
-
|
|
754
|
+
// eslint-disable-next-line camelcase
|
|
755
|
+
async aztec_utl_getPendingTaggedLogs_v2(foreignScope: ForeignCallSingle) {
|
|
756
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
757
|
+
const slot = await this.handlerAsUtility().getPendingTaggedLogsV2(scope);
|
|
758
|
+
return toForeignCallResult([toSingle(slot)]);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
// eslint-disable-next-line camelcase
|
|
762
|
+
public async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(
|
|
711
763
|
foreignContractAddress: ForeignCallSingle,
|
|
712
764
|
foreignNoteValidationRequestsArrayBaseSlot: ForeignCallSingle,
|
|
713
765
|
foreignEventValidationRequestsArrayBaseSlot: ForeignCallSingle,
|
|
766
|
+
foreignMaxNotePackedLen: ForeignCallSingle,
|
|
767
|
+
foreignMaxEventSerializedLen: ForeignCallSingle,
|
|
768
|
+
foreignScope: ForeignCallSingle,
|
|
714
769
|
) {
|
|
715
770
|
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
716
771
|
const noteValidationRequestsArrayBaseSlot = fromSingle(foreignNoteValidationRequestsArrayBaseSlot);
|
|
717
772
|
const eventValidationRequestsArrayBaseSlot = fromSingle(foreignEventValidationRequestsArrayBaseSlot);
|
|
773
|
+
const maxNotePackedLen = fromSingle(foreignMaxNotePackedLen).toNumber();
|
|
774
|
+
const maxEventSerializedLen = fromSingle(foreignMaxEventSerializedLen).toNumber();
|
|
775
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
718
776
|
|
|
719
|
-
await this.handlerAsUtility().
|
|
777
|
+
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
|
|
720
778
|
contractAddress,
|
|
721
779
|
noteValidationRequestsArrayBaseSlot,
|
|
722
780
|
eventValidationRequestsArrayBaseSlot,
|
|
781
|
+
maxNotePackedLen,
|
|
782
|
+
maxEventSerializedLen,
|
|
783
|
+
scope,
|
|
723
784
|
);
|
|
724
785
|
|
|
725
786
|
return toForeignCallResult([]);
|
|
726
787
|
}
|
|
727
788
|
|
|
728
|
-
|
|
789
|
+
// eslint-disable-next-line camelcase
|
|
790
|
+
public async aztec_utl_validateAndStoreEnqueuedNotesAndEvents_v2(
|
|
791
|
+
foreignNoteValidationRequestsArrayBaseSlot: ForeignCallSingle,
|
|
792
|
+
foreignEventValidationRequestsArrayBaseSlot: ForeignCallSingle,
|
|
793
|
+
foreignMaxNotePackedLen: ForeignCallSingle,
|
|
794
|
+
foreignMaxEventSerializedLen: ForeignCallSingle,
|
|
795
|
+
foreignScope: ForeignCallSingle,
|
|
796
|
+
) {
|
|
797
|
+
const noteValidationRequestsArrayBaseSlot = fromSingle(foreignNoteValidationRequestsArrayBaseSlot);
|
|
798
|
+
const eventValidationRequestsArrayBaseSlot = fromSingle(foreignEventValidationRequestsArrayBaseSlot);
|
|
799
|
+
const maxNotePackedLen = fromSingle(foreignMaxNotePackedLen).toNumber();
|
|
800
|
+
const maxEventSerializedLen = fromSingle(foreignMaxEventSerializedLen).toNumber();
|
|
801
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
802
|
+
|
|
803
|
+
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEventsV2(
|
|
804
|
+
noteValidationRequestsArrayBaseSlot,
|
|
805
|
+
eventValidationRequestsArrayBaseSlot,
|
|
806
|
+
maxNotePackedLen,
|
|
807
|
+
maxEventSerializedLen,
|
|
808
|
+
scope,
|
|
809
|
+
);
|
|
810
|
+
|
|
811
|
+
return toForeignCallResult([]);
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
// eslint-disable-next-line camelcase
|
|
815
|
+
public async aztec_utl_getLogsByTag(
|
|
729
816
|
foreignContractAddress: ForeignCallSingle,
|
|
730
817
|
foreignLogRetrievalRequestsArrayBaseSlot: ForeignCallSingle,
|
|
731
818
|
foreignLogRetrievalResponsesArrayBaseSlot: ForeignCallSingle,
|
|
819
|
+
foreignScope: ForeignCallSingle,
|
|
732
820
|
) {
|
|
733
821
|
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
734
822
|
const logRetrievalRequestsArrayBaseSlot = fromSingle(foreignLogRetrievalRequestsArrayBaseSlot);
|
|
735
823
|
const logRetrievalResponsesArrayBaseSlot = fromSingle(foreignLogRetrievalResponsesArrayBaseSlot);
|
|
824
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
736
825
|
|
|
737
|
-
await this.handlerAsUtility().
|
|
826
|
+
await this.handlerAsUtility().getLogsByTag(
|
|
738
827
|
contractAddress,
|
|
739
828
|
logRetrievalRequestsArrayBaseSlot,
|
|
740
829
|
logRetrievalResponsesArrayBaseSlot,
|
|
830
|
+
scope,
|
|
831
|
+
);
|
|
832
|
+
|
|
833
|
+
return toForeignCallResult([]);
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
// eslint-disable-next-line camelcase
|
|
837
|
+
public async aztec_utl_getMessageContextsByTxHash(
|
|
838
|
+
foreignContractAddress: ForeignCallSingle,
|
|
839
|
+
foreignMessageContextRequestsArrayBaseSlot: ForeignCallSingle,
|
|
840
|
+
foreignMessageContextResponsesArrayBaseSlot: ForeignCallSingle,
|
|
841
|
+
foreignScope: ForeignCallSingle,
|
|
842
|
+
) {
|
|
843
|
+
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
844
|
+
const messageContextRequestsArrayBaseSlot = fromSingle(foreignMessageContextRequestsArrayBaseSlot);
|
|
845
|
+
const messageContextResponsesArrayBaseSlot = fromSingle(foreignMessageContextResponsesArrayBaseSlot);
|
|
846
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
847
|
+
|
|
848
|
+
await this.handlerAsUtility().getMessageContextsByTxHash(
|
|
849
|
+
contractAddress,
|
|
850
|
+
messageContextRequestsArrayBaseSlot,
|
|
851
|
+
messageContextResponsesArrayBaseSlot,
|
|
852
|
+
scope,
|
|
741
853
|
);
|
|
742
854
|
|
|
743
855
|
return toForeignCallResult([]);
|
|
744
856
|
}
|
|
745
857
|
|
|
746
|
-
|
|
858
|
+
// eslint-disable-next-line camelcase
|
|
859
|
+
async aztec_utl_getLogsByTag_v2(foreignRequestArrayBaseSlot: ForeignCallSingle) {
|
|
860
|
+
const requestArrayBaseSlot = fromSingle(foreignRequestArrayBaseSlot);
|
|
861
|
+
const responseSlot = await this.handlerAsUtility().getLogsByTagV2(requestArrayBaseSlot);
|
|
862
|
+
return toForeignCallResult([toSingle(responseSlot)]);
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
// eslint-disable-next-line camelcase
|
|
866
|
+
async aztec_utl_getMessageContextsByTxHash_v2(foreignRequestArrayBaseSlot: ForeignCallSingle) {
|
|
867
|
+
const requestArrayBaseSlot = fromSingle(foreignRequestArrayBaseSlot);
|
|
868
|
+
const responseSlot = await this.handlerAsUtility().getMessageContextsByTxHashV2(requestArrayBaseSlot);
|
|
869
|
+
return toForeignCallResult([toSingle(responseSlot)]);
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
// eslint-disable-next-line camelcase
|
|
873
|
+
aztec_utl_setCapsule(
|
|
747
874
|
foreignContractAddress: ForeignCallSingle,
|
|
748
875
|
foreignSlot: ForeignCallSingle,
|
|
749
876
|
foreignCapsule: ForeignCallArray,
|
|
877
|
+
foreignScope: ForeignCallSingle,
|
|
750
878
|
) {
|
|
751
879
|
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
752
880
|
const slot = fromSingle(foreignSlot);
|
|
753
881
|
const capsule = fromArray(foreignCapsule);
|
|
882
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
754
883
|
|
|
755
|
-
|
|
884
|
+
this.handlerAsUtility().setCapsule(contractAddress, slot, capsule, scope);
|
|
756
885
|
|
|
757
886
|
return toForeignCallResult([]);
|
|
758
887
|
}
|
|
759
888
|
|
|
760
|
-
|
|
889
|
+
// eslint-disable-next-line camelcase
|
|
890
|
+
async aztec_utl_getCapsule(
|
|
761
891
|
foreignContractAddress: ForeignCallSingle,
|
|
762
892
|
foreignSlot: ForeignCallSingle,
|
|
763
893
|
foreignTSize: ForeignCallSingle,
|
|
894
|
+
foreignScope: ForeignCallSingle,
|
|
764
895
|
) {
|
|
765
896
|
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
766
897
|
const slot = fromSingle(foreignSlot);
|
|
767
898
|
const tSize = fromSingle(foreignTSize).toNumber();
|
|
899
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
768
900
|
|
|
769
|
-
const values = await this.handlerAsUtility().
|
|
901
|
+
const values = await this.handlerAsUtility().getCapsule(contractAddress, slot, scope);
|
|
770
902
|
|
|
771
903
|
// We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
|
|
772
904
|
// with two fields: `some` (a boolean) and `value` (a field array in this case).
|
|
@@ -779,28 +911,95 @@ export class RPCTranslator {
|
|
|
779
911
|
}
|
|
780
912
|
}
|
|
781
913
|
|
|
782
|
-
|
|
914
|
+
// eslint-disable-next-line camelcase
|
|
915
|
+
aztec_utl_deleteCapsule(
|
|
916
|
+
foreignContractAddress: ForeignCallSingle,
|
|
917
|
+
foreignSlot: ForeignCallSingle,
|
|
918
|
+
foreignScope: ForeignCallSingle,
|
|
919
|
+
) {
|
|
783
920
|
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
784
921
|
const slot = fromSingle(foreignSlot);
|
|
922
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
785
923
|
|
|
786
|
-
|
|
924
|
+
this.handlerAsUtility().deleteCapsule(contractAddress, slot, scope);
|
|
787
925
|
|
|
788
926
|
return toForeignCallResult([]);
|
|
789
927
|
}
|
|
790
928
|
|
|
791
|
-
|
|
929
|
+
// eslint-disable-next-line camelcase
|
|
930
|
+
async aztec_utl_copyCapsule(
|
|
792
931
|
foreignContractAddress: ForeignCallSingle,
|
|
793
932
|
foreignSrcSlot: ForeignCallSingle,
|
|
794
933
|
foreignDstSlot: ForeignCallSingle,
|
|
795
934
|
foreignNumEntries: ForeignCallSingle,
|
|
935
|
+
foreignScope: ForeignCallSingle,
|
|
796
936
|
) {
|
|
797
937
|
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
798
938
|
const srcSlot = fromSingle(foreignSrcSlot);
|
|
799
939
|
const dstSlot = fromSingle(foreignDstSlot);
|
|
800
940
|
const numEntries = fromSingle(foreignNumEntries).toNumber();
|
|
941
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
942
|
+
|
|
943
|
+
await this.handlerAsUtility().copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, scope);
|
|
944
|
+
|
|
945
|
+
return toForeignCallResult([]);
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
// eslint-disable-next-line camelcase
|
|
949
|
+
aztec_utl_pushEphemeral(foreignSlot: ForeignCallSingle, foreignElements: ForeignCallArray) {
|
|
950
|
+
const slot = fromSingle(foreignSlot);
|
|
951
|
+
const elements = fromArray(foreignElements);
|
|
952
|
+
const newLen = this.handlerAsUtility().pushEphemeral(slot, elements);
|
|
953
|
+
return toForeignCallResult([toSingle(new Fr(newLen))]);
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
// eslint-disable-next-line camelcase
|
|
957
|
+
aztec_utl_popEphemeral(foreignSlot: ForeignCallSingle) {
|
|
958
|
+
const slot = fromSingle(foreignSlot);
|
|
959
|
+
const element = this.handlerAsUtility().popEphemeral(slot);
|
|
960
|
+
return toForeignCallResult([toArray(element)]);
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
// eslint-disable-next-line camelcase
|
|
964
|
+
aztec_utl_getEphemeral(foreignSlot: ForeignCallSingle, foreignIndex: ForeignCallSingle) {
|
|
965
|
+
const slot = fromSingle(foreignSlot);
|
|
966
|
+
const index = fromSingle(foreignIndex).toNumber();
|
|
967
|
+
const element = this.handlerAsUtility().getEphemeral(slot, index);
|
|
968
|
+
return toForeignCallResult([toArray(element)]);
|
|
969
|
+
}
|
|
801
970
|
|
|
802
|
-
|
|
971
|
+
// eslint-disable-next-line camelcase
|
|
972
|
+
aztec_utl_setEphemeral(
|
|
973
|
+
foreignSlot: ForeignCallSingle,
|
|
974
|
+
foreignIndex: ForeignCallSingle,
|
|
975
|
+
foreignElements: ForeignCallArray,
|
|
976
|
+
) {
|
|
977
|
+
const slot = fromSingle(foreignSlot);
|
|
978
|
+
const index = fromSingle(foreignIndex).toNumber();
|
|
979
|
+
const elements = fromArray(foreignElements);
|
|
980
|
+
this.handlerAsUtility().setEphemeral(slot, index, elements);
|
|
981
|
+
return toForeignCallResult([]);
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
// eslint-disable-next-line camelcase
|
|
985
|
+
aztec_utl_getEphemeralLen(foreignSlot: ForeignCallSingle) {
|
|
986
|
+
const slot = fromSingle(foreignSlot);
|
|
987
|
+
const len = this.handlerAsUtility().getEphemeralLen(slot);
|
|
988
|
+
return toForeignCallResult([toSingle(new Fr(len))]);
|
|
989
|
+
}
|
|
803
990
|
|
|
991
|
+
// eslint-disable-next-line camelcase
|
|
992
|
+
aztec_utl_removeEphemeral(foreignSlot: ForeignCallSingle, foreignIndex: ForeignCallSingle) {
|
|
993
|
+
const slot = fromSingle(foreignSlot);
|
|
994
|
+
const index = fromSingle(foreignIndex).toNumber();
|
|
995
|
+
this.handlerAsUtility().removeEphemeral(slot, index);
|
|
996
|
+
return toForeignCallResult([]);
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
// eslint-disable-next-line camelcase
|
|
1000
|
+
aztec_utl_clearEphemeral(foreignSlot: ForeignCallSingle) {
|
|
1001
|
+
const slot = fromSingle(foreignSlot);
|
|
1002
|
+
this.handlerAsUtility().clearEphemeral(slot);
|
|
804
1003
|
return toForeignCallResult([]);
|
|
805
1004
|
}
|
|
806
1005
|
|
|
@@ -808,7 +1007,8 @@ export class RPCTranslator {
|
|
|
808
1007
|
// 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
|
|
809
1008
|
// to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
|
|
810
1009
|
// existence of a txe_oracle method?
|
|
811
|
-
|
|
1010
|
+
// eslint-disable-next-line camelcase
|
|
1011
|
+
async aztec_utl_decryptAes128(
|
|
812
1012
|
foreignCiphertextBVecStorage: ForeignCallArray,
|
|
813
1013
|
foreignCiphertextLength: ForeignCallSingle,
|
|
814
1014
|
foreignIv: ForeignCallArray,
|
|
@@ -818,18 +1018,27 @@ export class RPCTranslator {
|
|
|
818
1018
|
const iv = fromUintArray(foreignIv, 8);
|
|
819
1019
|
const symKey = fromUintArray(foreignSymKey, 8);
|
|
820
1020
|
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
1021
|
+
// Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
|
|
1022
|
+
try {
|
|
1023
|
+
const plaintextBuffer = await this.handlerAsUtility().decryptAes128(ciphertext, iv, symKey);
|
|
1024
|
+
const [storage, length] = arrayToBoundedVec(
|
|
1025
|
+
bufferToU8Array(plaintextBuffer),
|
|
1026
|
+
foreignCiphertextBVecStorage.length,
|
|
1027
|
+
);
|
|
1028
|
+
return toForeignCallResult([toSingle(new Fr(1)), storage, length]);
|
|
1029
|
+
} catch {
|
|
1030
|
+
const zeroStorage = toArray(Array(foreignCiphertextBVecStorage.length).fill(new Fr(0)));
|
|
1031
|
+
return toForeignCallResult([toSingle(new Fr(0)), zeroStorage, toSingle(new Fr(0))]);
|
|
1032
|
+
}
|
|
826
1033
|
}
|
|
827
1034
|
|
|
828
|
-
|
|
1035
|
+
// eslint-disable-next-line camelcase
|
|
1036
|
+
async aztec_utl_getSharedSecret(
|
|
829
1037
|
foreignAddress: ForeignCallSingle,
|
|
830
1038
|
foreignEphPKField0: ForeignCallSingle,
|
|
831
1039
|
foreignEphPKField1: ForeignCallSingle,
|
|
832
1040
|
foreignEphPKField2: ForeignCallSingle,
|
|
1041
|
+
foreignContractAddress: ForeignCallSingle,
|
|
833
1042
|
) {
|
|
834
1043
|
const address = AztecAddress.fromField(fromSingle(foreignAddress));
|
|
835
1044
|
const ephPK = Point.fromFields([
|
|
@@ -837,45 +1046,68 @@ export class RPCTranslator {
|
|
|
837
1046
|
fromSingle(foreignEphPKField1),
|
|
838
1047
|
fromSingle(foreignEphPKField2),
|
|
839
1048
|
]);
|
|
1049
|
+
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
1050
|
+
|
|
1051
|
+
const secret = await this.handlerAsUtility().getSharedSecret(address, ephPK, contractAddress);
|
|
1052
|
+
|
|
1053
|
+
return toForeignCallResult([toSingle(secret)]);
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
// eslint-disable-next-line camelcase
|
|
1057
|
+
aztec_utl_setContractSyncCacheInvalid(
|
|
1058
|
+
foreignContractAddress: ForeignCallSingle,
|
|
1059
|
+
foreignScopes: ForeignCallArray,
|
|
1060
|
+
foreignScopeCount: ForeignCallSingle,
|
|
1061
|
+
) {
|
|
1062
|
+
const contractAddress = addressFromSingle(foreignContractAddress);
|
|
1063
|
+
const count = fromSingle(foreignScopeCount).toNumber();
|
|
1064
|
+
const scopes = fromArray(foreignScopes)
|
|
1065
|
+
.slice(0, count)
|
|
1066
|
+
.map(f => new AztecAddress(f));
|
|
840
1067
|
|
|
841
|
-
|
|
1068
|
+
this.handlerAsUtility().setContractSyncCacheInvalid(contractAddress, scopes);
|
|
842
1069
|
|
|
843
|
-
return
|
|
1070
|
+
return Promise.resolve(toForeignCallResult([]));
|
|
844
1071
|
}
|
|
845
1072
|
|
|
846
|
-
|
|
1073
|
+
// eslint-disable-next-line camelcase
|
|
1074
|
+
aztec_utl_emitOffchainEffect(_foreignData: ForeignCallArray) {
|
|
847
1075
|
throw new Error('Offchain effects are not yet supported in the TestEnvironment');
|
|
848
1076
|
}
|
|
849
1077
|
|
|
850
1078
|
// AVM opcodes
|
|
851
1079
|
|
|
852
|
-
|
|
1080
|
+
// eslint-disable-next-line camelcase
|
|
1081
|
+
aztec_avm_emitPublicLog(_foreignMessage: ForeignCallArray) {
|
|
853
1082
|
// TODO(#8811): Implement
|
|
854
1083
|
return toForeignCallResult([]);
|
|
855
1084
|
}
|
|
856
1085
|
|
|
857
|
-
|
|
1086
|
+
// eslint-disable-next-line camelcase
|
|
1087
|
+
async aztec_avm_storageRead(foreignSlot: ForeignCallSingle, foreignContractAddress: ForeignCallSingle) {
|
|
858
1088
|
const slot = fromSingle(foreignSlot);
|
|
859
1089
|
const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
|
|
860
1090
|
|
|
861
|
-
const value = (await this.handlerAsAvm().
|
|
1091
|
+
const value = (await this.handlerAsAvm().storageRead(slot, contractAddress)).value;
|
|
862
1092
|
|
|
863
1093
|
return toForeignCallResult([toSingle(new Fr(value))]);
|
|
864
1094
|
}
|
|
865
1095
|
|
|
866
|
-
|
|
1096
|
+
// eslint-disable-next-line camelcase
|
|
1097
|
+
async aztec_avm_storageWrite(foreignSlot: ForeignCallSingle, foreignValue: ForeignCallSingle) {
|
|
867
1098
|
const slot = fromSingle(foreignSlot);
|
|
868
1099
|
const value = fromSingle(foreignValue);
|
|
869
1100
|
|
|
870
|
-
await this.handlerAsAvm().
|
|
1101
|
+
await this.handlerAsAvm().storageWrite(slot, value);
|
|
871
1102
|
|
|
872
1103
|
return toForeignCallResult([]);
|
|
873
1104
|
}
|
|
874
1105
|
|
|
875
|
-
|
|
1106
|
+
// eslint-disable-next-line camelcase
|
|
1107
|
+
async aztec_avm_getContractInstanceDeployer(foreignAddress: ForeignCallSingle) {
|
|
876
1108
|
const address = addressFromSingle(foreignAddress);
|
|
877
1109
|
|
|
878
|
-
const instance = await this.handlerAsUtility().
|
|
1110
|
+
const instance = await this.handlerAsUtility().getContractInstance(address);
|
|
879
1111
|
|
|
880
1112
|
return toForeignCallResult([
|
|
881
1113
|
toSingle(instance.deployer),
|
|
@@ -884,10 +1116,11 @@ export class RPCTranslator {
|
|
|
884
1116
|
]);
|
|
885
1117
|
}
|
|
886
1118
|
|
|
887
|
-
|
|
1119
|
+
// eslint-disable-next-line camelcase
|
|
1120
|
+
async aztec_avm_getContractInstanceClassId(foreignAddress: ForeignCallSingle) {
|
|
888
1121
|
const address = addressFromSingle(foreignAddress);
|
|
889
1122
|
|
|
890
|
-
const instance = await this.handlerAsUtility().
|
|
1123
|
+
const instance = await this.handlerAsUtility().getContractInstance(address);
|
|
891
1124
|
|
|
892
1125
|
return toForeignCallResult([
|
|
893
1126
|
toSingle(instance.currentContractClassId),
|
|
@@ -896,10 +1129,11 @@ export class RPCTranslator {
|
|
|
896
1129
|
]);
|
|
897
1130
|
}
|
|
898
1131
|
|
|
899
|
-
|
|
1132
|
+
// eslint-disable-next-line camelcase
|
|
1133
|
+
async aztec_avm_getContractInstanceInitializationHash(foreignAddress: ForeignCallSingle) {
|
|
900
1134
|
const address = addressFromSingle(foreignAddress);
|
|
901
1135
|
|
|
902
|
-
const instance = await this.handlerAsUtility().
|
|
1136
|
+
const instance = await this.handlerAsUtility().getContractInstance(address);
|
|
903
1137
|
|
|
904
1138
|
return toForeignCallResult([
|
|
905
1139
|
toSingle(instance.initializationHash),
|
|
@@ -908,85 +1142,98 @@ export class RPCTranslator {
|
|
|
908
1142
|
]);
|
|
909
1143
|
}
|
|
910
1144
|
|
|
911
|
-
|
|
912
|
-
|
|
1145
|
+
// eslint-disable-next-line camelcase
|
|
1146
|
+
async aztec_avm_sender() {
|
|
1147
|
+
const sender = await this.handlerAsAvm().sender();
|
|
913
1148
|
|
|
914
1149
|
return toForeignCallResult([toSingle(sender)]);
|
|
915
1150
|
}
|
|
916
1151
|
|
|
917
|
-
|
|
1152
|
+
// eslint-disable-next-line camelcase
|
|
1153
|
+
async aztec_avm_emitNullifier(foreignNullifier: ForeignCallSingle) {
|
|
918
1154
|
const nullifier = fromSingle(foreignNullifier);
|
|
919
1155
|
|
|
920
|
-
await this.handlerAsAvm().
|
|
1156
|
+
await this.handlerAsAvm().emitNullifier(nullifier);
|
|
921
1157
|
|
|
922
1158
|
return toForeignCallResult([]);
|
|
923
1159
|
}
|
|
924
1160
|
|
|
925
|
-
|
|
1161
|
+
// eslint-disable-next-line camelcase
|
|
1162
|
+
async aztec_avm_emitNoteHash(foreignNoteHash: ForeignCallSingle) {
|
|
926
1163
|
const noteHash = fromSingle(foreignNoteHash);
|
|
927
1164
|
|
|
928
|
-
await this.handlerAsAvm().
|
|
1165
|
+
await this.handlerAsAvm().emitNoteHash(noteHash);
|
|
929
1166
|
|
|
930
1167
|
return toForeignCallResult([]);
|
|
931
1168
|
}
|
|
932
1169
|
|
|
933
|
-
|
|
1170
|
+
// eslint-disable-next-line camelcase
|
|
1171
|
+
async aztec_avm_nullifierExists(foreignSiloedNullifier: ForeignCallSingle) {
|
|
934
1172
|
const siloedNullifier = fromSingle(foreignSiloedNullifier);
|
|
935
1173
|
|
|
936
|
-
const exists = await this.handlerAsAvm().
|
|
1174
|
+
const exists = await this.handlerAsAvm().nullifierExists(siloedNullifier);
|
|
937
1175
|
|
|
938
1176
|
return toForeignCallResult([toSingle(new Fr(exists))]);
|
|
939
1177
|
}
|
|
940
1178
|
|
|
941
|
-
|
|
942
|
-
|
|
1179
|
+
// eslint-disable-next-line camelcase
|
|
1180
|
+
async aztec_avm_address() {
|
|
1181
|
+
const contractAddress = await this.handlerAsAvm().address();
|
|
943
1182
|
|
|
944
1183
|
return toForeignCallResult([toSingle(contractAddress.toField())]);
|
|
945
1184
|
}
|
|
946
1185
|
|
|
947
|
-
|
|
948
|
-
|
|
1186
|
+
// eslint-disable-next-line camelcase
|
|
1187
|
+
async aztec_avm_blockNumber() {
|
|
1188
|
+
const blockNumber = await this.handlerAsAvm().blockNumber();
|
|
949
1189
|
|
|
950
1190
|
return toForeignCallResult([toSingle(new Fr(blockNumber))]);
|
|
951
1191
|
}
|
|
952
1192
|
|
|
953
|
-
|
|
954
|
-
|
|
1193
|
+
// eslint-disable-next-line camelcase
|
|
1194
|
+
async aztec_avm_timestamp() {
|
|
1195
|
+
const timestamp = await this.handlerAsAvm().timestamp();
|
|
955
1196
|
|
|
956
1197
|
return toForeignCallResult([toSingle(new Fr(timestamp))]);
|
|
957
1198
|
}
|
|
958
1199
|
|
|
959
|
-
|
|
960
|
-
|
|
1200
|
+
// eslint-disable-next-line camelcase
|
|
1201
|
+
async aztec_avm_isStaticCall() {
|
|
1202
|
+
const isStaticCall = await this.handlerAsAvm().isStaticCall();
|
|
961
1203
|
|
|
962
1204
|
return toForeignCallResult([toSingle(new Fr(isStaticCall ? 1 : 0))]);
|
|
963
1205
|
}
|
|
964
1206
|
|
|
965
|
-
|
|
966
|
-
|
|
1207
|
+
// eslint-disable-next-line camelcase
|
|
1208
|
+
async aztec_avm_chainId() {
|
|
1209
|
+
const chainId = await this.handlerAsAvm().chainId();
|
|
967
1210
|
|
|
968
1211
|
return toForeignCallResult([toSingle(chainId)]);
|
|
969
1212
|
}
|
|
970
1213
|
|
|
971
|
-
|
|
972
|
-
|
|
1214
|
+
// eslint-disable-next-line camelcase
|
|
1215
|
+
async aztec_avm_version() {
|
|
1216
|
+
const version = await this.handlerAsAvm().version();
|
|
973
1217
|
|
|
974
1218
|
return toForeignCallResult([toSingle(version)]);
|
|
975
1219
|
}
|
|
976
1220
|
|
|
977
|
-
|
|
1221
|
+
// eslint-disable-next-line camelcase
|
|
1222
|
+
aztec_avm_returndataSize() {
|
|
978
1223
|
throw new Error(
|
|
979
1224
|
'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
|
|
980
1225
|
);
|
|
981
1226
|
}
|
|
982
1227
|
|
|
983
|
-
|
|
1228
|
+
// eslint-disable-next-line camelcase
|
|
1229
|
+
aztec_avm_returndataCopy(_foreignRdOffset: ForeignCallSingle, _foreignCopySize: ForeignCallSingle) {
|
|
984
1230
|
throw new Error(
|
|
985
1231
|
'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
|
|
986
1232
|
);
|
|
987
1233
|
}
|
|
988
1234
|
|
|
989
|
-
|
|
1235
|
+
// eslint-disable-next-line camelcase
|
|
1236
|
+
aztec_avm_call(
|
|
990
1237
|
_foreignL2Gas: ForeignCallSingle,
|
|
991
1238
|
_foreignDaGas: ForeignCallSingle,
|
|
992
1239
|
_foreignAddress: ForeignCallSingle,
|
|
@@ -998,7 +1245,8 @@ export class RPCTranslator {
|
|
|
998
1245
|
);
|
|
999
1246
|
}
|
|
1000
1247
|
|
|
1001
|
-
|
|
1248
|
+
// eslint-disable-next-line camelcase
|
|
1249
|
+
aztec_avm_staticCall(
|
|
1002
1250
|
_foreignL2Gas: ForeignCallSingle,
|
|
1003
1251
|
_foreignDaGas: ForeignCallSingle,
|
|
1004
1252
|
_foreignAddress: ForeignCallSingle,
|
|
@@ -1010,13 +1258,15 @@ export class RPCTranslator {
|
|
|
1010
1258
|
);
|
|
1011
1259
|
}
|
|
1012
1260
|
|
|
1013
|
-
|
|
1261
|
+
// eslint-disable-next-line camelcase
|
|
1262
|
+
aztec_avm_successCopy() {
|
|
1014
1263
|
throw new Error(
|
|
1015
1264
|
'Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead',
|
|
1016
1265
|
);
|
|
1017
1266
|
}
|
|
1018
1267
|
|
|
1019
|
-
|
|
1268
|
+
// eslint-disable-next-line camelcase
|
|
1269
|
+
async aztec_txe_privateCallNewFlow(
|
|
1020
1270
|
foreignFrom: ForeignCallSingle,
|
|
1021
1271
|
foreignTargetContractAddress: ForeignCallSingle,
|
|
1022
1272
|
foreignFunctionSelector: ForeignCallSingle,
|
|
@@ -1031,19 +1281,23 @@ export class RPCTranslator {
|
|
|
1031
1281
|
const argsHash = fromSingle(foreignArgsHash);
|
|
1032
1282
|
const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
|
|
1033
1283
|
|
|
1034
|
-
const returnValues = await this.handlerAsTxe().
|
|
1284
|
+
const returnValues = await this.handlerAsTxe().privateCallNewFlow(
|
|
1035
1285
|
from,
|
|
1036
1286
|
targetContractAddress,
|
|
1037
1287
|
functionSelector,
|
|
1038
1288
|
args,
|
|
1039
1289
|
argsHash,
|
|
1040
1290
|
isStaticCall,
|
|
1291
|
+
this.stateHandler.getCurrentJob(),
|
|
1041
1292
|
);
|
|
1042
1293
|
|
|
1294
|
+
// TODO(F-335): Avoid doing the following call here.
|
|
1295
|
+
await this.stateHandler.cycleJob();
|
|
1043
1296
|
return toForeignCallResult([toArray(returnValues)]);
|
|
1044
1297
|
}
|
|
1045
1298
|
|
|
1046
|
-
|
|
1299
|
+
// eslint-disable-next-line camelcase
|
|
1300
|
+
async aztec_txe_executeUtilityFunction(
|
|
1047
1301
|
foreignTargetContractAddress: ForeignCallSingle,
|
|
1048
1302
|
foreignFunctionSelector: ForeignCallSingle,
|
|
1049
1303
|
foreignArgs: ForeignCallArray,
|
|
@@ -1052,16 +1306,20 @@ export class RPCTranslator {
|
|
|
1052
1306
|
const functionSelector = FunctionSelector.fromField(fromSingle(foreignFunctionSelector));
|
|
1053
1307
|
const args = fromArray(foreignArgs);
|
|
1054
1308
|
|
|
1055
|
-
const returnValues = await this.handlerAsTxe().
|
|
1309
|
+
const returnValues = await this.handlerAsTxe().executeUtilityFunction(
|
|
1056
1310
|
targetContractAddress,
|
|
1057
1311
|
functionSelector,
|
|
1058
1312
|
args,
|
|
1313
|
+
this.stateHandler.getCurrentJob(),
|
|
1059
1314
|
);
|
|
1060
1315
|
|
|
1316
|
+
// TODO(F-335): Avoid doing the following call here.
|
|
1317
|
+
await this.stateHandler.cycleJob();
|
|
1061
1318
|
return toForeignCallResult([toArray(returnValues)]);
|
|
1062
1319
|
}
|
|
1063
1320
|
|
|
1064
|
-
|
|
1321
|
+
// eslint-disable-next-line camelcase
|
|
1322
|
+
async aztec_txe_publicCallNewFlow(
|
|
1065
1323
|
foreignFrom: ForeignCallSingle,
|
|
1066
1324
|
foreignAddress: ForeignCallSingle,
|
|
1067
1325
|
foreignCalldata: ForeignCallArray,
|
|
@@ -1072,13 +1330,16 @@ export class RPCTranslator {
|
|
|
1072
1330
|
const calldata = fromArray(foreignCalldata);
|
|
1073
1331
|
const isStaticCall = fromSingle(foreignIsStaticCall).toBool();
|
|
1074
1332
|
|
|
1075
|
-
const returnValues = await this.handlerAsTxe().
|
|
1333
|
+
const returnValues = await this.handlerAsTxe().publicCallNewFlow(from, address, calldata, isStaticCall);
|
|
1076
1334
|
|
|
1335
|
+
// TODO(F-335): Avoid doing the following call here.
|
|
1336
|
+
await this.stateHandler.cycleJob();
|
|
1077
1337
|
return toForeignCallResult([toArray(returnValues)]);
|
|
1078
1338
|
}
|
|
1079
1339
|
|
|
1080
|
-
|
|
1081
|
-
|
|
1340
|
+
// eslint-disable-next-line camelcase
|
|
1341
|
+
async aztec_prv_getSenderForTags() {
|
|
1342
|
+
const sender = await this.handlerAsPrivate().getSenderForTags();
|
|
1082
1343
|
|
|
1083
1344
|
// Return a Noir Option struct with `some` and `value` fields
|
|
1084
1345
|
if (sender === undefined) {
|
|
@@ -1090,19 +1351,21 @@ export class RPCTranslator {
|
|
|
1090
1351
|
}
|
|
1091
1352
|
}
|
|
1092
1353
|
|
|
1093
|
-
|
|
1354
|
+
// eslint-disable-next-line camelcase
|
|
1355
|
+
async aztec_prv_setSenderForTags(foreignSenderForTags: ForeignCallSingle) {
|
|
1094
1356
|
const senderForTags = AztecAddress.fromField(fromSingle(foreignSenderForTags));
|
|
1095
1357
|
|
|
1096
|
-
await this.handlerAsPrivate().
|
|
1358
|
+
await this.handlerAsPrivate().setSenderForTags(senderForTags);
|
|
1097
1359
|
|
|
1098
1360
|
return toForeignCallResult([]);
|
|
1099
1361
|
}
|
|
1100
1362
|
|
|
1101
|
-
|
|
1363
|
+
// eslint-disable-next-line camelcase
|
|
1364
|
+
async aztec_prv_getNextAppTagAsSender(foreignSender: ForeignCallSingle, foreignRecipient: ForeignCallSingle) {
|
|
1102
1365
|
const sender = AztecAddress.fromField(fromSingle(foreignSender));
|
|
1103
1366
|
const recipient = AztecAddress.fromField(fromSingle(foreignRecipient));
|
|
1104
1367
|
|
|
1105
|
-
const nextAppTag = await this.handlerAsPrivate().
|
|
1368
|
+
const nextAppTag = await this.handlerAsPrivate().getNextAppTagAsSender(sender, recipient);
|
|
1106
1369
|
|
|
1107
1370
|
return toForeignCallResult([toSingle(nextAppTag.value)]);
|
|
1108
1371
|
}
|