@aztec/txe 0.0.1-commit.c949de6bc → 0.0.1-commit.cbf2c2d5d
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 +22 -21
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +31 -26
- package/dest/rpc_translator.d.ts +87 -82
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +260 -150
- package/dest/state_machine/archiver.d.ts +3 -3
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +5 -7
- package/dest/state_machine/index.d.ts +4 -2
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +7 -3
- package/dest/state_machine/mock_epoch_cache.d.ts +17 -3
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +32 -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 +4 -3
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +18 -9
- package/dest/util/encoding.d.ts +69 -1
- package/dest/util/encoding.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.d.ts +1 -1
- package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.js +1 -3
- 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 +29 -24
- package/src/rpc_translator.ts +289 -172
- package/src/state_machine/archiver.ts +5 -5
- package/src/state_machine/index.ts +6 -1
- package/src/state_machine/mock_epoch_cache.ts +42 -3
- package/src/state_machine/synchronizer.ts +4 -4
- package/src/txe_session.ts +17 -4
- package/src/util/txe_public_contract_data_source.ts +0 -2
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;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import type { KeyStore } from '@aztec/key-store';
|
|
4
|
-
import { AddressStore, CapsuleStore, type ContractStore, NoteStore, PrivateEventStore, RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from '@aztec/pxe/server';
|
|
4
|
+
import { AddressStore, CapsuleStore, type ContractStore, type ContractSyncService, NoteStore, PrivateEventStore, RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from '@aztec/pxe/server';
|
|
5
5
|
import { type IMiscOracle } from '@aztec/pxe/simulator';
|
|
6
6
|
import { type ContractArtifact, EventSelector, FunctionSelector } from '@aztec/stdlib/abi';
|
|
7
7
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
@@ -28,38 +28,39 @@ export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecut
|
|
|
28
28
|
private version;
|
|
29
29
|
private chainId;
|
|
30
30
|
private authwits;
|
|
31
|
+
private readonly contractSyncService;
|
|
31
32
|
isMisc: true;
|
|
32
33
|
isTxe: true;
|
|
33
34
|
private logger;
|
|
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
|
+
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>, contractSyncService: ContractSyncService);
|
|
36
|
+
assertCompatibleOracleVersion(version: number): void;
|
|
37
|
+
getRandomField(): Fr;
|
|
38
|
+
log(level: number, message: string, fields: Fr[]): Promise<void>;
|
|
39
|
+
getDefaultAddress(): AztecAddress;
|
|
40
|
+
getNextBlockNumber(): Promise<BlockNumber>;
|
|
41
|
+
getNextBlockTimestamp(): Promise<bigint>;
|
|
42
|
+
getLastBlockTimestamp(): Promise<bigint>;
|
|
43
|
+
getLastTxEffects(): Promise<{
|
|
43
44
|
txHash: TxHash;
|
|
44
45
|
noteHashes: Fr[];
|
|
45
46
|
nullifiers: Fr[];
|
|
46
47
|
}>;
|
|
47
48
|
syncContractNonOracleMethod(contractAddress: AztecAddress, scope: AztecAddress, jobId: string): Promise<void>;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
getPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
|
|
50
|
+
advanceBlocksBy(blocks: number): Promise<void>;
|
|
51
|
+
advanceTimestampBy(duration: UInt64): void;
|
|
52
|
+
deploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<void>;
|
|
53
|
+
addAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
|
|
54
|
+
createAccount(secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
|
|
55
|
+
addAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
|
|
55
56
|
mineBlock(options?: {
|
|
56
57
|
nullifiers?: Fr[];
|
|
57
58
|
}): Promise<void>;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
privateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash: Fr | undefined, isStaticCall: boolean | undefined, jobId: string): Promise<Fr[]>;
|
|
60
|
+
publicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
|
|
61
|
+
executeUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string): Promise<Fr[]>;
|
|
61
62
|
private executeUtilityCall;
|
|
62
63
|
close(): [bigint, Map<string, AuthWitness>];
|
|
63
64
|
private getLastBlockNumber;
|
|
64
65
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV90b3BfbGV2ZWxfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3RvcF9sZXZlbF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxhQUFhLEVBQ2xCLEtBQUssbUJBQW1CLEVBQ3hCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFFbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBSUwsS0FBSyxXQUFXLEVBTWpCLE1BQU0sc0JBQXNCLENBQUM7QUFnQjlCLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFFLGFBQWEsRUFBZ0IsZ0JBQWdCLEVBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFDdkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSywyQkFBMkIsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQVlqRyxPQUFPLEVBU0wsTUFBTSxFQUVQLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJbEQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHcEUsT0FBTyxL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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;
|
|
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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"}
|
|
@@ -40,10 +40,11 @@ export class TXEOracleTopLevelContext {
|
|
|
40
40
|
version;
|
|
41
41
|
chainId;
|
|
42
42
|
authwits;
|
|
43
|
+
contractSyncService;
|
|
43
44
|
isMisc;
|
|
44
45
|
isTxe;
|
|
45
46
|
logger;
|
|
46
|
-
constructor(stateMachine, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, nextBlockTimestamp, version, chainId, authwits){
|
|
47
|
+
constructor(stateMachine, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, nextBlockTimestamp, version, chainId, authwits, contractSyncService){
|
|
47
48
|
this.stateMachine = stateMachine;
|
|
48
49
|
this.contractStore = contractStore;
|
|
49
50
|
this.noteStore = noteStore;
|
|
@@ -59,23 +60,24 @@ export class TXEOracleTopLevelContext {
|
|
|
59
60
|
this.version = version;
|
|
60
61
|
this.chainId = chainId;
|
|
61
62
|
this.authwits = authwits;
|
|
63
|
+
this.contractSyncService = contractSyncService;
|
|
62
64
|
this.isMisc = true;
|
|
63
65
|
this.isTxe = true;
|
|
64
66
|
this.logger = createLogger('txe:top_level_context');
|
|
65
67
|
this.logger.debug('Entering Top Level Context');
|
|
66
68
|
}
|
|
67
|
-
|
|
69
|
+
assertCompatibleOracleVersion(version) {
|
|
68
70
|
if (version !== ORACLE_VERSION) {
|
|
69
71
|
throw new Error(`Incompatible oracle version. TXE is using version '${ORACLE_VERSION}', but got a request for '${version}'.`);
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
// This is typically only invoked in private contexts, but it is convenient to also have it in top-level for testing
|
|
73
75
|
// setup.
|
|
74
|
-
|
|
76
|
+
getRandomField() {
|
|
75
77
|
return Fr.random();
|
|
76
78
|
}
|
|
77
79
|
// We instruct users to debug contracts via this oracle, so it makes sense that they'd expect it to also work in tests
|
|
78
|
-
|
|
80
|
+
log(level, message, fields) {
|
|
79
81
|
if (!LogLevels[level]) {
|
|
80
82
|
throw new Error(`Invalid log level: ${level}`);
|
|
81
83
|
}
|
|
@@ -85,19 +87,19 @@ export class TXEOracleTopLevelContext {
|
|
|
85
87
|
});
|
|
86
88
|
return Promise.resolve();
|
|
87
89
|
}
|
|
88
|
-
|
|
90
|
+
getDefaultAddress() {
|
|
89
91
|
return DEFAULT_ADDRESS;
|
|
90
92
|
}
|
|
91
|
-
async
|
|
93
|
+
async getNextBlockNumber() {
|
|
92
94
|
return BlockNumber(await this.getLastBlockNumber() + 1);
|
|
93
95
|
}
|
|
94
|
-
|
|
96
|
+
getNextBlockTimestamp() {
|
|
95
97
|
return Promise.resolve(this.nextBlockTimestamp);
|
|
96
98
|
}
|
|
97
|
-
async
|
|
99
|
+
async getLastBlockTimestamp() {
|
|
98
100
|
return (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.timestamp;
|
|
99
101
|
}
|
|
100
|
-
async
|
|
102
|
+
async getLastTxEffects() {
|
|
101
103
|
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
102
104
|
const block = await this.stateMachine.archiver.getBlock(latestBlockNumber);
|
|
103
105
|
if (block.body.txEffects.length != 1) {
|
|
@@ -113,7 +115,7 @@ export class TXEOracleTopLevelContext {
|
|
|
113
115
|
}
|
|
114
116
|
async syncContractNonOracleMethod(contractAddress, scope, jobId) {
|
|
115
117
|
if (contractAddress.equals(DEFAULT_ADDRESS)) {
|
|
116
|
-
this.logger.debug(`Skipping sync in
|
|
118
|
+
this.logger.debug(`Skipping sync in getPrivateEvents because the events correspond to the default address.`);
|
|
117
119
|
return;
|
|
118
120
|
}
|
|
119
121
|
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
@@ -123,7 +125,7 @@ export class TXEOracleTopLevelContext {
|
|
|
123
125
|
scope
|
|
124
126
|
]);
|
|
125
127
|
}
|
|
126
|
-
async
|
|
128
|
+
async getPrivateEvents(selector, contractAddress, scope) {
|
|
127
129
|
return (await this.privateEventStore.getPrivateEvents(selector, {
|
|
128
130
|
contractAddress,
|
|
129
131
|
scopes: [
|
|
@@ -133,17 +135,17 @@ export class TXEOracleTopLevelContext {
|
|
|
133
135
|
toBlock: await this.getLastBlockNumber() + 1
|
|
134
136
|
})).map((e)=>e.packedEvent);
|
|
135
137
|
}
|
|
136
|
-
async
|
|
138
|
+
async advanceBlocksBy(blocks) {
|
|
137
139
|
this.logger.debug(`time traveling ${blocks} blocks`);
|
|
138
140
|
for(let i = 0; i < blocks; i++){
|
|
139
141
|
await this.mineBlock();
|
|
140
142
|
}
|
|
141
143
|
}
|
|
142
|
-
|
|
144
|
+
advanceTimestampBy(duration) {
|
|
143
145
|
this.logger.debug(`time traveling ${duration} seconds`);
|
|
144
146
|
this.nextBlockTimestamp += duration;
|
|
145
147
|
}
|
|
146
|
-
async
|
|
148
|
+
async deploy(artifact, instance, secret) {
|
|
147
149
|
// Emit deployment nullifier
|
|
148
150
|
await this.mineBlock({
|
|
149
151
|
nullifiers: [
|
|
@@ -151,14 +153,14 @@ export class TXEOracleTopLevelContext {
|
|
|
151
153
|
]
|
|
152
154
|
});
|
|
153
155
|
if (!secret.equals(Fr.ZERO)) {
|
|
154
|
-
await this.
|
|
156
|
+
await this.addAccount(artifact, instance, secret);
|
|
155
157
|
} else {
|
|
156
158
|
await this.contractStore.addContractInstance(instance);
|
|
157
159
|
await this.contractStore.addContractArtifact(artifact);
|
|
158
160
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
159
161
|
}
|
|
160
162
|
}
|
|
161
|
-
async
|
|
163
|
+
async addAccount(artifact, instance, secret) {
|
|
162
164
|
const partialAddress = await computePartialAddress(instance);
|
|
163
165
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
164
166
|
await this.contractStore.addContractInstance(instance);
|
|
@@ -169,7 +171,7 @@ export class TXEOracleTopLevelContext {
|
|
|
169
171
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
170
172
|
return completeAddress;
|
|
171
173
|
}
|
|
172
|
-
async
|
|
174
|
+
async createAccount(secret) {
|
|
173
175
|
// This is a foot gun !
|
|
174
176
|
const completeAddress = await this.keyStore.addAccount(secret, secret);
|
|
175
177
|
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
@@ -177,7 +179,7 @@ export class TXEOracleTopLevelContext {
|
|
|
177
179
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
178
180
|
return completeAddress;
|
|
179
181
|
}
|
|
180
|
-
async
|
|
182
|
+
async addAuthWitness(address, messageHash) {
|
|
181
183
|
const account = await this.accountStore.getAccount(address);
|
|
182
184
|
const privateKey = await this.keyStore.getMasterSecretKey(account.publicKeys.masterIncomingViewingPublicKey);
|
|
183
185
|
const schnorr = new Schnorr();
|
|
@@ -188,7 +190,7 @@ export class TXEOracleTopLevelContext {
|
|
|
188
190
|
this.authwits.set(authWitness.requestHash.toString(), authWitness);
|
|
189
191
|
}
|
|
190
192
|
async mineBlock(options = {}) {
|
|
191
|
-
const blockNumber = await this.
|
|
193
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
192
194
|
const txEffect = TxEffect.empty();
|
|
193
195
|
txEffect.nullifiers = [
|
|
194
196
|
getSingleTxBlockRequestHash(blockNumber),
|
|
@@ -210,7 +212,7 @@ export class TXEOracleTopLevelContext {
|
|
|
210
212
|
this.logger.info(`Created block ${blockNumber} with timestamp ${block.header.globalVariables.timestamp}`);
|
|
211
213
|
await this.stateMachine.handleL2Block(block);
|
|
212
214
|
}
|
|
213
|
-
async
|
|
215
|
+
async privateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false, jobId) {
|
|
214
216
|
this.logger.verbose(`Executing external function ${await this.contractStore.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
215
217
|
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
216
218
|
if (!artifact) {
|
|
@@ -228,7 +230,7 @@ export class TXEOracleTopLevelContext {
|
|
|
228
230
|
};
|
|
229
231
|
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
230
232
|
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, utilityExecutor, blockHeader, jobId, effectiveScopes);
|
|
231
|
-
const blockNumber = await this.
|
|
233
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
232
234
|
const callContext = new CallContext(from, targetContractAddress, functionSelector, isStaticCall);
|
|
233
235
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
234
236
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
@@ -274,7 +276,8 @@ export class TXEOracleTopLevelContext {
|
|
|
274
276
|
// In TXE, the typical transaction entrypoint is skipped, so we need to simulate the actions that such a
|
|
275
277
|
// contract would perform, including setting senderForTags.
|
|
276
278
|
senderForTags: from,
|
|
277
|
-
simulator
|
|
279
|
+
simulator,
|
|
280
|
+
messageContextService: this.stateMachine.messageContextService
|
|
278
281
|
});
|
|
279
282
|
// 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
283
|
let result;
|
|
@@ -287,7 +290,7 @@ export class TXEOracleTopLevelContext {
|
|
|
287
290
|
r.publicInputs.publicTeardownCallRequest
|
|
288
291
|
]));
|
|
289
292
|
const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
|
|
290
|
-
const calldata = await privateExecutionOracle.
|
|
293
|
+
const calldata = await privateExecutionOracle.loadFromExecutionCache(r.calldataHash);
|
|
291
294
|
return new HashedValues(calldata, r.calldataHash);
|
|
292
295
|
}));
|
|
293
296
|
noteCache.finish();
|
|
@@ -367,9 +370,9 @@ export class TXEOracleTopLevelContext {
|
|
|
367
370
|
await forkedWorldTrees.close();
|
|
368
371
|
return executionResult.returnValues ?? [];
|
|
369
372
|
}
|
|
370
|
-
async
|
|
373
|
+
async publicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
371
374
|
this.logger.verbose(`Executing public function ${await this.contractStore.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
372
|
-
const blockNumber = await this.
|
|
375
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
373
376
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
374
377
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
375
378
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
@@ -461,7 +464,7 @@ export class TXEOracleTopLevelContext {
|
|
|
461
464
|
await forkedWorldTrees.close();
|
|
462
465
|
return returnValues ?? [];
|
|
463
466
|
}
|
|
464
|
-
async
|
|
467
|
+
async executeUtilityFunction(targetContractAddress, functionSelector, args, jobId) {
|
|
465
468
|
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
466
469
|
if (!artifact) {
|
|
467
470
|
throw new Error(`Cannot call ${functionSelector} as there is no artifact found at ${targetContractAddress}.`);
|
|
@@ -508,6 +511,8 @@ export class TXEOracleTopLevelContext {
|
|
|
508
511
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
509
512
|
capsuleStore: this.capsuleStore,
|
|
510
513
|
privateEventStore: this.privateEventStore,
|
|
514
|
+
messageContextService: this.stateMachine.messageContextService,
|
|
515
|
+
contractSyncService: this.contractSyncService,
|
|
511
516
|
jobId,
|
|
512
517
|
scopes
|
|
513
518
|
});
|