@aztec/txe 2.0.0-nightly.20250902 → 3.0.0-canary.a9708bd
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.map +1 -1
- package/dest/index.js +1 -0
- package/dest/oracle/txe_oracle.d.ts +3 -15
- package/dest/oracle/txe_oracle.d.ts.map +1 -1
- package/dest/oracle/txe_oracle.js +14 -79
- package/dest/oracle/txe_oracle_public_context.d.ts +34 -0
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -0
- package/dest/oracle/txe_oracle_public_context.js +126 -0
- package/dest/oracle/txe_typed_oracle.d.ts +8 -2
- package/dest/oracle/txe_typed_oracle.d.ts.map +1 -1
- package/dest/oracle/txe_typed_oracle.js +18 -0
- package/dest/txe_service/txe_service.d.ts +28 -9
- package/dest/txe_service/txe_service.d.ts.map +1 -1
- package/dest/txe_service/txe_service.js +101 -80
- package/dest/txe_session.d.ts +22 -10
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +62 -46
- package/package.json +15 -15
- package/src/index.ts +1 -0
- package/src/oracle/txe_oracle.ts +17 -92
- package/src/oracle/txe_oracle_public_context.ts +198 -0
- package/src/oracle/txe_typed_oracle.ts +26 -2
- package/src/txe_service/txe_service.ts +132 -85
- package/src/txe_session.ts +96 -58
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AA8NpD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,iEAIhD"}
|
package/dest/index.js
CHANGED
|
@@ -16,6 +16,7 @@ const sessions = new Map();
|
|
|
16
16
|
* TXE typically has to load the same contract artifacts over and over again for multiple tests,
|
|
17
17
|
* so we cache them here to avoid both loading them from disk repeatedly and computing their artifact hashes
|
|
18
18
|
*/ const TXEArtifactsCache = new Map();
|
|
19
|
+
// TODO: why does the zod validation in the txe dispatcher not reject invalid function names?
|
|
19
20
|
const TXEForeignCallInputSchema = z.object({
|
|
20
21
|
// eslint-disable-next-line camelcase
|
|
21
22
|
session_id: z.number().int().nonnegative(),
|
|
@@ -4,7 +4,6 @@ import { KeyStore } from '@aztec/key-store';
|
|
|
4
4
|
import { AddressDataProvider, CapsuleDataProvider, NoteDataProvider, PrivateEventDataProvider, TaggingDataProvider } from '@aztec/pxe/server';
|
|
5
5
|
import { ExecutionNoteCache, MessageLoadOracleInputs, type NoteData } from '@aztec/pxe/simulator';
|
|
6
6
|
import { type ContractArtifact, type FunctionAbi, FunctionSelector, type NoteSelector } from '@aztec/stdlib/abi';
|
|
7
|
-
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
8
7
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
8
|
import { type ContractInstance, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
10
9
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
@@ -28,7 +27,7 @@ export declare class TXE extends TXETypedOracle {
|
|
|
28
27
|
private privateEventDataProvider;
|
|
29
28
|
private accountDataProvider;
|
|
30
29
|
private contractAddress;
|
|
31
|
-
|
|
30
|
+
baseFork: MerkleTreeWriteOperations;
|
|
32
31
|
private stateMachine;
|
|
33
32
|
private logger;
|
|
34
33
|
private blockNumber;
|
|
@@ -37,11 +36,7 @@ export declare class TXE extends TXETypedOracle {
|
|
|
37
36
|
private msgSender;
|
|
38
37
|
private functionSelector;
|
|
39
38
|
private pxeOracleInterface;
|
|
40
|
-
private publicDataWrites;
|
|
41
|
-
private uniqueNoteHashesFromPublic;
|
|
42
|
-
private siloedNullifiersFromPublic;
|
|
43
39
|
private privateLogs;
|
|
44
|
-
private publicLogs;
|
|
45
40
|
private committedBlocks;
|
|
46
41
|
private ROLLUP_VERSION;
|
|
47
42
|
private CHAIN_ID;
|
|
@@ -68,12 +63,10 @@ export declare class TXE extends TXETypedOracle {
|
|
|
68
63
|
getAddressDataProvider(): AddressDataProvider;
|
|
69
64
|
addContractInstance(contractInstance: ContractInstanceWithAddress): Promise<void>;
|
|
70
65
|
addContractArtifact(contractClassId: Fr, artifact: ContractArtifact): Promise<void>;
|
|
71
|
-
txeGetPrivateContextInputs(blockNumber
|
|
66
|
+
txeGetPrivateContextInputs(blockNumber?: number, sideEffectsCounter?: number, isStaticCall?: boolean): Promise<PrivateContextInputs>;
|
|
72
67
|
txeAddAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
|
|
73
|
-
addPublicDataWrites(writes: PublicDataWrite[]): Promise<void>;
|
|
74
68
|
checkNullifiersNotInTree(contractAddress: AztecAddress, nullifiers: Fr[]): Promise<void>;
|
|
75
|
-
|
|
76
|
-
addUniqueNoteHashesFromPublic(siloedNoteHashes: Fr[]): void;
|
|
69
|
+
utilityAssertCompatibleOracleVersion(version: number): void;
|
|
77
70
|
utilityGetBlockNumber(): Promise<number>;
|
|
78
71
|
utilityGetTimestamp(): Promise<bigint>;
|
|
79
72
|
txeGetLastBlockTimestamp(): Promise<bigint>;
|
|
@@ -97,7 +90,6 @@ export declare class TXE extends TXETypedOracle {
|
|
|
97
90
|
utilityCheckNullifierExists(innerNullifier: Fr): Promise<boolean>;
|
|
98
91
|
getL1ToL2MembershipWitness(_contractAddress: AztecAddress, _messageHash: Fr, _secret: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
99
92
|
utilityStorageRead(contractAddress: AztecAddress, startStorageSlot: Fr, blockNumber: number, numberOfElements: number): Promise<Fr[]>;
|
|
100
|
-
storageWrite(startStorageSlot: Fr, values: Fr[]): Promise<Fr[]>;
|
|
101
93
|
commitState(): Promise<void>;
|
|
102
94
|
getTxRequestHash(): Fr;
|
|
103
95
|
notifyCreatedContractClassLog(_log: ContractClassLog, _counter: number): Fr;
|
|
@@ -110,10 +102,6 @@ export declare class TXE extends TXETypedOracle {
|
|
|
110
102
|
utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr): Promise<void>;
|
|
111
103
|
utilityValidateEnqueuedNotesAndEvents(contractAddress: AztecAddress, noteValidationRequestsArrayBaseSlot: Fr, eventValidationRequestsArrayBaseSlot: Fr): Promise<void>;
|
|
112
104
|
utilityBulkRetrieveLogs(contractAddress: AztecAddress, logRetrievalRequestsArrayBaseSlot: Fr, logRetrievalResponsesArrayBaseSlot: Fr): Promise<void>;
|
|
113
|
-
avmOpcodeNullifierExists(innerNullifier: Fr, targetAddress: AztecAddress): Promise<boolean>;
|
|
114
|
-
avmOpcodeEmitNullifier(nullifier: Fr): Promise<void>;
|
|
115
|
-
avmOpcodeEmitNoteHash(noteHash: Fr): Promise<void>;
|
|
116
|
-
avmOpcodeStorageRead(slot: Fr): Promise<Fr>;
|
|
117
105
|
utilityStoreCapsule(contractAddress: AztecAddress, slot: Fr, capsule: Fr[]): Promise<void>;
|
|
118
106
|
utilityLoadCapsule(contractAddress: AztecAddress, slot: Fr): Promise<Fr[] | null>;
|
|
119
107
|
utilityDeleteCapsule(contractAddress: AztecAddress, slot: Fr): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,wBAAwB,EAM9B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,12 @@ import { Aes128, Schnorr } from '@aztec/foundation/crypto';
|
|
|
5
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
6
|
import { applyStringFormatting, createLogger } from '@aztec/foundation/log';
|
|
7
7
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
8
|
-
import { PXEOracleInterface, enrichPublicSimulationError } from '@aztec/pxe/server';
|
|
8
|
+
import { ORACLE_VERSION, PXEOracleInterface, enrichPublicSimulationError } from '@aztec/pxe/server';
|
|
9
9
|
import { ExecutionNoteCache, HashedValuesCache, Oracle, PrivateExecutionOracle, UtilityExecutionOracle, executePrivateFunction, generateSimulatedProvingResult, pickNotes } from '@aztec/pxe/simulator';
|
|
10
10
|
import { WASMSimulator, extractCallStack, toACVMWitness, witnessMapToFields } from '@aztec/simulator/client';
|
|
11
11
|
import { ExecutionError, GuardedMerkleTreeOperations, PublicContractsDB, PublicProcessor, PublicTxSimulator, createSimulationError, resolveAssertionMessageFromError } from '@aztec/simulator/server';
|
|
12
12
|
import { FunctionSelector, FunctionType, countArgumentsSize } from '@aztec/stdlib/abi';
|
|
13
13
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
14
|
-
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
15
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
16
15
|
import { computePartialAddress } from '@aztec/stdlib/contract';
|
|
17
16
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
@@ -19,7 +18,7 @@ import { computeCalldataHash, computeNoteHashNonce, computePublicDataTreeLeafSlo
|
|
|
19
18
|
import { PartialPrivateTailPublicInputsForPublic, PrivateContextInputs, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
20
19
|
import { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
21
20
|
import { makeAppendOnlyTreeSnapshot, makeContentCommitment, makeGlobalVariables, makeHeader } from '@aztec/stdlib/testing';
|
|
22
|
-
import { AppendOnlyTreeSnapshot, MerkleTreeId
|
|
21
|
+
import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
23
22
|
import { BlockHeader, CallContext, HashedValues, PrivateExecutionResult, Tx, TxConstantData, TxContext, TxEffect, TxHash, collectNested } from '@aztec/stdlib/tx';
|
|
24
23
|
import { ForkCheckpoint } from '@aztec/world-state/native';
|
|
25
24
|
import { GENESIS_TIMESTAMP } from '../txe_constants.js';
|
|
@@ -44,11 +43,7 @@ export class TXE extends TXETypedOracle {
|
|
|
44
43
|
msgSender;
|
|
45
44
|
functionSelector;
|
|
46
45
|
pxeOracleInterface;
|
|
47
|
-
publicDataWrites;
|
|
48
|
-
uniqueNoteHashesFromPublic;
|
|
49
|
-
siloedNullifiersFromPublic;
|
|
50
46
|
privateLogs;
|
|
51
|
-
publicLogs;
|
|
52
47
|
committedBlocks;
|
|
53
48
|
ROLLUP_VERSION;
|
|
54
49
|
CHAIN_ID;
|
|
@@ -60,7 +55,7 @@ export class TXE extends TXETypedOracle {
|
|
|
60
55
|
senderForTags;
|
|
61
56
|
executionCache;
|
|
62
57
|
constructor(keyStore, contractDataProvider, noteDataProvider, capsuleDataProvider, taggingDataProvider, addressDataProvider, privateEventDataProvider, accountDataProvider, contractAddress, baseFork, stateMachine){
|
|
63
|
-
super(), this.keyStore = keyStore, this.contractDataProvider = contractDataProvider, this.noteDataProvider = noteDataProvider, this.capsuleDataProvider = capsuleDataProvider, this.taggingDataProvider = taggingDataProvider, this.addressDataProvider = addressDataProvider, this.privateEventDataProvider = privateEventDataProvider, this.accountDataProvider = accountDataProvider, this.contractAddress = contractAddress, this.baseFork = baseFork, this.stateMachine = stateMachine, this.blockNumber = 1, this.timestamp = GENESIS_TIMESTAMP, this.sideEffectCounter = 0, this.functionSelector = FunctionSelector.fromField(new Fr(0)), this.
|
|
58
|
+
super(), this.keyStore = keyStore, this.contractDataProvider = contractDataProvider, this.noteDataProvider = noteDataProvider, this.capsuleDataProvider = capsuleDataProvider, this.taggingDataProvider = taggingDataProvider, this.addressDataProvider = addressDataProvider, this.privateEventDataProvider = privateEventDataProvider, this.accountDataProvider = accountDataProvider, this.contractAddress = contractAddress, this.baseFork = baseFork, this.stateMachine = stateMachine, this.blockNumber = 1, this.timestamp = GENESIS_TIMESTAMP, this.sideEffectCounter = 0, this.functionSelector = FunctionSelector.fromField(new Fr(0)), this.privateLogs = [], this.committedBlocks = new Set(), this.ROLLUP_VERSION = 1, this.CHAIN_ID = 1, this.simulator = new WASMSimulator(), this.authwits = new Map();
|
|
64
59
|
this.logger = createLogger('txe:oracle');
|
|
65
60
|
this.noteCache = new ExecutionNoteCache(this.getTxRequestHash());
|
|
66
61
|
this.node = stateMachine.node;
|
|
@@ -185,10 +180,6 @@ export class TXE extends TXETypedOracle {
|
|
|
185
180
|
]);
|
|
186
181
|
this.authwits.set(authWitness.requestHash.toString(), authWitness);
|
|
187
182
|
}
|
|
188
|
-
async addPublicDataWrites(writes) {
|
|
189
|
-
this.publicDataWrites.push(...writes);
|
|
190
|
-
await this.baseFork.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, writes.map((w)=>new PublicDataTreeLeaf(w.leafSlot, w.value).toBuffer()));
|
|
191
|
-
}
|
|
192
183
|
async checkNullifiersNotInTree(contractAddress, nullifiers) {
|
|
193
184
|
const siloedNullifiers = await Promise.all(nullifiers.map((nullifier)=>siloNullifier(contractAddress, nullifier)));
|
|
194
185
|
const db = this.baseFork;
|
|
@@ -197,13 +188,12 @@ export class TXE extends TXETypedOracle {
|
|
|
197
188
|
throw new Error(`Rejecting tx for emitting duplicate nullifiers`);
|
|
198
189
|
}
|
|
199
190
|
}
|
|
200
|
-
addSiloedNullifiersFromPublic(siloedNullifiers) {
|
|
201
|
-
this.siloedNullifiersFromPublic.push(...siloedNullifiers);
|
|
202
|
-
}
|
|
203
|
-
addUniqueNoteHashesFromPublic(siloedNoteHashes) {
|
|
204
|
-
this.uniqueNoteHashesFromPublic.push(...siloedNoteHashes);
|
|
205
|
-
}
|
|
206
191
|
// TypedOracle
|
|
192
|
+
utilityAssertCompatibleOracleVersion(version) {
|
|
193
|
+
if (version !== ORACLE_VERSION) {
|
|
194
|
+
throw new Error(`Incompatible oracle version. PXE is using version '${ORACLE_VERSION}', but got a request for '${version}'.`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
207
197
|
utilityGetBlockNumber() {
|
|
208
198
|
return Promise.resolve(this.blockNumber);
|
|
209
199
|
}
|
|
@@ -355,15 +345,6 @@ export class TXE extends TXETypedOracle {
|
|
|
355
345
|
}
|
|
356
346
|
return values;
|
|
357
347
|
}
|
|
358
|
-
async storageWrite(startStorageSlot, values) {
|
|
359
|
-
const publicDataWrites = await Promise.all(values.map(async (value, i)=>{
|
|
360
|
-
const storageSlot = startStorageSlot.add(new Fr(i));
|
|
361
|
-
this.logger.debug(`Oracle storage write: slot=${storageSlot.toString()} value=${value}`);
|
|
362
|
-
return new PublicDataWrite(await computePublicDataTreeLeafSlot(this.contractAddress, storageSlot), value);
|
|
363
|
-
}));
|
|
364
|
-
await this.addPublicDataWrites(publicDataWrites);
|
|
365
|
-
return publicDataWrites.map((write)=>write.value);
|
|
366
|
-
}
|
|
367
348
|
async commitState() {
|
|
368
349
|
const blockNumber = await this.utilityGetBlockNumber();
|
|
369
350
|
const { usedTxRequestHashForNonces } = this.noteCache.finish();
|
|
@@ -377,20 +358,12 @@ export class TXE extends TXETypedOracle {
|
|
|
377
358
|
const nonceGenerator = usedTxRequestHashForNonces ? this.getTxRequestHash() : this.noteCache.getAllNullifiers()[0];
|
|
378
359
|
let i = 0;
|
|
379
360
|
const uniqueNoteHashesFromPrivate = await Promise.all(this.noteCache.getAllNotes().map(async (pendingNote)=>computeUniqueNoteHash(await computeNoteHashNonce(nonceGenerator, i++), await siloNoteHash(pendingNote.note.contractAddress, pendingNote.noteHashForConsumption))));
|
|
380
|
-
txEffect.noteHashes =
|
|
381
|
-
|
|
382
|
-
...this.uniqueNoteHashesFromPublic
|
|
383
|
-
];
|
|
384
|
-
txEffect.nullifiers = [
|
|
385
|
-
...this.siloedNullifiersFromPublic,
|
|
386
|
-
...this.noteCache.getAllNullifiers()
|
|
387
|
-
];
|
|
361
|
+
txEffect.noteHashes = uniqueNoteHashesFromPrivate;
|
|
362
|
+
txEffect.nullifiers = this.noteCache.getAllNullifiers();
|
|
388
363
|
if (usedTxRequestHashForNonces) {
|
|
389
364
|
txEffect.nullifiers.unshift(this.getTxRequestHash());
|
|
390
365
|
}
|
|
391
|
-
txEffect.publicDataWrites = this.publicDataWrites;
|
|
392
366
|
txEffect.privateLogs = this.privateLogs;
|
|
393
|
-
txEffect.publicLogs = this.publicLogs;
|
|
394
367
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
395
368
|
const body = new Body([
|
|
396
369
|
txEffect
|
|
@@ -424,11 +397,7 @@ export class TXE extends TXETypedOracle {
|
|
|
424
397
|
l2Block.header = header;
|
|
425
398
|
await fork.updateArchive(l2Block.header);
|
|
426
399
|
await this.stateMachine.handleL2Block(l2Block);
|
|
427
|
-
this.publicDataWrites = [];
|
|
428
400
|
this.privateLogs = [];
|
|
429
|
-
this.publicLogs = [];
|
|
430
|
-
this.uniqueNoteHashesFromPublic = [];
|
|
431
|
-
this.siloedNullifiersFromPublic = [];
|
|
432
401
|
this.noteCache = new ExecutionNoteCache(this.getTxRequestHash());
|
|
433
402
|
}
|
|
434
403
|
getTxRequestHash() {
|
|
@@ -521,39 +490,6 @@ export class TXE extends TXETypedOracle {
|
|
|
521
490
|
async utilityBulkRetrieveLogs(contractAddress, logRetrievalRequestsArrayBaseSlot, logRetrievalResponsesArrayBaseSlot) {
|
|
522
491
|
return await this.pxeOracleInterface.bulkRetrieveLogs(contractAddress, logRetrievalRequestsArrayBaseSlot, logRetrievalResponsesArrayBaseSlot);
|
|
523
492
|
}
|
|
524
|
-
async avmOpcodeNullifierExists(innerNullifier, targetAddress) {
|
|
525
|
-
const nullifier = await siloNullifier(targetAddress, innerNullifier);
|
|
526
|
-
const db = this.baseFork;
|
|
527
|
-
const treeIndex = (await db.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, [
|
|
528
|
-
nullifier.toBuffer()
|
|
529
|
-
]))[0];
|
|
530
|
-
const transientIndex = this.siloedNullifiersFromPublic.find((n)=>n.equals(nullifier));
|
|
531
|
-
return treeIndex !== undefined || transientIndex !== undefined;
|
|
532
|
-
}
|
|
533
|
-
async avmOpcodeEmitNullifier(nullifier) {
|
|
534
|
-
const siloedNullifier = await siloNullifier(this.contractAddress, nullifier);
|
|
535
|
-
this.addSiloedNullifiersFromPublic([
|
|
536
|
-
siloedNullifier
|
|
537
|
-
]);
|
|
538
|
-
return Promise.resolve();
|
|
539
|
-
}
|
|
540
|
-
// Doesn't this need to get hashed w/ the nonce ?
|
|
541
|
-
async avmOpcodeEmitNoteHash(noteHash) {
|
|
542
|
-
const siloedNoteHash = await siloNoteHash(this.contractAddress, noteHash);
|
|
543
|
-
this.addUniqueNoteHashesFromPublic([
|
|
544
|
-
siloedNoteHash
|
|
545
|
-
]);
|
|
546
|
-
return Promise.resolve();
|
|
547
|
-
}
|
|
548
|
-
async avmOpcodeStorageRead(slot) {
|
|
549
|
-
const leafSlot = await computePublicDataTreeLeafSlot(this.contractAddress, slot);
|
|
550
|
-
const lowLeafResult = await this.baseFork.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot.toBigInt());
|
|
551
|
-
if (!lowLeafResult || !lowLeafResult.alreadyPresent) {
|
|
552
|
-
return Fr.ZERO;
|
|
553
|
-
}
|
|
554
|
-
const preimage = await this.baseFork.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
|
|
555
|
-
return preimage.leaf.value;
|
|
556
|
-
}
|
|
557
493
|
utilityStoreCapsule(contractAddress, slot, capsule) {
|
|
558
494
|
if (!contractAddress.equals(this.contractAddress)) {
|
|
559
495
|
// TODO(#10727): instead of this check that this.contractAddress is allowed to access the external DB
|
|
@@ -613,17 +549,16 @@ export class TXE extends TXETypedOracle {
|
|
|
613
549
|
const txContext = new TxContext(this.CHAIN_ID, this.ROLLUP_VERSION, gasSettings);
|
|
614
550
|
const blockHeader = await this.pxeOracleInterface.getBlockHeader();
|
|
615
551
|
const noteCache = new ExecutionNoteCache(this.getTxRequestHash());
|
|
616
|
-
|
|
617
|
-
const context = new PrivateExecutionOracle(argsHash, txContext, callContext, /** Header of a block whose state is used during private execution (not the block the transaction is included in). */ blockHeader, /** List of transient auth witnesses to be used during this simulation */ Array.from(this.authwits.values()), /** List of transient auth witnesses to be used during this simulation */ [], HashedValuesCache.create(), noteCache, this.pxeOracleInterface, this.simulator, 0, 1, undefined, undefined, /**
|
|
552
|
+
const privateExecutionOracle = new PrivateExecutionOracle(argsHash, txContext, callContext, /** Header of a block whose state is used during private execution (not the block the transaction is included in). */ blockHeader, /** List of transient auth witnesses to be used during this simulation */ Array.from(this.authwits.values()), /** List of transient auth witnesses to be used during this simulation */ [], HashedValuesCache.create(), noteCache, this.pxeOracleInterface, this.simulator, 0, 1, undefined, undefined, /**
|
|
618
553
|
* In TXE, the typical transaction entrypoint is skipped, so we need to simulate the actions that such a
|
|
619
554
|
* contract would perform, including setting senderForTags.
|
|
620
555
|
*/ from);
|
|
621
|
-
|
|
556
|
+
privateExecutionOracle.privateStoreInExecutionCache(args, argsHash);
|
|
622
557
|
// Note: This is a slight modification of simulator.run without any of the checks. Maybe we should modify simulator.run with a boolean value to skip checks.
|
|
623
558
|
let result;
|
|
624
559
|
let executionResult;
|
|
625
560
|
try {
|
|
626
|
-
executionResult = await executePrivateFunction(this.simulator,
|
|
561
|
+
executionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, artifact, targetContractAddress, functionSelector);
|
|
627
562
|
const { usedTxRequestHashForNonces } = noteCache.finish();
|
|
628
563
|
const firstNullifierHint = usedTxRequestHashForNonces ? Fr.ZERO : noteCache.getAllNullifiers()[0];
|
|
629
564
|
const publicCallRequests = collectNested([
|
|
@@ -632,7 +567,7 @@ export class TXE extends TXETypedOracle {
|
|
|
632
567
|
r.publicInputs.publicTeardownCallRequest
|
|
633
568
|
]));
|
|
634
569
|
const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
|
|
635
|
-
const calldata = await
|
|
570
|
+
const calldata = await privateExecutionOracle.privateLoadFromExecutionCache(r.calldataHash);
|
|
636
571
|
return new HashedValues(calldata, r.calldataHash);
|
|
637
572
|
}));
|
|
638
573
|
result = new PrivateExecutionResult(executionResult, firstNullifierHint, publicFunctionsCalldata);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
4
|
+
import { type MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
|
|
5
|
+
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
6
|
+
import type { UInt32 } from '@aztec/stdlib/types';
|
|
7
|
+
import { TXETypedOracle } from './txe_typed_oracle.js';
|
|
8
|
+
export declare class TXEOraclePublicContext extends TXETypedOracle {
|
|
9
|
+
private contractAddress;
|
|
10
|
+
private worldTrees;
|
|
11
|
+
private txRequestHash;
|
|
12
|
+
private globalVariables;
|
|
13
|
+
private logger;
|
|
14
|
+
private transientUniqueNoteHashes;
|
|
15
|
+
private transientSiloedNullifiers;
|
|
16
|
+
private publicDataWrites;
|
|
17
|
+
constructor(contractAddress: AztecAddress, worldTrees: MerkleTreeWriteOperations, txRequestHash: Fr, globalVariables: GlobalVariables);
|
|
18
|
+
avmOpcodeAddress(): Promise<AztecAddress>;
|
|
19
|
+
avmOpcodeBlockNumber(): Promise<UInt32>;
|
|
20
|
+
avmOpcodeTimestamp(): Promise<bigint>;
|
|
21
|
+
avmOpcodeIsStaticCall(): Promise<boolean>;
|
|
22
|
+
avmOpcodeChainId(): Promise<Fr>;
|
|
23
|
+
avmOpcodeVersion(): Promise<Fr>;
|
|
24
|
+
avmOpcodeEmitNullifier(nullifier: Fr): Promise<void>;
|
|
25
|
+
avmOpcodeEmitNoteHash(noteHash: Fr): Promise<void>;
|
|
26
|
+
avmOpcodeNullifierExists(innerNullifier: Fr, targetAddress: AztecAddress): Promise<boolean>;
|
|
27
|
+
avmOpcodeStorageWrite(slot: Fr, value: Fr): Promise<void>;
|
|
28
|
+
avmOpcodeStorageRead(slot: Fr): Promise<Fr>;
|
|
29
|
+
close(): Promise<L2Block>;
|
|
30
|
+
private makeTxEffect;
|
|
31
|
+
private insertSideEffectIntoWorldTrees;
|
|
32
|
+
private makeBlockHeader;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=txe_oracle_public_context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txe_oracle_public_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_public_context.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAQ,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAGL,KAAK,yBAAyB,EAG/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAe,eAAe,EAAoB,MAAM,kBAAkB,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,qBAAa,sBAAuB,SAAQ,cAAc;IAOtD,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,eAAe;IATzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,gBAAgB,CAAyB;gBAGvC,eAAe,EAAE,YAAY,EAC7B,UAAU,EAAE,yBAAyB,EACrC,aAAa,EAAE,EAAE,EACjB,eAAe,EAAE,eAAe;IAYjC,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;IAIzC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzC,gBAAgB,IAAI,OAAO,CAAC,EAAE,CAAC;IAI/B,gBAAgB,IAAI,OAAO,CAAC,EAAE,CAAC;IAIzB,sBAAsB,CAAC,SAAS,EAAE,EAAE;IAKpC,qBAAqB,CAAC,QAAQ,EAAE,EAAE;IAMlC,wBAAwB,CAAC,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3F,qBAAqB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAYzC,oBAAoB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAuBpD,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAwB/B,OAAO,CAAC,YAAY;YAcN,8BAA8B;YAmB9B,eAAe;CAa9B"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_SUBTREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
2
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
4
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
6
|
+
import { Body, L2Block } from '@aztec/stdlib/block';
|
|
7
|
+
import { computePublicDataTreeLeafSlot, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
8
|
+
import { makeAppendOnlyTreeSnapshot, makeContentCommitment } from '@aztec/stdlib/testing';
|
|
9
|
+
import { AppendOnlyTreeSnapshot, MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
10
|
+
import { BlockHeader, TxEffect, TxHash } from '@aztec/stdlib/tx';
|
|
11
|
+
import { TXETypedOracle } from './txe_typed_oracle.js';
|
|
12
|
+
export class TXEOraclePublicContext extends TXETypedOracle {
|
|
13
|
+
contractAddress;
|
|
14
|
+
worldTrees;
|
|
15
|
+
txRequestHash;
|
|
16
|
+
globalVariables;
|
|
17
|
+
logger;
|
|
18
|
+
transientUniqueNoteHashes;
|
|
19
|
+
transientSiloedNullifiers;
|
|
20
|
+
publicDataWrites;
|
|
21
|
+
constructor(contractAddress, worldTrees, txRequestHash, globalVariables){
|
|
22
|
+
super(), this.contractAddress = contractAddress, this.worldTrees = worldTrees, this.txRequestHash = txRequestHash, this.globalVariables = globalVariables, this.transientUniqueNoteHashes = [], this.transientSiloedNullifiers = [], this.publicDataWrites = [];
|
|
23
|
+
this.logger = createLogger('txe:public_context');
|
|
24
|
+
this.logger.debug('Entering PublicContext', {
|
|
25
|
+
contractAddress,
|
|
26
|
+
blockNumber: globalVariables.blockNumber,
|
|
27
|
+
timestamp: globalVariables.timestamp
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
avmOpcodeAddress() {
|
|
31
|
+
return Promise.resolve(this.contractAddress);
|
|
32
|
+
}
|
|
33
|
+
avmOpcodeBlockNumber() {
|
|
34
|
+
return Promise.resolve(this.globalVariables.blockNumber);
|
|
35
|
+
}
|
|
36
|
+
avmOpcodeTimestamp() {
|
|
37
|
+
return Promise.resolve(this.globalVariables.timestamp);
|
|
38
|
+
}
|
|
39
|
+
avmOpcodeIsStaticCall() {
|
|
40
|
+
return Promise.resolve(false);
|
|
41
|
+
}
|
|
42
|
+
avmOpcodeChainId() {
|
|
43
|
+
return Promise.resolve(this.globalVariables.chainId);
|
|
44
|
+
}
|
|
45
|
+
avmOpcodeVersion() {
|
|
46
|
+
return Promise.resolve(this.globalVariables.version);
|
|
47
|
+
}
|
|
48
|
+
async avmOpcodeEmitNullifier(nullifier) {
|
|
49
|
+
const siloedNullifier = await siloNullifier(this.contractAddress, nullifier);
|
|
50
|
+
this.transientSiloedNullifiers.push(siloedNullifier);
|
|
51
|
+
}
|
|
52
|
+
async avmOpcodeEmitNoteHash(noteHash) {
|
|
53
|
+
const siloedNoteHash = await siloNoteHash(this.contractAddress, noteHash);
|
|
54
|
+
// TODO: make the note hash unique - they are only siloed right now
|
|
55
|
+
this.transientUniqueNoteHashes.push(siloedNoteHash);
|
|
56
|
+
}
|
|
57
|
+
async avmOpcodeNullifierExists(innerNullifier, targetAddress) {
|
|
58
|
+
const nullifier = await siloNullifier(targetAddress, innerNullifier);
|
|
59
|
+
const treeIndex = (await this.worldTrees.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, [
|
|
60
|
+
nullifier.toBuffer()
|
|
61
|
+
]))[0];
|
|
62
|
+
const transientIndex = this.transientSiloedNullifiers.find((n)=>n.equals(nullifier));
|
|
63
|
+
return treeIndex !== undefined || transientIndex !== undefined;
|
|
64
|
+
}
|
|
65
|
+
async avmOpcodeStorageWrite(slot, value) {
|
|
66
|
+
this.logger.debug('AVM storage write', {
|
|
67
|
+
slot,
|
|
68
|
+
value
|
|
69
|
+
});
|
|
70
|
+
const dataWrite = new PublicDataWrite(await computePublicDataTreeLeafSlot(this.contractAddress, slot), value);
|
|
71
|
+
this.publicDataWrites.push(dataWrite);
|
|
72
|
+
await this.worldTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
|
|
73
|
+
new PublicDataTreeLeaf(dataWrite.leafSlot, dataWrite.value).toBuffer()
|
|
74
|
+
]);
|
|
75
|
+
}
|
|
76
|
+
async avmOpcodeStorageRead(slot) {
|
|
77
|
+
const leafSlot = await computePublicDataTreeLeafSlot(this.contractAddress, slot);
|
|
78
|
+
const lowLeafResult = await this.worldTrees.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot.toBigInt());
|
|
79
|
+
const value = !lowLeafResult || !lowLeafResult.alreadyPresent ? Fr.ZERO : (await this.worldTrees.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index)).leaf.value;
|
|
80
|
+
this.logger.debug('AVM storage read', {
|
|
81
|
+
slot,
|
|
82
|
+
value
|
|
83
|
+
});
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
async close() {
|
|
87
|
+
this.logger.debug('Exiting PublicContext, building block with collected side effects', {
|
|
88
|
+
blockNumber: this.globalVariables.blockNumber
|
|
89
|
+
});
|
|
90
|
+
const txEffect = this.makeTxEffect();
|
|
91
|
+
await this.insertSideEffectIntoWorldTrees(txEffect);
|
|
92
|
+
const block = new L2Block(makeAppendOnlyTreeSnapshot(this.globalVariables.blockNumber), await this.makeBlockHeader(), new Body([
|
|
93
|
+
txEffect
|
|
94
|
+
]));
|
|
95
|
+
await this.worldTrees.close();
|
|
96
|
+
this.logger.debug('Exited PublicContext with built block', {
|
|
97
|
+
blockNumber: block.number,
|
|
98
|
+
txEffects: block.body.txEffects
|
|
99
|
+
});
|
|
100
|
+
return block;
|
|
101
|
+
}
|
|
102
|
+
makeTxEffect() {
|
|
103
|
+
const txEffect = TxEffect.empty();
|
|
104
|
+
txEffect.noteHashes = this.transientUniqueNoteHashes;
|
|
105
|
+
txEffect.nullifiers = [
|
|
106
|
+
this.txRequestHash,
|
|
107
|
+
...this.transientSiloedNullifiers
|
|
108
|
+
];
|
|
109
|
+
txEffect.publicDataWrites = this.publicDataWrites;
|
|
110
|
+
// TODO: support public logs
|
|
111
|
+
txEffect.txHash = new TxHash(new Fr(this.globalVariables.blockNumber));
|
|
112
|
+
return txEffect;
|
|
113
|
+
}
|
|
114
|
+
async insertSideEffectIntoWorldTrees(txEffect) {
|
|
115
|
+
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
116
|
+
await this.worldTrees.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd(txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
|
|
117
|
+
await this.worldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
118
|
+
// We do not need to add public data writes because we apply them as we go.
|
|
119
|
+
await this.worldTrees.batchInsert(MerkleTreeId.NULLIFIER_TREE, padArrayEnd(txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map((nullifier)=>nullifier.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
|
|
120
|
+
}
|
|
121
|
+
async makeBlockHeader() {
|
|
122
|
+
const stateReference = await this.worldTrees.getStateReference();
|
|
123
|
+
const archiveInfo = await this.worldTrees.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
124
|
+
return new BlockHeader(new AppendOnlyTreeSnapshot(new Fr(archiveInfo.root), Number(archiveInfo.size)), makeContentCommitment(), stateReference, this.globalVariables, Fr.ZERO, Fr.ZERO);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -4,14 +4,20 @@ import { TypedOracle } from '@aztec/pxe/simulator';
|
|
|
4
4
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
5
5
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
6
|
import type { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
7
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
7
|
+
import type { UInt32, UInt64 } from '@aztec/stdlib/types';
|
|
8
8
|
export declare class TXETypedOracle extends TypedOracle {
|
|
9
|
+
avmOpcodeAddress(): Promise<AztecAddress>;
|
|
10
|
+
avmOpcodeBlockNumber(): Promise<UInt32>;
|
|
11
|
+
avmOpcodeTimestamp(): Promise<bigint>;
|
|
12
|
+
avmOpcodeIsStaticCall(): Promise<boolean>;
|
|
13
|
+
avmOpcodeChainId(): Promise<Fr>;
|
|
14
|
+
avmOpcodeVersion(): Promise<Fr>;
|
|
9
15
|
avmOpcodeEmitNullifier(_nullifier: Fr): Promise<void>;
|
|
10
16
|
avmOpcodeEmitNoteHash(_noteHash: Fr): Promise<void>;
|
|
11
17
|
avmOpcodeNullifierExists(_innerNullifier: Fr, _targetAddress: AztecAddress): Promise<boolean>;
|
|
12
18
|
avmOpcodeStorageWrite(_slot: Fr, _value: Fr): Promise<void>;
|
|
13
19
|
avmOpcodeStorageRead(_slot: Fr): Promise<Fr>;
|
|
14
|
-
txeGetPrivateContextInputs(_blockNumber
|
|
20
|
+
txeGetPrivateContextInputs(_blockNumber?: number): Promise<PrivateContextInputs>;
|
|
15
21
|
txeAdvanceBlocksBy(_blocks: number): Promise<void>;
|
|
16
22
|
txeAdvanceTimestampBy(_duration: UInt64): void;
|
|
17
23
|
txeSetContractAddress(_contractAddress: AztecAddress): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_typed_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_typed_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"txe_typed_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_typed_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,24 @@ class OracleMethodNotAvailableError extends Error {
|
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
export class TXETypedOracle extends TypedOracle {
|
|
8
|
+
avmOpcodeAddress() {
|
|
9
|
+
throw new OracleMethodNotAvailableError('avmOpcodeAddress');
|
|
10
|
+
}
|
|
11
|
+
avmOpcodeBlockNumber() {
|
|
12
|
+
throw new OracleMethodNotAvailableError('avmOpcodeBlockNumber');
|
|
13
|
+
}
|
|
14
|
+
avmOpcodeTimestamp() {
|
|
15
|
+
throw new OracleMethodNotAvailableError('avmOpcodeTimestamp');
|
|
16
|
+
}
|
|
17
|
+
avmOpcodeIsStaticCall() {
|
|
18
|
+
throw new OracleMethodNotAvailableError('avmOpcodeIsStaticCall');
|
|
19
|
+
}
|
|
20
|
+
avmOpcodeChainId() {
|
|
21
|
+
throw new OracleMethodNotAvailableError('avmOpcodeChainId');
|
|
22
|
+
}
|
|
23
|
+
avmOpcodeVersion() {
|
|
24
|
+
throw new OracleMethodNotAvailableError('avmOpcodeVersion');
|
|
25
|
+
}
|
|
8
26
|
avmOpcodeEmitNullifier(_nullifier) {
|
|
9
27
|
throw new OracleMethodNotAvailableError('avmOpcodeEmitNullifier');
|
|
10
28
|
}
|
|
@@ -1,12 +1,31 @@
|
|
|
1
1
|
import { type ContractInstanceWithAddress } from '@aztec/aztec.js';
|
|
2
2
|
import { type ContractArtifact } from '@aztec/stdlib/abi';
|
|
3
3
|
import type { TXETypedOracle } from '../oracle/txe_typed_oracle.js';
|
|
4
|
+
import type { TXESessionStateHandler } from '../txe_session.js';
|
|
4
5
|
import { type ForeignCallArray, type ForeignCallSingle } from '../util/encoding.js';
|
|
5
6
|
export declare class TXEService {
|
|
6
|
-
private
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
private stateHandler;
|
|
8
|
+
private oracleHandler;
|
|
9
|
+
/**
|
|
10
|
+
* Create a new instance of `TXEService` that will translate all TXE RPC calls to and from the foreign
|
|
11
|
+
* (`ForeignCallSingle`, `ForeignCallResult`, etc.) and native TS types, delegating actual execution of the oracles
|
|
12
|
+
* to the different handlers.
|
|
13
|
+
* @param stateHandler The handler that will process TXE session state transitions, such as entering a private or
|
|
14
|
+
* public context.
|
|
15
|
+
* @param oracleHandler The handler that will process all other oracle calls that are not directly related to session
|
|
16
|
+
* state.
|
|
17
|
+
*/
|
|
18
|
+
constructor(stateHandler: TXESessionStateHandler, oracleHandler: TXETypedOracle);
|
|
19
|
+
txeSetTopLevelTXEContext(): Promise<{
|
|
20
|
+
values: (string | ForeignCallArray)[];
|
|
21
|
+
}>;
|
|
22
|
+
txeSetPrivateTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle, foreignHistoricalBlockNumberIsSome: ForeignCallSingle, foreignHistoricalBlockNumberValue: ForeignCallSingle): Promise<{
|
|
23
|
+
values: (string | ForeignCallArray)[];
|
|
24
|
+
}>;
|
|
25
|
+
txeSetPublicTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle): Promise<{
|
|
26
|
+
values: (string | ForeignCallArray)[];
|
|
27
|
+
}>;
|
|
28
|
+
txeSetUtilityTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle): Promise<{
|
|
10
29
|
values: (string | ForeignCallArray)[];
|
|
11
30
|
}>;
|
|
12
31
|
txeAdvanceBlocksBy(foreignBlocks: ForeignCallSingle): Promise<{
|
|
@@ -15,9 +34,6 @@ export declare class TXEService {
|
|
|
15
34
|
txeAdvanceTimestampBy(foreignDuration: ForeignCallSingle): {
|
|
16
35
|
values: (string | ForeignCallArray)[];
|
|
17
36
|
};
|
|
18
|
-
txeSetContractAddress(foreignAddress: ForeignCallSingle): {
|
|
19
|
-
values: (string | ForeignCallArray)[];
|
|
20
|
-
};
|
|
21
37
|
txeDeploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: ForeignCallSingle): Promise<{
|
|
22
38
|
values: (string | ForeignCallArray)[];
|
|
23
39
|
}>;
|
|
@@ -30,6 +46,9 @@ export declare class TXEService {
|
|
|
30
46
|
txeAddAuthWitness(foreignAddress: ForeignCallSingle, foreignMessageHash: ForeignCallSingle): Promise<{
|
|
31
47
|
values: (string | ForeignCallArray)[];
|
|
32
48
|
}>;
|
|
49
|
+
utilityAssertCompatibleOracleVersion(foreignVersion: ForeignCallSingle): {
|
|
50
|
+
values: (string | ForeignCallArray)[];
|
|
51
|
+
};
|
|
33
52
|
utilityGetRandomField(): {
|
|
34
53
|
values: (string | ForeignCallArray)[];
|
|
35
54
|
};
|
|
@@ -179,9 +198,9 @@ export declare class TXEService {
|
|
|
179
198
|
avmOpcodeTimestamp(): Promise<{
|
|
180
199
|
values: (string | ForeignCallArray)[];
|
|
181
200
|
}>;
|
|
182
|
-
avmOpcodeIsStaticCall(): {
|
|
201
|
+
avmOpcodeIsStaticCall(): Promise<{
|
|
183
202
|
values: (string | ForeignCallArray)[];
|
|
184
|
-
}
|
|
203
|
+
}>;
|
|
185
204
|
avmOpcodeChainId(): Promise<{
|
|
186
205
|
values: (string | ForeignCallArray)[];
|
|
187
206
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_service.d.ts","sourceRoot":"","sources":["../../src/txe_service/txe_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAa,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,KAAK,gBAAgB,EAAkC,MAAM,mBAAmB,CAAC;AAI1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAYvB,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"txe_service.d.ts","sourceRoot":"","sources":["../../src/txe_service/txe_service.ts"],"names":[],"mappings":"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"}
|