@aztec/txe 3.0.0-nightly.20250925 → 3.0.0-nightly.20250927

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 (33) hide show
  1. package/dest/oracle/interfaces.d.ts +51 -0
  2. package/dest/oracle/interfaces.d.ts.map +1 -0
  3. package/dest/oracle/interfaces.js +3 -0
  4. package/dest/oracle/txe_oracle_public_context.d.ts +5 -3
  5. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  6. package/dest/oracle/txe_oracle_public_context.js +14 -3
  7. package/dest/oracle/txe_oracle_top_level_context.d.ts +9 -7
  8. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  9. package/dest/oracle/txe_oracle_top_level_context.js +24 -24
  10. package/dest/rpc_translator.d.ts +13 -4
  11. package/dest/rpc_translator.d.ts.map +1 -1
  12. package/dest/rpc_translator.js +101 -66
  13. package/dest/txe_session.d.ts +15 -15
  14. package/dest/txe_session.d.ts.map +1 -1
  15. package/dest/txe_session.js +141 -99
  16. package/dest/utils/tx_effect_creation.d.ts +5 -0
  17. package/dest/utils/tx_effect_creation.d.ts.map +1 -0
  18. package/dest/utils/tx_effect_creation.js +16 -0
  19. package/package.json +15 -15
  20. package/src/oracle/interfaces.ts +80 -0
  21. package/src/oracle/txe_oracle_public_context.ts +20 -15
  22. package/src/oracle/txe_oracle_top_level_context.ts +26 -43
  23. package/src/rpc_translator.ts +125 -69
  24. package/src/txe_session.ts +196 -120
  25. package/src/utils/tx_effect_creation.ts +37 -0
  26. package/dest/oracle/txe_oracle.d.ts +0 -64
  27. package/dest/oracle/txe_oracle.d.ts.map +0 -1
  28. package/dest/oracle/txe_oracle.js +0 -263
  29. package/dest/oracle/txe_typed_oracle.d.ts +0 -41
  30. package/dest/oracle/txe_typed_oracle.d.ts.map +0 -1
  31. package/dest/oracle/txe_typed_oracle.js +0 -89
  32. package/src/oracle/txe_oracle.ts +0 -419
  33. package/src/oracle/txe_typed_oracle.ts +0 -147
