@aztec/txe 4.1.0-rc.3 → 4.2.0-nightly.20260319
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 +28 -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 +19 -19
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +27 -25
- package/dest/rpc_translator.d.ts +84 -82
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +237 -149
- 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 +1 -1
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +7 -4
- package/package.json +15 -15
- package/src/index.ts +8 -5
- package/src/oracle/interfaces.ts +27 -31
- package/src/oracle/txe_oracle_public_context.ts +12 -12
- package/src/oracle/txe_oracle_top_level_context.ts +26 -24
- package/src/rpc_translator.ts +262 -168
- package/src/state_machine/index.ts +5 -1
- package/src/state_machine/synchronizer.ts +4 -4
- package/src/txe_session.ts +6 -3
package/dest/index.d.ts
CHANGED
|
@@ -5,4 +5,4 @@ import type { Logger } from '@aztec/foundation/log';
|
|
|
5
5
|
* @returns A TXE RPC server.
|
|
6
6
|
*/
|
|
7
7
|
export declare function createTXERpcServer(logger: Logger): import("@aztec/foundation/json-rpc/server").SafeJsonRpcServer;
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXFRcEQ7Ozs7R0FJRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxpRUFJaEQifQ==
|
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAqQpD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,iEAIhD"}
|
package/dest/index.js
CHANGED
|
@@ -17,7 +17,7 @@ import { readFile, readdir } from 'fs/promises';
|
|
|
17
17
|
import { join, parse } from 'path';
|
|
18
18
|
import { z } from 'zod';
|
|
19
19
|
import { TXESession } from './txe_session.js';
|
|
20
|
-
import { ForeignCallArgsSchema, ForeignCallResultSchema, fromArray, fromSingle, toSingle } from './util/encoding.js';
|
|
20
|
+
import { ForeignCallArgsSchema, ForeignCallResultSchema, addressFromSingle, fromArray, fromSingle, toSingle } from './util/encoding.js';
|
|
21
21
|
const sessions = new Map();
|
|
22
22
|
/*
|
|
23
23
|
* TXE typically has to load the same contract artifacts over and over again for multiple tests,
|
|
@@ -59,6 +59,8 @@ class TXEDispatcher {
|
|
|
59
59
|
const [contractPath, initializer] = inputs.slice(0, 2).map((input)=>fromArray(input).map((char)=>String.fromCharCode(char.toNumber())).join(''));
|
|
60
60
|
const decodedArgs = fromArray(inputs[3]);
|
|
61
61
|
const secret = fromSingle(inputs[4]);
|
|
62
|
+
const salt = fromSingle(inputs[5]);
|
|
63
|
+
const deployer = addressFromSingle(inputs[6]);
|
|
62
64
|
const publicKeys = secret.equals(Fr.ZERO) ? PublicKeys.default() : (await deriveKeys(secret)).publicKeys;
|
|
63
65
|
const publicKeysHash = await publicKeys.hash();
|
|
64
66
|
let artifactPath = '';
|
|
@@ -84,7 +86,7 @@ class TXEDispatcher {
|
|
|
84
86
|
artifactPath = join(rootPath, './target', `${packageName}-${contractFilename}.json`);
|
|
85
87
|
}
|
|
86
88
|
const fileHash = await this.fastHashFile(artifactPath);
|
|
87
|
-
const cacheKey = `${contractDirectory ?? ''}-${contractFilename}-${initializer}-${decodedArgs.map((arg)=>arg.toString()).join('-')}-${publicKeysHash}-${fileHash}`;
|
|
89
|
+
const cacheKey = `${contractDirectory ?? ''}-${contractFilename}-${initializer}-${decodedArgs.map((arg)=>arg.toString()).join('-')}-${publicKeysHash}-${salt}-${deployer}-${fileHash}`;
|
|
88
90
|
let instance;
|
|
89
91
|
let artifact;
|
|
90
92
|
if (TXEArtifactsCache.has(cacheKey)) {
|
|
@@ -106,10 +108,10 @@ class TXEDispatcher {
|
|
|
106
108
|
const computedInstance = await getContractInstanceFromInstantiationParams(computedArtifact, {
|
|
107
109
|
constructorArgs: decodedArgs,
|
|
108
110
|
skipArgsDecoding: true,
|
|
109
|
-
salt
|
|
111
|
+
salt,
|
|
110
112
|
publicKeys,
|
|
111
113
|
constructorArtifact: initializer ? initializer : undefined,
|
|
112
|
-
deployer
|
|
114
|
+
deployer
|
|
113
115
|
});
|
|
114
116
|
const result = {
|
|
115
117
|
artifact: computedArtifact,
|
|
@@ -189,12 +191,12 @@ class TXEDispatcher {
|
|
|
189
191
|
sessions.set(sessionId, await TXESession.init(this.contractStore));
|
|
190
192
|
}
|
|
191
193
|
switch(functionName){
|
|
192
|
-
case '
|
|
194
|
+
case 'aztec_txe_deploy':
|
|
193
195
|
{
|
|
194
196
|
await this.#processDeployInputs(callData);
|
|
195
197
|
break;
|
|
196
198
|
}
|
|
197
|
-
case '
|
|
199
|
+
case 'aztec_txe_addAccount':
|
|
198
200
|
{
|
|
199
201
|
await this.#processAddAccountInputs(callData);
|
|
200
202
|
break;
|
|
@@ -16,43 +16,43 @@ import type { UInt64 } from '@aztec/stdlib/types';
|
|
|
16
16
|
*/
|
|
17
17
|
export interface IAvmExecutionOracle {
|
|
18
18
|
isAvm: true;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
address(): Promise<AztecAddress>;
|
|
20
|
+
sender(): Promise<AztecAddress>;
|
|
21
|
+
blockNumber(): Promise<BlockNumber>;
|
|
22
|
+
timestamp(): Promise<bigint>;
|
|
23
|
+
isStaticCall(): Promise<boolean>;
|
|
24
|
+
chainId(): Promise<Fr>;
|
|
25
|
+
version(): Promise<Fr>;
|
|
26
|
+
emitNullifier(nullifier: Fr): Promise<void>;
|
|
27
|
+
emitNoteHash(noteHash: Fr): Promise<void>;
|
|
28
|
+
nullifierExists(siloedNullifier: Fr): Promise<boolean>;
|
|
29
|
+
storageWrite(slot: Fr, value: Fr): Promise<void>;
|
|
30
|
+
storageRead(slot: Fr, contractAddress: AztecAddress): Promise<Fr>;
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Oracle methods associated with the execution of an Aztec Noir test.
|
|
34
34
|
*/
|
|
35
35
|
export interface ITxeExecutionOracle {
|
|
36
36
|
isTxe: true;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
getDefaultAddress(): AztecAddress;
|
|
38
|
+
getNextBlockNumber(): Promise<BlockNumber>;
|
|
39
|
+
getNextBlockTimestamp(): Promise<UInt64>;
|
|
40
|
+
advanceBlocksBy(blocks: number): Promise<void>;
|
|
41
|
+
advanceTimestampBy(duration: UInt64): void;
|
|
42
|
+
deploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: Fr): Promise<void>;
|
|
43
|
+
createAccount(secret: Fr): Promise<CompleteAddress>;
|
|
44
|
+
addAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<CompleteAddress>;
|
|
45
|
+
addAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
|
|
46
|
+
getLastBlockTimestamp(): Promise<bigint>;
|
|
47
|
+
getLastTxEffects(): Promise<{
|
|
48
48
|
txHash: TxHash;
|
|
49
49
|
noteHashes: Fr[];
|
|
50
50
|
nullifiers: Fr[];
|
|
51
51
|
}>;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
getPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
|
|
53
|
+
privateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], argsHash: Fr, isStaticCall: boolean, jobId: string): Promise<Fr[]>;
|
|
54
|
+
executeUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string): Promise<Fr[]>;
|
|
55
|
+
publicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
|
|
56
56
|
syncContractNonOracleMethod(contractAddress: AztecAddress, scope: AztecAddress, jobId: string): Promise<void>;
|
|
57
57
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVFsRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUM7SUFFWixPQUFPLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwQyxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLFlBQVksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/oracle/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQlD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,IAAI,CAAC;IAEZ,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/oracle/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,19 +16,19 @@ export declare class TXEOraclePublicContext implements IAvmExecutionOracle {
|
|
|
16
16
|
private transientSiloedNullifiers;
|
|
17
17
|
private publicDataWrites;
|
|
18
18
|
constructor(contractAddress: AztecAddress, forkedWorldTrees: MerkleTreeWriteOperations, txRequestHash: Fr, globalVariables: GlobalVariables);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
address(): Promise<AztecAddress>;
|
|
20
|
+
sender(): Promise<AztecAddress>;
|
|
21
|
+
blockNumber(): Promise<BlockNumber>;
|
|
22
|
+
timestamp(): Promise<bigint>;
|
|
23
|
+
isStaticCall(): Promise<boolean>;
|
|
24
|
+
chainId(): Promise<Fr>;
|
|
25
|
+
version(): Promise<Fr>;
|
|
26
|
+
emitNullifier(nullifier: Fr): Promise<void>;
|
|
27
|
+
emitNoteHash(noteHash: Fr): Promise<void>;
|
|
28
|
+
nullifierExists(siloedNullifier: Fr): Promise<boolean>;
|
|
29
|
+
storageWrite(slot: Fr, value: Fr): Promise<void>;
|
|
30
|
+
storageRead(slot: Fr, contractAddress: AztecAddress): Promise<Fr>;
|
|
31
31
|
close(): Promise<L2Block>;
|
|
32
32
|
private makeTxEffect;
|
|
33
33
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV9wdWJsaWNfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3B1YmxpY19jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFFTCxLQUFLLHlCQUF5QixFQUcvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFHckUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxxQkFBYSxzQkFBdUIsWUFBVyxtQkFBbUI7SUFTOUQsT0FBTyxDQUFDLGVBQWU7SUFDdkIsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsZUFBZTtJQVh6QixLQUFLLE9BQWlCO0lBRXRCLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLHlCQUF5QixDQUFZO0lBQzdDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBWTtJQUM3QyxPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELFlBQ1UsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQzNDLGFBQWEsRUFBRSxFQUFFLEVBQ2pCLGVBQWUsRUFBRSxlQUFlLEVBU3pDO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FFL0I7SUFFRCxNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUU5QjtJQUVELFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRWxDO0lBRUQsU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFM0I7SUFFRCxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUUvQjtJQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLENBRXJCO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFckI7SUFFSyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsaUJBR2hDO0lBRUssWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLGlCQUk5QjtJQUVLLGVBQWUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FPM0Q7SUFFSyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxpQkFVckM7SUFFSyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FxQnRFO0lBRUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FrQjlCO0lBRUQsT0FBTyxDQUFDLFlBQVk7Q0FhckIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_oracle_public_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_public_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAoB,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,qBAAa,sBAAuB,YAAW,mBAAmB;IAS9D,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,eAAe;IAXzB,KAAK,OAAiB;IAEtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,YACU,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,yBAAyB,EAC3C,aAAa,EAAE,EAAE,EACjB,eAAe,EAAE,eAAe,EASzC;IAED,
|
|
1
|
+
{"version":3,"file":"txe_oracle_public_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_public_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAoB,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,qBAAa,sBAAuB,YAAW,mBAAmB;IAS9D,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,eAAe;IAXzB,KAAK,OAAiB;IAEtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,YACU,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,yBAAyB,EAC3C,aAAa,EAAE,EAAE,EACjB,eAAe,EAAE,eAAe,EASzC;IAED,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAE/B;IAED,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAE9B;IAED,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAElC;IAED,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAE3B;IAED,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;IAED,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAErB;IAED,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAErB;IAEK,aAAa,CAAC,SAAS,EAAE,EAAE,iBAGhC;IAEK,YAAY,CAAC,QAAQ,EAAE,EAAE,iBAI9B;IAEK,eAAe,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;IAEK,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,iBAUrC;IAEK,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAqBtE;IAEK,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAkB9B;IAED,OAAO,CAAC,YAAY;CAarB"}
|
|
@@ -32,44 +32,44 @@ export class TXEOraclePublicContext {
|
|
|
32
32
|
timestamp: globalVariables.timestamp
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
address() {
|
|
36
36
|
return Promise.resolve(this.contractAddress);
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
sender() {
|
|
39
39
|
return Promise.resolve(AztecAddress.ZERO); // todo: change?
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
blockNumber() {
|
|
42
42
|
return Promise.resolve(this.globalVariables.blockNumber);
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
timestamp() {
|
|
45
45
|
return Promise.resolve(this.globalVariables.timestamp);
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
isStaticCall() {
|
|
48
48
|
return Promise.resolve(false);
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
chainId() {
|
|
51
51
|
return Promise.resolve(this.globalVariables.chainId);
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
version() {
|
|
54
54
|
return Promise.resolve(this.globalVariables.version);
|
|
55
55
|
}
|
|
56
|
-
async
|
|
56
|
+
async emitNullifier(nullifier) {
|
|
57
57
|
const siloedNullifier = await siloNullifier(this.contractAddress, nullifier);
|
|
58
58
|
this.transientSiloedNullifiers.push(siloedNullifier);
|
|
59
59
|
}
|
|
60
|
-
async
|
|
60
|
+
async emitNoteHash(noteHash) {
|
|
61
61
|
const siloedNoteHash = await siloNoteHash(this.contractAddress, noteHash);
|
|
62
62
|
// TODO: make the note hash unique - they are only siloed right now
|
|
63
63
|
this.transientUniqueNoteHashes.push(siloedNoteHash);
|
|
64
64
|
}
|
|
65
|
-
async
|
|
65
|
+
async nullifierExists(siloedNullifier) {
|
|
66
66
|
const treeIndex = (await this.forkedWorldTrees.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, [
|
|
67
67
|
siloedNullifier.toBuffer()
|
|
68
68
|
]))[0];
|
|
69
69
|
const transientIndex = this.transientSiloedNullifiers.find((n)=>n.equals(siloedNullifier));
|
|
70
70
|
return treeIndex !== undefined || transientIndex !== undefined;
|
|
71
71
|
}
|
|
72
|
-
async
|
|
72
|
+
async storageWrite(slot, value) {
|
|
73
73
|
this.logger.debug('AVM storage write', {
|
|
74
74
|
slot,
|
|
75
75
|
value
|
|
@@ -80,7 +80,7 @@ export class TXEOraclePublicContext {
|
|
|
80
80
|
new PublicDataTreeLeaf(dataWrite.leafSlot, dataWrite.value).toBuffer()
|
|
81
81
|
]);
|
|
82
82
|
}
|
|
83
|
-
async
|
|
83
|
+
async storageRead(slot, contractAddress) {
|
|
84
84
|
const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, slot);
|
|
85
85
|
const lowLeafResult = await this.forkedWorldTrees.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot.toBigInt());
|
|
86
86
|
const value = !lowLeafResult || !lowLeafResult.alreadyPresent ? Fr.ZERO : (await this.forkedWorldTrees.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index)).leaf.value;
|
|
@@ -32,34 +32,34 @@ export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecut
|
|
|
32
32
|
isTxe: true;
|
|
33
33
|
private logger;
|
|
34
34
|
constructor(stateMachine: TXEStateMachine, contractStore: ContractStore, noteStore: NoteStore, keyStore: KeyStore, addressStore: AddressStore, accountStore: TXEAccountStore, senderTaggingStore: SenderTaggingStore, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, capsuleStore: CapsuleStore, privateEventStore: PrivateEventStore, nextBlockTimestamp: bigint, version: Fr, chainId: Fr, authwits: Map<string, AuthWitness>);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
assertCompatibleOracleVersion(version: number): void;
|
|
36
|
+
getRandomField(): Fr;
|
|
37
|
+
log(level: number, message: string, fields: Fr[]): Promise<void>;
|
|
38
|
+
getDefaultAddress(): AztecAddress;
|
|
39
|
+
getNextBlockNumber(): Promise<BlockNumber>;
|
|
40
|
+
getNextBlockTimestamp(): Promise<bigint>;
|
|
41
|
+
getLastBlockTimestamp(): Promise<bigint>;
|
|
42
|
+
getLastTxEffects(): Promise<{
|
|
43
43
|
txHash: TxHash;
|
|
44
44
|
noteHashes: Fr[];
|
|
45
45
|
nullifiers: Fr[];
|
|
46
46
|
}>;
|
|
47
47
|
syncContractNonOracleMethod(contractAddress: AztecAddress, scope: AztecAddress, jobId: string): Promise<void>;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
getPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
|
|
49
|
+
advanceBlocksBy(blocks: number): Promise<void>;
|
|
50
|
+
advanceTimestampBy(duration: UInt64): void;
|
|
51
|
+
deploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<void>;
|
|
52
|
+
addAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
|
|
53
|
+
createAccount(secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
|
|
54
|
+
addAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
|
|
55
55
|
mineBlock(options?: {
|
|
56
56
|
nullifiers?: Fr[];
|
|
57
57
|
}): Promise<void>;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
privateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash: Fr | undefined, isStaticCall: boolean | undefined, jobId: string): Promise<Fr[]>;
|
|
59
|
+
publicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
|
|
60
|
+
executeUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string): Promise<Fr[]>;
|
|
61
61
|
private executeUtilityCall;
|
|
62
62
|
close(): [bigint, Map<string, AuthWitness>];
|
|
63
63
|
private getLastBlockNumber;
|
|
64
64
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV90b3BfbGV2ZWxfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3RvcF9sZXZlbF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxhQUFhLEVBQ2xCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFFbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBSUwsS0FBSyxXQUFXLEVBTWpCLE1BQU0sc0JBQXNCLENBQUM7QUFnQjlCLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFFLGFBQWEsRUFBZ0IsZ0JBQWdCLEVBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFDdkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSywyQkFBMkIsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQVlqRyxPQUFPLEVBU0wsTUFBTSxFQUVQLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJbEQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHcEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_oracle_top_level_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_top_level_context.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,aAAa,EAClB,SAAS,EAET,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,KAAK,WAAW,EAMjB,MAAM,sBAAsB,CAAC;AAgB9B,OAAO,EAAE,KAAK,gBAAgB,EAAE,aAAa,EAAgB,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,KAAK,2BAA2B,EAAyB,MAAM,wBAAwB,CAAC;AAYjG,OAAO,EASL,MAAM,EAEP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,qBAAa,wBAAyB,YAAW,WAAW,EAAE,mBAAmB;IAO7E,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IApBlB,MAAM,OAAiB;IACvB,KAAK,OAAiB;IAEtB,OAAO,CAAC,MAAM,CAAS;IAEvB,YACU,YAAY,EAAE,eAAe,EAC7B,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,eAAe,EAC7B,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAI3C;IAED,
|
|
1
|
+
{"version":3,"file":"txe_oracle_top_level_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_top_level_context.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,18 +64,18 @@ export class TXEOracleTopLevelContext {
|
|
|
64
64
|
this.logger = createLogger('txe:top_level_context');
|
|
65
65
|
this.logger.debug('Entering Top Level Context');
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
assertCompatibleOracleVersion(version) {
|
|
68
68
|
if (version !== ORACLE_VERSION) {
|
|
69
69
|
throw new Error(`Incompatible oracle version. TXE is using version '${ORACLE_VERSION}', but got a request for '${version}'.`);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
// This is typically only invoked in private contexts, but it is convenient to also have it in top-level for testing
|
|
73
73
|
// setup.
|
|
74
|
-
|
|
74
|
+
getRandomField() {
|
|
75
75
|
return Fr.random();
|
|
76
76
|
}
|
|
77
77
|
// We instruct users to debug contracts via this oracle, so it makes sense that they'd expect it to also work in tests
|
|
78
|
-
|
|
78
|
+
log(level, message, fields) {
|
|
79
79
|
if (!LogLevels[level]) {
|
|
80
80
|
throw new Error(`Invalid log level: ${level}`);
|
|
81
81
|
}
|
|
@@ -85,19 +85,19 @@ export class TXEOracleTopLevelContext {
|
|
|
85
85
|
});
|
|
86
86
|
return Promise.resolve();
|
|
87
87
|
}
|
|
88
|
-
|
|
88
|
+
getDefaultAddress() {
|
|
89
89
|
return DEFAULT_ADDRESS;
|
|
90
90
|
}
|
|
91
|
-
async
|
|
91
|
+
async getNextBlockNumber() {
|
|
92
92
|
return BlockNumber(await this.getLastBlockNumber() + 1);
|
|
93
93
|
}
|
|
94
|
-
|
|
94
|
+
getNextBlockTimestamp() {
|
|
95
95
|
return Promise.resolve(this.nextBlockTimestamp);
|
|
96
96
|
}
|
|
97
|
-
async
|
|
97
|
+
async getLastBlockTimestamp() {
|
|
98
98
|
return (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.timestamp;
|
|
99
99
|
}
|
|
100
|
-
async
|
|
100
|
+
async getLastTxEffects() {
|
|
101
101
|
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
102
102
|
const block = await this.stateMachine.archiver.getBlock(latestBlockNumber);
|
|
103
103
|
if (block.body.txEffects.length != 1) {
|
|
@@ -113,7 +113,7 @@ export class TXEOracleTopLevelContext {
|
|
|
113
113
|
}
|
|
114
114
|
async syncContractNonOracleMethod(contractAddress, scope, jobId) {
|
|
115
115
|
if (contractAddress.equals(DEFAULT_ADDRESS)) {
|
|
116
|
-
this.logger.debug(`Skipping sync in
|
|
116
|
+
this.logger.debug(`Skipping sync in getPrivateEvents because the events correspond to the default address.`);
|
|
117
117
|
return;
|
|
118
118
|
}
|
|
119
119
|
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
@@ -123,7 +123,7 @@ export class TXEOracleTopLevelContext {
|
|
|
123
123
|
scope
|
|
124
124
|
]);
|
|
125
125
|
}
|
|
126
|
-
async
|
|
126
|
+
async getPrivateEvents(selector, contractAddress, scope) {
|
|
127
127
|
return (await this.privateEventStore.getPrivateEvents(selector, {
|
|
128
128
|
contractAddress,
|
|
129
129
|
scopes: [
|
|
@@ -133,17 +133,17 @@ export class TXEOracleTopLevelContext {
|
|
|
133
133
|
toBlock: await this.getLastBlockNumber() + 1
|
|
134
134
|
})).map((e)=>e.packedEvent);
|
|
135
135
|
}
|
|
136
|
-
async
|
|
136
|
+
async advanceBlocksBy(blocks) {
|
|
137
137
|
this.logger.debug(`time traveling ${blocks} blocks`);
|
|
138
138
|
for(let i = 0; i < blocks; i++){
|
|
139
139
|
await this.mineBlock();
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
-
|
|
142
|
+
advanceTimestampBy(duration) {
|
|
143
143
|
this.logger.debug(`time traveling ${duration} seconds`);
|
|
144
144
|
this.nextBlockTimestamp += duration;
|
|
145
145
|
}
|
|
146
|
-
async
|
|
146
|
+
async deploy(artifact, instance, secret) {
|
|
147
147
|
// Emit deployment nullifier
|
|
148
148
|
await this.mineBlock({
|
|
149
149
|
nullifiers: [
|
|
@@ -151,14 +151,14 @@ export class TXEOracleTopLevelContext {
|
|
|
151
151
|
]
|
|
152
152
|
});
|
|
153
153
|
if (!secret.equals(Fr.ZERO)) {
|
|
154
|
-
await this.
|
|
154
|
+
await this.addAccount(artifact, instance, secret);
|
|
155
155
|
} else {
|
|
156
156
|
await this.contractStore.addContractInstance(instance);
|
|
157
157
|
await this.contractStore.addContractArtifact(artifact);
|
|
158
158
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
-
async
|
|
161
|
+
async addAccount(artifact, instance, secret) {
|
|
162
162
|
const partialAddress = await computePartialAddress(instance);
|
|
163
163
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
164
164
|
await this.contractStore.addContractInstance(instance);
|
|
@@ -169,7 +169,7 @@ export class TXEOracleTopLevelContext {
|
|
|
169
169
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
170
170
|
return completeAddress;
|
|
171
171
|
}
|
|
172
|
-
async
|
|
172
|
+
async createAccount(secret) {
|
|
173
173
|
// This is a foot gun !
|
|
174
174
|
const completeAddress = await this.keyStore.addAccount(secret, secret);
|
|
175
175
|
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
@@ -177,7 +177,7 @@ export class TXEOracleTopLevelContext {
|
|
|
177
177
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
178
178
|
return completeAddress;
|
|
179
179
|
}
|
|
180
|
-
async
|
|
180
|
+
async addAuthWitness(address, messageHash) {
|
|
181
181
|
const account = await this.accountStore.getAccount(address);
|
|
182
182
|
const privateKey = await this.keyStore.getMasterSecretKey(account.publicKeys.masterIncomingViewingPublicKey);
|
|
183
183
|
const schnorr = new Schnorr();
|
|
@@ -188,7 +188,7 @@ export class TXEOracleTopLevelContext {
|
|
|
188
188
|
this.authwits.set(authWitness.requestHash.toString(), authWitness);
|
|
189
189
|
}
|
|
190
190
|
async mineBlock(options = {}) {
|
|
191
|
-
const blockNumber = await this.
|
|
191
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
192
192
|
const txEffect = TxEffect.empty();
|
|
193
193
|
txEffect.nullifiers = [
|
|
194
194
|
getSingleTxBlockRequestHash(blockNumber),
|
|
@@ -210,7 +210,7 @@ export class TXEOracleTopLevelContext {
|
|
|
210
210
|
this.logger.info(`Created block ${blockNumber} with timestamp ${block.header.globalVariables.timestamp}`);
|
|
211
211
|
await this.stateMachine.handleL2Block(block);
|
|
212
212
|
}
|
|
213
|
-
async
|
|
213
|
+
async privateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false, jobId) {
|
|
214
214
|
this.logger.verbose(`Executing external function ${await this.contractStore.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
215
215
|
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
216
216
|
if (!artifact) {
|
|
@@ -228,7 +228,7 @@ export class TXEOracleTopLevelContext {
|
|
|
228
228
|
};
|
|
229
229
|
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
230
230
|
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, utilityExecutor, blockHeader, jobId, effectiveScopes);
|
|
231
|
-
const blockNumber = await this.
|
|
231
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
232
232
|
const callContext = new CallContext(from, targetContractAddress, functionSelector, isStaticCall);
|
|
233
233
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
234
234
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
@@ -274,7 +274,8 @@ export class TXEOracleTopLevelContext {
|
|
|
274
274
|
// In TXE, the typical transaction entrypoint is skipped, so we need to simulate the actions that such a
|
|
275
275
|
// contract would perform, including setting senderForTags.
|
|
276
276
|
senderForTags: from,
|
|
277
|
-
simulator
|
|
277
|
+
simulator,
|
|
278
|
+
messageContextService: this.stateMachine.messageContextService
|
|
278
279
|
});
|
|
279
280
|
// 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.
|
|
280
281
|
let result;
|
|
@@ -287,7 +288,7 @@ export class TXEOracleTopLevelContext {
|
|
|
287
288
|
r.publicInputs.publicTeardownCallRequest
|
|
288
289
|
]));
|
|
289
290
|
const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
|
|
290
|
-
const calldata = await privateExecutionOracle.
|
|
291
|
+
const calldata = await privateExecutionOracle.loadFromExecutionCache(r.calldataHash);
|
|
291
292
|
return new HashedValues(calldata, r.calldataHash);
|
|
292
293
|
}));
|
|
293
294
|
noteCache.finish();
|
|
@@ -367,9 +368,9 @@ export class TXEOracleTopLevelContext {
|
|
|
367
368
|
await forkedWorldTrees.close();
|
|
368
369
|
return executionResult.returnValues ?? [];
|
|
369
370
|
}
|
|
370
|
-
async
|
|
371
|
+
async publicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
371
372
|
this.logger.verbose(`Executing public function ${await this.contractStore.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
372
|
-
const blockNumber = await this.
|
|
373
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
373
374
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
374
375
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
375
376
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
@@ -461,7 +462,7 @@ export class TXEOracleTopLevelContext {
|
|
|
461
462
|
await forkedWorldTrees.close();
|
|
462
463
|
return returnValues ?? [];
|
|
463
464
|
}
|
|
464
|
-
async
|
|
465
|
+
async executeUtilityFunction(targetContractAddress, functionSelector, args, jobId) {
|
|
465
466
|
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
466
467
|
if (!artifact) {
|
|
467
468
|
throw new Error(`Cannot call ${functionSelector} as there is no artifact found at ${targetContractAddress}.`);
|
|
@@ -508,6 +509,7 @@ export class TXEOracleTopLevelContext {
|
|
|
508
509
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
509
510
|
capsuleStore: this.capsuleStore,
|
|
510
511
|
privateEventStore: this.privateEventStore,
|
|
512
|
+
messageContextService: this.stateMachine.messageContextService,
|
|
511
513
|
jobId,
|
|
512
514
|
scopes
|
|
513
515
|
});
|