@@ -1,419 +0,0 @@
1
- import { Aes128 } from '@aztec/foundation/crypto';
2
- import { Fr, Point } from '@aztec/foundation/fields';
3
- import { type Logger, applyStringFormatting, createLogger } from '@aztec/foundation/log';
4
- import { PXEOracleInterface } from '@aztec/pxe/server';
5
- import { ExecutionNoteCache, HashedValuesCache, type NoteData, UtilityContext, pickNotes } from '@aztec/pxe/simulator';
6
- import type { NoteSelector } from '@aztec/stdlib/abi';
7
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
8
- import { Body, L2Block } from '@aztec/stdlib/block';
9
- import type { ContractInstance } from '@aztec/stdlib/contract';
10
- import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
11
- import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
12
- import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
13
- import { IndexedTaggingSecret } from '@aztec/stdlib/logs';
14
- import { Note, type NoteStatus } from '@aztec/stdlib/note';
15
- import { makeAppendOnlyTreeSnapshot } from '@aztec/stdlib/testing';
16
- import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
17
- import { BlockHeader, GlobalVariables, TxEffect, TxHash } from '@aztec/stdlib/tx';
18
-
19
- import { insertTxEffectIntoWorldTrees, makeTXEBlockHeader } from '../utils/block_creation.js';
20
- import { TXETypedOracle } from './txe_typed_oracle.js';
21
-
22
- export class TXE extends TXETypedOracle {
23
- private logger: Logger;
24
-
25
- private executionCache = new HashedValuesCache();
26
- private senderForTags?: AztecAddress;
27
-
28
- public noteCache: ExecutionNoteCache;
29
-
30
- private constructor(
31
- private contractAddress: AztecAddress,
32
- private pxeOracleInterface: PXEOracleInterface,
33
- private forkedWorldTrees: MerkleTreeWriteOperations,
34
- private anchorBlockGlobalVariables: GlobalVariables,
35
- private nextBlockGlobalVariables: GlobalVariables,
36
- private txRequestHash: Fr,
37
- ) {
38
- super('TXEOraclePrivateUtilityContext');
39
-
40
- this.logger = createLogger('txe:oracle');
41
- this.logger.debug('Entering Private/Utility context');
42
-
43
- this.noteCache = new ExecutionNoteCache(txRequestHash);
44
- }
45
-
46
- static async create(
47
- contractAddress: AztecAddress,
48
- pxeOracleInterface: PXEOracleInterface,
49
- forkedWorldTrees: MerkleTreeWriteOperations,
50
- anchorBlockGlobalVariables: GlobalVariables,
51
- nextBlockGlobalVariables: GlobalVariables,
52
- txRequestHash: Fr,
53
- ) {
54
- // There is no automatic message discovery and contract-driven syncing process in inlined private or utility
55
- // contexts, which means that known nullifiers are also not searched for, since it is during the tagging sync that
56
- // we perform this. We therefore search for known nullifiers now, as otherwise notes that were nullified would not
57
- // be removed from the database.
58
- await pxeOracleInterface.removeNullifiedNotes(contractAddress);
59
-
60
- return new TXE(
61
- contractAddress,
62
- pxeOracleInterface,
63
- forkedWorldTrees,
64
- anchorBlockGlobalVariables,
65
- nextBlockGlobalVariables,
66
- txRequestHash,
67
- );
68
- }
69
-
70
- // Utils
71
-
72
- async checkNullifiersNotInTree(contractAddress: AztecAddress, nullifiers: Fr[]) {
73
- const siloedNullifiers = await Promise.all(nullifiers.map(nullifier => siloNullifier(contractAddress, nullifier)));
74
- const db = this.forkedWorldTrees;
75
- const nullifierIndexesInTree = await db.findLeafIndices(
76
- MerkleTreeId.NULLIFIER_TREE,
77
- siloedNullifiers.map(n => n.toBuffer()),
78
- );
79
- if (nullifierIndexesInTree.some(index => index !== undefined)) {
80
- throw new Error(`Rejecting tx for emitting duplicate nullifiers`);
81
- }
82
- }
83
-
84
- // TypedOracle
85
-
86
- override utilityGetRandomField() {
87
- return Fr.random();
88
- }
89
-
90
- override utilityGetUtilityContext() {
91
- return Promise.resolve(
92
- UtilityContext.from({
93
- blockNumber: this.anchorBlockGlobalVariables.blockNumber,
94
- timestamp: this.anchorBlockGlobalVariables.timestamp,
95
- contractAddress: this.contractAddress,
96
- version: this.anchorBlockGlobalVariables.version,
97
- chainId: this.anchorBlockGlobalVariables.chainId,
98
- }),
99
- );
100
- }
101
-
102
- override privateStoreInExecutionCache(values: Fr[], hash: Fr) {
103
- return this.executionCache.store(values, hash);
104
- }
105
-
106
- override privateLoadFromExecutionCache(hash: Fr) {
107
- const preimage = this.executionCache.getPreimage(hash);
108
- if (!preimage) {
109
- throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
110
- }
111
- return Promise.resolve(preimage);
112
- }
113
-
114
- override utilityGetKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest> {
115
- return this.pxeOracleInterface.getKeyValidationRequest(pkMHash, this.contractAddress);
116
- }
117
-
118
- override utilityGetContractInstance(address: AztecAddress): Promise<ContractInstance> {
119
- return this.pxeOracleInterface.getContractInstance(address);
120
- }
121
-
122
- override utilityGetMembershipWitness(
123
- blockNumber: number,
124
- treeId: MerkleTreeId,
125
- leafValue: Fr,
126
- ): Promise<Fr[] | undefined> {
127
- return this.pxeOracleInterface.getMembershipWitness(blockNumber, treeId, leafValue);
128
- }
129
-
130
- override utilityGetNullifierMembershipWitness(
131
- blockNumber: number,
132
- nullifier: Fr,
133
- ): Promise<NullifierMembershipWitness | undefined> {
134
- return this.pxeOracleInterface.getNullifierMembershipWitness(blockNumber, nullifier);
135
- }
136
-
137
- override utilityGetPublicDataWitness(blockNumber: number, leafSlot: Fr): Promise<PublicDataWitness | undefined> {
138
- return this.pxeOracleInterface.getPublicDataWitness(blockNumber, leafSlot);
139
- }
140
-
141
- override utilityGetLowNullifierMembershipWitness(
142
- blockNumber: number,
143
- nullifier: Fr,
144
- ): Promise<NullifierMembershipWitness | undefined> {
145
- return this.pxeOracleInterface.getLowNullifierMembershipWitness(blockNumber, nullifier);
146
- }
147
-
148
- override async utilityGetBlockHeader(blockNumber: number): Promise<BlockHeader | undefined> {
149
- return (await this.pxeOracleInterface.getBlock(blockNumber))?.header.toBlockHeader();
150
- }
151
-
152
- override utilityGetPublicKeysAndPartialAddress(account: AztecAddress) {
153
- return this.pxeOracleInterface.getCompleteAddress(account);
154
- }
155
-
156
- override async utilityGetNotes(
157
- storageSlot: Fr,
158
- numSelects: number,
159
- selectByIndexes: number[],
160
- selectByOffsets: number[],
161
- selectByLengths: number[],
162
- selectValues: Fr[],
163
- selectComparators: number[],
164
- sortByIndexes: number[],
165
- sortByOffsets: number[],
166
- sortByLengths: number[],
167
- sortOrder: number[],
168
- limit: number,
169
- offset: number,
170
- status: NoteStatus,
171
- ) {
172
- // Nullified pending notes are already removed from the list.
173
- const pendingNotes = this.noteCache.getNotes(this.contractAddress, storageSlot);
174
-
175
- const pendingNullifiers = this.noteCache.getNullifiers(this.contractAddress);
176
- const dbNotes = await this.pxeOracleInterface.getNotes(this.contractAddress, storageSlot, status);
177
- const dbNotesFiltered = dbNotes.filter(n => !pendingNullifiers.has((n.siloedNullifier as Fr).value));
178
-
179
- const notes = pickNotes<NoteData>([...dbNotesFiltered, ...pendingNotes], {
180
- selects: selectByIndexes.slice(0, numSelects).map((index, i) => ({
181
- selector: { index, offset: selectByOffsets[i], length: selectByLengths[i] },
182
- value: selectValues[i],
183
- comparator: selectComparators[i],
184
- })),
185
- sorts: sortByIndexes.map((index, i) => ({
186
- selector: { index, offset: sortByOffsets[i], length: sortByLengths[i] },
187
- order: sortOrder[i],
188
- })),
189
- limit,
190
- offset,
191
- });
192
-
193
- this.logger.debug(
194
- `Returning ${notes.length} notes for ${this.contractAddress} at ${storageSlot}: ${notes
195
- .map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
196
- .join(', ')}`,
197
- );
198
-
199
- if (notes.length > 0) {
200
- const noteLength = notes[0].note.items.length;
201
- if (!notes.every(({ note }) => noteLength === note.items.length)) {
202
- throw new Error('Notes should all be the same length.');
203
- }
204
- }
205
-
206
- return notes;
207
- }
208
-
209
- override privateNotifyCreatedNote(
210
- storageSlot: Fr,
211
- _noteTypeId: NoteSelector,
212
- noteItems: Fr[],
213
- noteHash: Fr,
214
- counter: number,
215
- ) {
216
- const note = new Note(noteItems);
217
- this.noteCache.addNewNote(
218
- {
219
- contractAddress: this.contractAddress,
220
- storageSlot,
221
- noteNonce: Fr.ZERO, // Nonce cannot be known during private execution.
222
- note,
223
- siloedNullifier: undefined, // Siloed nullifier cannot be known for newly created note.
224
- noteHash,
225
- },
226
- counter,
227
- );
228
- }
229
-
230
- override async privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, _counter: number) {
231
- await this.checkNullifiersNotInTree(this.contractAddress, [innerNullifier]);
232
- await this.noteCache.nullifyNote(this.contractAddress, innerNullifier, noteHash);
233
- }
234
-
235
- override async privateNotifyCreatedNullifier(innerNullifier: Fr): Promise<void> {
236
- await this.checkNullifiersNotInTree(this.contractAddress, [innerNullifier]);
237
- await this.noteCache.nullifierCreated(this.contractAddress, innerNullifier);
238
- }
239
-
240
- override async utilityCheckNullifierExists(innerNullifier: Fr): Promise<boolean> {
241
- const nullifier = await siloNullifier(this.contractAddress, innerNullifier!);
242
- const index = await this.pxeOracleInterface.getNullifierIndex(nullifier);
243
- return index !== undefined;
244
- }
245
-
246
- override async utilityStorageRead(
247
- contractAddress: AztecAddress,
248
- startStorageSlot: Fr,
249
- blockNumber: number,
250
- numberOfElements: number,
251
- ): Promise<Fr[]> {
252
- const values = [];
253
- for (let i = 0n; i < numberOfElements; i++) {
254
- const storageSlot = startStorageSlot.add(new Fr(i));
255
- const value = await this.pxeOracleInterface.getPublicStorageAt(blockNumber, contractAddress, storageSlot);
256
- values.push(value);
257
- }
258
- return values;
259
- }
260
-
261
- override utilityDebugLog(message: string, fields: Fr[]): void {
262
- this.logger.verbose(`${applyStringFormatting(message, fields)}`, { module: `${this.logger.module}:debug_log` });
263
- }
264
-
265
- override async privateIncrementAppTaggingSecretIndexAsSender(
266
- sender: AztecAddress,
267
- recipient: AztecAddress,
268
- ): Promise<void> {
269
- await this.pxeOracleInterface.incrementAppTaggingSecretIndexAsSender(this.contractAddress, sender, recipient);
270
- }
271
-
272
- override async utilityGetIndexedTaggingSecretAsSender(
273
- sender: AztecAddress,
274
- recipient: AztecAddress,
275
- ): Promise<IndexedTaggingSecret> {
276
- return await this.pxeOracleInterface.getIndexedTaggingSecretAsSender(this.contractAddress, sender, recipient);
277
- }
278
-
279
- override async utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr) {
280
- await this.pxeOracleInterface.syncTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot);
281
-
282
- await this.pxeOracleInterface.removeNullifiedNotes(this.contractAddress);
283
-
284
- return Promise.resolve();
285
- }
286
-
287
- public override async utilityValidateEnqueuedNotesAndEvents(
288
- contractAddress: AztecAddress,
289
- noteValidationRequestsArrayBaseSlot: Fr,
290
- eventValidationRequestsArrayBaseSlot: Fr,
291
- ): Promise<void> {
292
- await this.pxeOracleInterface.validateEnqueuedNotesAndEvents(
293
- contractAddress,
294
- noteValidationRequestsArrayBaseSlot,
295
- eventValidationRequestsArrayBaseSlot,
296
- );
297
- }
298
-
299
- override async utilityBulkRetrieveLogs(
300
- contractAddress: AztecAddress,
301
- logRetrievalRequestsArrayBaseSlot: Fr,
302
- logRetrievalResponsesArrayBaseSlot: Fr,
303
- ): Promise<void> {
304
- return await this.pxeOracleInterface.bulkRetrieveLogs(
305
- contractAddress,
306
- logRetrievalRequestsArrayBaseSlot,
307
- logRetrievalResponsesArrayBaseSlot,
308
- );
309
- }
310
-
311
- override utilityStoreCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[]): Promise<void> {
312
- if (!contractAddress.equals(this.contractAddress)) {
313
- // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
314
- throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
315
- }
316
- return this.pxeOracleInterface.storeCapsule(this.contractAddress, slot, capsule);
317
- }
318
-
319
- override utilityLoadCapsule(contractAddress: AztecAddress, slot: Fr): Promise<Fr[] | null> {
320
- if (!contractAddress.equals(this.contractAddress)) {
321
- // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
322
- throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
323
- }
324
- return this.pxeOracleInterface.loadCapsule(this.contractAddress, slot);
325
- }
326
-
327
- override utilityDeleteCapsule(contractAddress: AztecAddress, slot: Fr): Promise<void> {
328
- if (!contractAddress.equals(this.contractAddress)) {
329
- // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
330
- throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
331
- }
332
- return this.pxeOracleInterface.deleteCapsule(this.contractAddress, slot);
333
- }
334
-
335
- override utilityCopyCapsule(
336
- contractAddress: AztecAddress,
337
- srcSlot: Fr,
338
- dstSlot: Fr,
339
- numEntries: number,
340
- ): Promise<void> {
341
- if (!contractAddress.equals(this.contractAddress)) {
342
- // TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
343
- throw new Error(`Contract ${contractAddress} is not allowed to access ${this.contractAddress}'s PXE DB`);
344
- }
345
- return this.pxeOracleInterface.copyCapsule(this.contractAddress, srcSlot, dstSlot, numEntries);
346
- }
347
-
348
- override utilityAes128Decrypt(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer> {
349
- const aes128 = new Aes128();
350
- return aes128.decryptBufferCBC(ciphertext, iv, symKey);
351
- }
352
-
353
- override utilityGetSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point> {
354
- return this.pxeOracleInterface.getSharedSecret(address, ephPk);
355
- }
356
-
357
- override privateGetSenderForTags(): Promise<AztecAddress | undefined> {
358
- return Promise.resolve(this.senderForTags);
359
- }
360
-
361
- override privateSetSenderForTags(senderForTags: AztecAddress): Promise<void> {
362
- this.senderForTags = senderForTags;
363
- return Promise.resolve();
364
- }
365
-
366
- async close(): Promise<L2Block> {
367
- this.logger.debug('Exiting Private Context, building block with collected side effects', {
368
- blockNumber: this.nextBlockGlobalVariables.blockNumber,
369
- });
370
-
371
- const txEffect = await this.makeTxEffect();
372
-
373
- await insertTxEffectIntoWorldTrees(txEffect, this.forkedWorldTrees);
374
-
375
- const block = new L2Block(
376
- makeAppendOnlyTreeSnapshot(),
377
- await makeTXEBlockHeader(this.forkedWorldTrees, this.nextBlockGlobalVariables),
378
- new Body([txEffect]),
379
- );
380
-
381
- await this.forkedWorldTrees.close();
382
-
383
- this.logger.debug('Exited PublicContext with built block', {
384
- blockNumber: block.number,
385
- txEffects: block.body.txEffects,
386
- });
387
-
388
- return block;
389
- }
390
-
391
- private async makeTxEffect(): Promise<TxEffect> {
392
- const txEffect = TxEffect.empty();
393
-
394
- const { usedTxRequestHashForNonces } = this.noteCache.finish();
395
- const nonceGenerator = usedTxRequestHashForNonces ? this.txRequestHash : this.noteCache.getAllNullifiers()[0];
396
-
397
- txEffect.noteHashes = await Promise.all(
398
- this.noteCache
399
- .getAllNotes()
400
- .map(async (pendingNote, i) =>
401
- computeUniqueNoteHash(
402
- await computeNoteHashNonce(nonceGenerator, i),
403
- await siloNoteHash(pendingNote.note.contractAddress, pendingNote.noteHashForConsumption),
404
- ),
405
- ),
406
- );
407
-
408
- // Nullifiers are already siloed
409
- txEffect.nullifiers = this.noteCache.getAllNullifiers();
410
-
411
- if (usedTxRequestHashForNonces) {
412
- txEffect.nullifiers.unshift(this.txRequestHash);
413
- }
414
-
415
- txEffect.txHash = new TxHash(new Fr(this.nextBlockGlobalVariables.blockNumber));
416
-
417
- return txEffect;
418
- }
419
- }
@@ -1,147 +0,0 @@
1
- import type { CompleteAddress, ContractArtifact, ContractInstanceWithAddress, TxHash } from '@aztec/aztec.js';
2
- import type { Fr } from '@aztec/foundation/fields';
3
- import { TypedOracle } from '@aztec/pxe/simulator';
4
- import type { FunctionSelector } from '@aztec/stdlib/abi';
5
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import type { PrivateContextInputs } from '@aztec/stdlib/kernel';
7
- import type { UInt32, UInt64 } from '@aztec/stdlib/types';
8
-
9
- class OracleMethodNotAvailableError extends Error {
10
- constructor(className: string, methodName: string) {
11
- super(`Oracle method ${methodName} is not implemented in handler ${className}.`);
12
- }
13
- }
14
-
15
- export class TXETypedOracle extends TypedOracle {
16
- avmOpcodeAddress(): Promise<AztecAddress> {
17
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeAddress');
18
- }
19
-
20
- avmOpcodeBlockNumber(): Promise<UInt32> {
21
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeBlockNumber');
22
- }
23
-
24
- avmOpcodeTimestamp(): Promise<bigint> {
25
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeTimestamp');
26
- }
27
-
28
- avmOpcodeIsStaticCall(): Promise<boolean> {
29
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeIsStaticCall');
30
- }
31
-
32
- avmOpcodeChainId(): Promise<Fr> {
33
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeChainId');
34
- }
35
-
36
- avmOpcodeVersion(): Promise<Fr> {
37
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeVersion');
38
- }
39
-
40
- avmOpcodeEmitNullifier(_nullifier: Fr): Promise<void> {
41
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeEmitNullifier');
42
- }
43
-
44
- avmOpcodeEmitNoteHash(_noteHash: Fr): Promise<void> {
45
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeEmitNoteHash');
46
- }
47
-
48
- avmOpcodeNullifierExists(_innerNullifier: Fr, _targetAddress: AztecAddress): Promise<boolean> {
49
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeNullifierExists');
50
- }
51
-
52
- avmOpcodeStorageWrite(_slot: Fr, _value: Fr): Promise<void> {
53
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeStorageWrite');
54
- }
55
-
56
- avmOpcodeStorageRead(_slot: Fr): Promise<Fr> {
57
- throw new OracleMethodNotAvailableError(this.className, 'avmOpcodeStorageRead');
58
- }
59
-
60
- txeGetPrivateContextInputs(_blockNumber?: number): Promise<PrivateContextInputs> {
61
- throw new OracleMethodNotAvailableError(this.className, 'txeGetPrivateContextInputs');
62
- }
63
-
64
- txeGetNextBlockNumber(): Promise<number> {
65
- throw new OracleMethodNotAvailableError(this.className, 'txeGetNextBlockNumber');
66
- }
67
-
68
- txeGetNextBlockTimestamp(): Promise<UInt64> {
69
- throw new OracleMethodNotAvailableError(this.className, 'txeGetNextBlockTimestamp');
70
- }
71
-
72
- txeAdvanceBlocksBy(_blocks: number): Promise<void> {
73
- throw new OracleMethodNotAvailableError(this.className, 'txeAdvanceBlocksBy');
74
- }
75
-
76
- txeAdvanceTimestampBy(_duration: UInt64) {
77
- throw new OracleMethodNotAvailableError(this.className, 'txeAdvanceTimestampBy');
78
- }
79
-
80
- txeDeploy(_artifact: ContractArtifact, _instance: ContractInstanceWithAddress, _foreignSecret: Fr): Promise<void> {
81
- throw new OracleMethodNotAvailableError(this.className, 'txeDeploy');
82
- }
83
-
84
- txeCreateAccount(_secret: Fr): Promise<CompleteAddress> {
85
- throw new OracleMethodNotAvailableError(this.className, 'txeCreateAccount');
86
- }
87
-
88
- txeAddAccount(
89
- _artifact: ContractArtifact,
90
- _instance: ContractInstanceWithAddress,
91
- _secret: Fr,
92
- ): Promise<CompleteAddress> {
93
- throw new OracleMethodNotAvailableError(this.className, 'txeAddAccount');
94
- }
95
-
96
- txeAddAuthWitness(_address: AztecAddress, _messageHash: Fr): Promise<void> {
97
- throw new OracleMethodNotAvailableError(this.className, 'txeAddAuthWitness');
98
- }
99
-
100
- txeGetLastBlockTimestamp(): Promise<bigint> {
101
- throw new OracleMethodNotAvailableError(this.className, 'txeGetLastBlockTimestamp');
102
- }
103
-
104
- txeGetLastTxEffects(): Promise<{
105
- txHash: TxHash;
106
- noteHashes: Fr[];
107
- nullifiers: Fr[];
108
- }> {
109
- throw new OracleMethodNotAvailableError(this.className, 'txeGetLastTxEffects');
110
- }
111
-
112
- storageWrite(_startStorageSlot: Fr, _values: Fr[]): Promise<Fr[]> {
113
- throw new OracleMethodNotAvailableError(this.className, 'storageWrite');
114
- }
115
-
116
- getMsgSender(): AztecAddress {
117
- throw new OracleMethodNotAvailableError(this.className, 'getMsgSender');
118
- }
119
-
120
- txePrivateCallNewFlow(
121
- _from: AztecAddress,
122
- _targetContractAddress: AztecAddress,
123
- _functionSelector: FunctionSelector,
124
- _args: Fr[],
125
- _argsHash: Fr,
126
- _isStaticCall: boolean,
127
- ): Promise<Fr[]> {
128
- throw new OracleMethodNotAvailableError(this.className, 'txePrivateCallNewFlow');
129
- }
130
-
131
- txeSimulateUtilityFunction(
132
- _targetContractAddress: AztecAddress,
133
- _functionSelector: FunctionSelector,
134
- _args: Fr[],
135
- ): Promise<Fr[]> {
136
- throw new OracleMethodNotAvailableError(this.className, 'simulateUtilityFunction');
137
- }
138
-
139
- txePublicCallNewFlow(
140
- _from: AztecAddress,
141
- _targetContractAddress: AztecAddress,
142
- _calldata: Fr[],
143
- _isStaticCall: boolean,
144
- ): Promise<Fr[]> {
145
- throw new OracleMethodNotAvailableError(this.className, 'txePublicCallNewFlow');
146
- }
147
- }