@aztec/txe 0.0.1-commit.04852196a → 0.0.1-commit.04d373f
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/ContractClassRegistry-KKNT527R.js +3 -0
- package/dest/ContractClassRegistry-KKNT527R.js.map +7 -0
- package/dest/ContractInstanceRegistry-GSKBNL3Q.js +3 -0
- package/dest/ContractInstanceRegistry-GSKBNL3Q.js.map +7 -0
- package/dest/FeeJuice-GUJ5O6GB.js +3 -0
- package/dest/FeeJuice-GUJ5O6GB.js.map +7 -0
- package/dest/MultiCallEntrypoint-ZQPCKVKL.js +3 -0
- package/dest/MultiCallEntrypoint-ZQPCKVKL.js.map +7 -0
- package/dest/SchnorrAccount-QIXE5DXA.js +3 -0
- package/dest/SchnorrAccount-QIXE5DXA.js.map +7 -0
- package/dest/bin/check_txe_oracle_version.d.ts +2 -0
- package/dest/bin/check_txe_oracle_version.d.ts.map +1 -0
- package/dest/bin/check_txe_oracle_version.js +32 -0
- package/dest/bin/index.js +3 -30
- package/dest/bin/index.js.map +7 -0
- package/dest/chunk-BJVAAXNA.js +3 -0
- package/dest/chunk-BJVAAXNA.js.map +7 -0
- package/dest/chunk-DF6RMOC6.js +304 -0
- package/dest/chunk-DF6RMOC6.js.map +7 -0
- package/dest/chunk-PPJTNNUG.js +265 -0
- package/dest/chunk-PPJTNNUG.js.map +7 -0
- package/dest/constants.d.ts +3 -1
- package/dest/constants.d.ts.map +1 -1
- package/dest/constants.js +5 -0
- package/dest/dispatcher_pool.d.ts +67 -0
- package/dest/dispatcher_pool.d.ts.map +1 -0
- package/dest/dispatcher_pool.js +284 -0
- package/dest/index.d.ts +188 -7
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +155 -116
- package/dest/metafile.json +38147 -0
- package/dest/msgpackr_fr_extension.d.ts +2 -0
- package/dest/msgpackr_fr_extension.d.ts.map +1 -0
- package/dest/msgpackr_fr_extension.js +21 -0
- package/dest/oracle/interfaces.d.ts +15 -4
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +6 -1
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +15 -0
- package/dest/oracle/txe_oracle_top_level_context.d.ts +22 -6
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +106 -47
- package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
- package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
- package/dest/oracle/txe_private_execution_oracle.js +15 -0
- package/dest/rpc_server.d.ts +14 -0
- package/dest/rpc_server.d.ts.map +1 -0
- package/dest/rpc_server.js +78 -0
- package/dest/rpc_translator.d.ts +90 -34
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +396 -153
- package/dest/server.bundle.js +3 -0
- package/dest/server.bundle.js.map +7 -0
- package/dest/state_machine/archiver.d.ts +4 -4
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +22 -20
- package/dest/state_machine/dummy_p2p_client.d.ts +13 -7
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +16 -4
- package/dest/state_machine/global_variable_builder.d.ts +9 -4
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +9 -3
- package/dest/state_machine/index.d.ts +7 -3
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +23 -5
- package/dest/state_machine/mock_epoch_cache.d.ts +18 -3
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +35 -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 +4 -4
- package/dest/txe_oracle_version.d.ts +17 -0
- package/dest/txe_oracle_version.d.ts.map +1 -0
- package/dest/txe_oracle_version.js +14 -0
- package/dest/txe_session.d.ts +64 -6
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +157 -29
- package/dest/utils/encoding.d.ts +191 -0
- package/dest/utils/encoding.d.ts.map +1 -0
- package/dest/{util → utils}/encoding.js +7 -2
- package/dest/{util → utils}/expected_failure_error.d.ts +1 -1
- package/dest/utils/expected_failure_error.d.ts.map +1 -0
- package/dest/{util → utils}/txe_account_store.d.ts +1 -1
- package/dest/utils/txe_account_store.d.ts.map +1 -0
- package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
- package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
- package/dest/{util → utils}/txe_public_contract_data_source.js +1 -3
- package/dest/worker.bundle.js +3 -0
- package/dest/worker.bundle.js.map +7 -0
- package/dest/worker.d.ts +2 -0
- package/dest/worker.d.ts.map +1 -0
- package/dest/worker.js +92 -0
- package/package.json +37 -21
- package/src/bin/check_txe_oracle_version.ts +37 -0
- package/src/bin/index.ts +11 -2
- package/src/constants.ts +6 -0
- package/src/dispatcher_pool.ts +316 -0
- package/src/index.ts +172 -123
- package/src/msgpackr_fr_extension.ts +23 -0
- package/src/oracle/interfaces.ts +16 -3
- package/src/oracle/txe_oracle_public_context.ts +30 -0
- package/src/oracle/txe_oracle_top_level_context.ts +124 -55
- package/src/oracle/txe_private_execution_oracle.ts +30 -0
- package/src/rpc_server.ts +87 -0
- package/src/rpc_translator.ts +459 -222
- package/src/state_machine/archiver.ts +33 -18
- package/src/state_machine/dummy_p2p_client.ts +31 -11
- package/src/state_machine/global_variable_builder.ts +18 -3
- package/src/state_machine/index.ts +25 -6
- package/src/state_machine/mock_epoch_cache.ts +46 -3
- package/src/state_machine/synchronizer.ts +5 -5
- package/src/txe_oracle_version.ts +17 -0
- package/src/txe_session.ts +251 -31
- package/src/{util → utils}/encoding.ts +8 -2
- package/src/{util → utils}/txe_public_contract_data_source.ts +0 -2
- package/src/worker.ts +98 -0
- package/dest/util/encoding.d.ts +0 -720
- package/dest/util/encoding.d.ts.map +0 -1
- package/dest/util/expected_failure_error.d.ts.map +0 -1
- package/dest/util/txe_account_store.d.ts.map +0 -1
- package/dest/util/txe_public_contract_data_source.d.ts +0 -20
- package/dest/util/txe_public_contract_data_source.d.ts.map +0 -1
- /package/dest/{util → utils}/expected_failure_error.js +0 -0
- /package/dest/{util → utils}/txe_account_store.js +0 -0
- /package/src/{util → utils}/expected_failure_error.ts +0 -0
- /package/src/{util → utils}/txe_account_store.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msgpackr_fr_extension.d.ts","sourceRoot":"","sources":["../src/msgpackr_fr_extension.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { addExtension } from 'msgpackr';
|
|
3
|
+
// `@aztec/native/msgpack_channel` registers a msgpackr extension that packs `Fr` instances to
|
|
4
|
+
// their raw 32-byte buffer for the C++ world-state side to deserialize. Because `@aztec/native`
|
|
5
|
+
// is externalized in TXE's esbuild config (it loads a `.node` binary that can't be bundled),
|
|
6
|
+
// the `Fr` class the extension is keyed on belongs to the *external* `@aztec/foundation`
|
|
7
|
+
// module instance — a different class identity than the `Fr` bundled into the TXE worker /
|
|
8
|
+
// bin. msgpackr's extension match uses `instanceof`, so bundled `Fr` instances slip through
|
|
9
|
+
// and msgpackr falls back to `Fr.toJSON()` (returns `Fr.toString()` — a `0x...` hex string).
|
|
10
|
+
// The C++ side then sees a string where a 32-byte binary was expected and throws
|
|
11
|
+
// `msgpack::type_error` whose `what()` is literally `"std::bad_cast"`.
|
|
12
|
+
//
|
|
13
|
+
// Fix: register the same extension under the BUNDLED `Fr` class identity. msgpackr's extension
|
|
14
|
+
// table holds an entry per `Class`, so both Fr classes now resolve to the same `write` callback
|
|
15
|
+
// and produce the same wire format. Imported as a side-effect from `./index.js` so both the
|
|
16
|
+
// worker (via `./worker.ts`) and the main-thread RPC server (via `./rpc_server.ts`) get the
|
|
17
|
+
// registration before any `sendMessage` runs.
|
|
18
|
+
addExtension({
|
|
19
|
+
Class: Fr,
|
|
20
|
+
write: (fr)=>fr.toBuffer()
|
|
21
|
+
});
|
|
@@ -6,6 +6,8 @@ import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
|
6
6
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
7
7
|
import type { EventSelector, FunctionSelector } from '@aztec/stdlib/abi';
|
|
8
8
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
|
+
import type { GasSettings } from '@aztec/stdlib/gas';
|
|
10
|
+
import type { PrivateLog } from '@aztec/stdlib/logs';
|
|
9
11
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
10
12
|
/**
|
|
11
13
|
* Oracle methods associated with the execution of an Aztec #[external("public")] function.
|
|
@@ -28,6 +30,11 @@ export interface IAvmExecutionOracle {
|
|
|
28
30
|
nullifierExists(siloedNullifier: Fr): Promise<boolean>;
|
|
29
31
|
storageWrite(slot: Fr, value: Fr): Promise<void>;
|
|
30
32
|
storageRead(slot: Fr, contractAddress: AztecAddress): Promise<Fr>;
|
|
33
|
+
returndataSize(): Promise<Fr>;
|
|
34
|
+
returndataCopy(rdOffset: number, copySize: number): Promise<Fr[]>;
|
|
35
|
+
call(l2Gas: number, daGas: number, address: AztecAddress, argsLength: number, args: Fr[]): Promise<Fr[]>;
|
|
36
|
+
staticCall(l2Gas: number, daGas: number, address: AztecAddress, argsLength: number, args: Fr[]): Promise<Fr[]>;
|
|
37
|
+
successCopy(): Promise<Fr>;
|
|
31
38
|
}
|
|
32
39
|
/**
|
|
33
40
|
* Oracle methods associated with the execution of an Aztec Noir test.
|
|
@@ -48,11 +55,15 @@ export interface ITxeExecutionOracle {
|
|
|
48
55
|
txHash: TxHash;
|
|
49
56
|
noteHashes: Fr[];
|
|
50
57
|
nullifiers: Fr[];
|
|
58
|
+
privateLogs: PrivateLog[];
|
|
51
59
|
}>;
|
|
52
60
|
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<
|
|
54
|
-
|
|
55
|
-
|
|
61
|
+
privateCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], argsHash: Fr, isStaticCall: boolean, additionalScopes: AztecAddress[], jobId: string, authorizedUtilityCallTargets: AztecAddress[], gasSettings: GasSettings): Promise<{
|
|
62
|
+
returnValues: Fr[];
|
|
63
|
+
offchainEffects: Fr[][];
|
|
64
|
+
}>;
|
|
65
|
+
executeUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string, authorizedUtilityCallTargets: AztecAddress[]): Promise<Fr[]>;
|
|
66
|
+
publicCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean, gasSettings: GasSettings): Promise<Fr[]>;
|
|
56
67
|
syncContractNonOracleMethod(contractAddress: AztecAddress, scope: AztecAddress, jobId: string): Promise<void>;
|
|
57
68
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVFsRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUM7SUFFWixPQUFPLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwQyxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLFlBQVksSUFBSSxPQUFPLENB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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,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IACvB,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,eAAe,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/oracle/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,12 @@ export declare class TXEOraclePublicContext implements IAvmExecutionOracle {
|
|
|
28
28
|
nullifierExists(siloedNullifier: Fr): Promise<boolean>;
|
|
29
29
|
storageWrite(slot: Fr, value: Fr): Promise<void>;
|
|
30
30
|
storageRead(slot: Fr, contractAddress: AztecAddress): Promise<Fr>;
|
|
31
|
+
returndataSize(): Promise<Fr>;
|
|
32
|
+
returndataCopy(_rdOffset: number, _copySize: number): Promise<Fr[]>;
|
|
33
|
+
call(_l2Gas: number, _daGas: number, _address: AztecAddress, _argsLength: number, _args: Fr[]): Promise<Fr[]>;
|
|
34
|
+
staticCall(_l2Gas: number, _daGas: number, _address: AztecAddress, _argsLength: number, _args: Fr[]): Promise<Fr[]>;
|
|
35
|
+
successCopy(): Promise<Fr>;
|
|
31
36
|
close(): Promise<L2Block>;
|
|
32
37
|
private makeTxEffect;
|
|
33
38
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV9wdWJsaWNfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3B1YmxpY19jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFFTCxLQUFLLHlCQUF5QixFQUcvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFHckUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxxQkFBYSxzQkFBdUIsWUFBVyxtQkFBbUI7SUFTOUQsT0FBTyxDQUFDLGVBQWU7SUFDdkIsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsZUFBZTtJQVh6QixLQUFLLE9BQWlCO0lBRXRCLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLHlCQUF5QixDQUFZO0lBQzdDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBWTtJQUM3QyxPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELFlBQ1UsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQzNDLGFBQWEsRUFBRSxFQUFFLEVBQ2pCLGVBQWUsRUFBRSxlQUFlLEVBU3pDO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FFL0I7SUFFRCxNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUU5QjtJQUVELFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRWxDO0lBRUQsU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFM0I7SUFFRCxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUUvQjtJQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLENBRXJCO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFckI7SUFFSyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsaUJBR2hDO0lBRUssWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLGlCQUk5QjtJQUVLLGVBQWUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FPM0Q7SUFFSyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxpQkFVckM7SUFFSyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FxQnRFO0lBRUQsY0FBYyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FJNUI7SUFFRCxjQUFjLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUlsRTtJQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FJNUc7SUFFRCxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBSWxIO0lBRUQsV0FBVyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FJekI7SUFFSyxLQUFLLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWtCOUI7SUFFRCxPQUFPLENBQUMsWUFBWTtDQWFyQiJ9
|
|
@@ -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,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"}
|
|
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;IAED,cAAc,IAAI,OAAO,CAAC,EAAE,CAAC,CAI5B;IAED,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAIlE;IAED,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAI5G;IAED,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAIlH;IAED,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC,CAIzB;IAEK,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAkB9B;IAED,OAAO,CAAC,YAAY;CAarB"}
|
|
@@ -91,6 +91,21 @@ export class TXEOraclePublicContext {
|
|
|
91
91
|
});
|
|
92
92
|
return value;
|
|
93
93
|
}
|
|
94
|
+
returndataSize() {
|
|
95
|
+
throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
|
|
96
|
+
}
|
|
97
|
+
returndataCopy(_rdOffset, _copySize) {
|
|
98
|
+
throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
|
|
99
|
+
}
|
|
100
|
+
call(_l2Gas, _daGas, _address, _argsLength, _args) {
|
|
101
|
+
throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
|
|
102
|
+
}
|
|
103
|
+
staticCall(_l2Gas, _daGas, _address, _argsLength, _args) {
|
|
104
|
+
throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
|
|
105
|
+
}
|
|
106
|
+
successCopy() {
|
|
107
|
+
throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
|
|
108
|
+
}
|
|
94
109
|
async close() {
|
|
95
110
|
this.logger.debug('Exiting Public Context, building block with collected side effects', {
|
|
96
111
|
blockNumber: this.globalVariables.blockNumber
|
|
@@ -7,10 +7,11 @@ import { type ContractArtifact, EventSelector, FunctionSelector } from '@aztec/s
|
|
|
7
7
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
8
8
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
9
|
import { type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
10
|
+
import { GasSettings } from '@aztec/stdlib/gas';
|
|
10
11
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
11
12
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
12
13
|
import type { TXEStateMachine } from '../state_machine/index.js';
|
|
13
|
-
import type { TXEAccountStore } from '../
|
|
14
|
+
import type { TXEAccountStore } from '../utils/txe_account_store.js';
|
|
14
15
|
import type { ITxeExecutionOracle } from './interfaces.js';
|
|
15
16
|
export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracle {
|
|
16
17
|
private stateMachine;
|
|
@@ -32,7 +33,12 @@ export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecut
|
|
|
32
33
|
isTxe: true;
|
|
33
34
|
private logger;
|
|
34
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>);
|
|
35
|
-
|
|
36
|
+
private contractOracleVersion;
|
|
37
|
+
assertCompatibleOracleVersion(major: number, minor: number): void;
|
|
38
|
+
nonOracleFunctionGetContractOracleVersion(): {
|
|
39
|
+
major: number;
|
|
40
|
+
minor: number;
|
|
41
|
+
} | undefined;
|
|
36
42
|
getRandomField(): Fr;
|
|
37
43
|
log(level: number, message: string, fields: Fr[]): Promise<void>;
|
|
38
44
|
getDefaultAddress(): AztecAddress;
|
|
@@ -43,23 +49,33 @@ export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecut
|
|
|
43
49
|
txHash: TxHash;
|
|
44
50
|
noteHashes: Fr[];
|
|
45
51
|
nullifiers: Fr[];
|
|
52
|
+
privateLogs: import("@aztec/stdlib/logs").PrivateLog[];
|
|
46
53
|
}>;
|
|
47
54
|
syncContractNonOracleMethod(contractAddress: AztecAddress, scope: AztecAddress, jobId: string): Promise<void>;
|
|
48
55
|
getPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
|
|
49
56
|
advanceBlocksBy(blocks: number): Promise<void>;
|
|
50
57
|
advanceTimestampBy(duration: UInt64): void;
|
|
58
|
+
private deploymentNullifier;
|
|
51
59
|
deploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Mines a single block containing only the deployment nullifiers for the contracts at the given addresses.
|
|
62
|
+
*/
|
|
63
|
+
mineDeploymentNullifiers(addresses: AztecAddress[]): Promise<void>;
|
|
52
64
|
addAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
|
|
53
65
|
createAccount(secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
|
|
54
66
|
addAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
|
|
55
67
|
mineBlock(options?: {
|
|
56
68
|
nullifiers?: Fr[];
|
|
57
69
|
}): Promise<void>;
|
|
58
|
-
privateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash: Fr | undefined, isStaticCall: boolean | undefined, jobId: string): Promise<
|
|
59
|
-
|
|
60
|
-
|
|
70
|
+
privateCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash: Fr | undefined, isStaticCall: boolean | undefined, additionalScopes: AztecAddress[] | undefined, jobId: string, authorizedUtilityCallTargets: AztecAddress[], gasSettings: GasSettings): Promise<{
|
|
71
|
+
returnValues: Fr[];
|
|
72
|
+
offchainEffects: Fr[][];
|
|
73
|
+
}>;
|
|
74
|
+
publicCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean, gasSettings: GasSettings): Promise<Fr[]>;
|
|
75
|
+
executeUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string, authorizedUtilityCallTargets: AztecAddress[]): Promise<Fr[]>;
|
|
61
76
|
private executeUtilityCall;
|
|
62
77
|
close(): [bigint, Map<string, AuthWitness>];
|
|
63
78
|
private getLastBlockNumber;
|
|
79
|
+
private buildAuthorizeUtilityCallHook;
|
|
64
80
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV90b3BfbGV2ZWxfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3RvcF9sZXZlbF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUNMLFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxhQUFhLEVBRWxCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFHbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBSUwsS0FBSyxXQUFXLEVBTWpCLE1BQU0sc0JBQXNCLENBQUM7QUFnQjlCLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFFLGFBQWEsRUFBZ0IsZ0JBQWdCLEVBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFDdkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSywyQkFBMkIsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRyxPQUFPLEVBQWdCLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBWTlELE9BQU8sRUFTTCxNQUFNLEVBRVAsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUlsRCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFB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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":"
|
|
1
|
+
{"version":3,"file":"txe_oracle_top_level_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_top_level_context.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,YAAY,EAEZ,YAAY,EACZ,KAAK,aAAa,EAElB,SAAS,EAET,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAGnB,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;AACjG,OAAO,EAAgB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAY9D,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;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,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,OAAO,CAAC,qBAAqB,CAA+C;IAE5E,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAWhE;IAGD,yCAAyC,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAExF;IAID,cAAc,IAAI,EAAE,CAEnB;IAGD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/D;IAED,iBAAiB,IAAI,YAAY,CAEhC;IAEK,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,CAE/C;IAED,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEvC;IAEK,qBAAqB,oBAE1B;IAEK,gBAAgB;;;;;OAsBrB;IAEK,2BAA2B,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAiBlG;IAEK,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,mBASjG;IAEK,eAAe,CAAC,MAAM,EAAE,MAAM,iBAMnC;IAED,kBAAkB,CAAC,QAAQ,EAAE,MAAM,QAGlC;IAED,OAAO,CAAC,mBAAmB;IAIrB,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,EAAE,EAAE,iBAazF;IAED;;OAEG;IACG,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,iBAIvD;IAEK,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,EAAE,EAAE,6DAa7F;IAEK,aAAa,CAAC,MAAM,EAAE,EAAE,6DAQ7B;IAEK,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,iBAW1D;IAEK,SAAS,CAAC,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,EAAE,EAAE,CAAA;KAAO,iBAuBlD;IAEK,kBAAkB,CACtB,IAAI,EAAE,YAAY,GAAG,SAAS,EAC9B,qBAAqB,0BAAoC,EACzD,gBAAgB,8BAA6C,EAC7D,IAAI,EAAE,EAAE,EAAE,EACV,QAAQ,gBAAgB,EACxB,YAAY,qBAAiB,EAC7B,gBAAgB,4BAAqB,EACrC,KAAK,EAAE,MAAM,EACb,4BAA4B,EAAE,YAAY,EAAE,EAC5C,WAAW,EAAE,WAAW;;;OAmOzB;IAEK,iBAAiB,CACrB,IAAI,EAAE,YAAY,GAAG,SAAS,EAC9B,qBAAqB,EAAE,YAAY,EACnC,QAAQ,EAAE,EAAE,EAAE,EACd,YAAY,EAAE,OAAO,EACrB,WAAW,EAAE,WAAW,iBA+IzB;IAEK,sBAAsB,CAC1B,qBAAqB,EAAE,YAAY,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,EAAE,EAAE,EACV,KAAK,EAAE,MAAM,EACb,4BAA4B,EAAE,YAAY,EAAE,iBAgC7C;YAEa,kBAAkB;IAqEhC,KAAK,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAG1C;YAEa,kBAAkB;IAKhC,OAAO,CAAC,6BAA6B;CAYtC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS,
|
|
1
|
+
import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS, MAX_PRIVATE_LOGS_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
2
2
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { Schnorr } from '@aztec/foundation/crypto/schnorr';
|
|
4
4
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import { LogLevels, applyStringFormatting, createLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
7
|
-
import {
|
|
7
|
+
import { CapsuleService, ORACLE_VERSION_MAJOR, composeHooks, enrichPublicSimulationError } from '@aztec/pxe/server';
|
|
8
8
|
import { ExecutionNoteCache, ExecutionTaggingIndexCache, HashedValuesCache, Oracle, PrivateExecutionOracle, UtilityExecutionOracle, executePrivateFunction, generateSimulatedProvingResult } from '@aztec/pxe/simulator';
|
|
9
9
|
import { ExecutionError, WASMSimulator, createSimulationError, extractCallStack, resolveAssertionMessageFromError, toACVMWitness, witnessMapToFields } from '@aztec/simulator/client';
|
|
10
10
|
import { CppPublicTxSimulator, GuardedMerkleTreeOperations, PublicContractsDB, PublicProcessor } from '@aztec/simulator/server';
|
|
@@ -13,17 +13,18 @@ import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
|
13
13
|
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
14
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
15
|
import { computePartialAddress } from '@aztec/stdlib/contract';
|
|
16
|
-
import { Gas, GasFees
|
|
16
|
+
import { Gas, GasFees } from '@aztec/stdlib/gas';
|
|
17
17
|
import { computeCalldataHash, computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
18
18
|
import { PartialPrivateTailPublicInputsForPublic, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
19
|
+
import { hashPublicKey } from '@aztec/stdlib/keys';
|
|
19
20
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
20
21
|
import { makeGlobalVariables } from '@aztec/stdlib/testing';
|
|
21
22
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
22
23
|
import { CallContext, HashedValues, PrivateExecutionResult, Tx, TxConstantData, TxContext, TxEffect, TxHash, collectNested } from '@aztec/stdlib/tx';
|
|
23
|
-
import { ForkCheckpoint } from '@aztec/world-state';
|
|
24
|
+
import { ForkCheckpoint } from '@aztec/world-state/native';
|
|
24
25
|
import { DEFAULT_ADDRESS } from '../constants.js';
|
|
25
|
-
import { TXEPublicContractDataSource } from '../util/txe_public_contract_data_source.js';
|
|
26
26
|
import { getSingleTxBlockRequestHash, insertTxEffectIntoWorldTrees, makeTXEBlock } from '../utils/block_creation.js';
|
|
27
|
+
import { TXEPublicContractDataSource } from '../utils/txe_public_contract_data_source.js';
|
|
27
28
|
export class TXEOracleTopLevelContext {
|
|
28
29
|
stateMachine;
|
|
29
30
|
contractStore;
|
|
@@ -64,10 +65,20 @@ export class TXEOracleTopLevelContext {
|
|
|
64
65
|
this.logger = createLogger('txe:top_level_context');
|
|
65
66
|
this.logger.debug('Entering Top Level Context');
|
|
66
67
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
contractOracleVersion;
|
|
69
|
+
assertCompatibleOracleVersion(major, minor) {
|
|
70
|
+
if (major !== ORACLE_VERSION_MAJOR) {
|
|
71
|
+
const hint = major > ORACLE_VERSION_MAJOR ? 'The contract was compiled with a newer version of Aztec.nr than this aztec cli version supports. Upgrade your aztec cli version to a compatible version.' : 'The contract was compiled with an older version of Aztec.nr than this aztec cli version supports. Recompile the contract with a compatible version of Aztec.nr.';
|
|
72
|
+
throw new Error(`Incompatible aztec cli version: ${hint} See https://docs.aztec.network/errors/8 (expected oracle major version ${ORACLE_VERSION_MAJOR}, got ${major})`);
|
|
70
73
|
}
|
|
74
|
+
this.contractOracleVersion = {
|
|
75
|
+
major,
|
|
76
|
+
minor
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// Prefixed with "nonOracleFunction" as it is not used as an oracle handler.
|
|
80
|
+
nonOracleFunctionGetContractOracleVersion() {
|
|
81
|
+
return this.contractOracleVersion;
|
|
71
82
|
}
|
|
72
83
|
// This is typically only invoked in private contexts, but it is convenient to also have it in top-level for testing
|
|
73
84
|
// setup.
|
|
@@ -95,20 +106,27 @@ export class TXEOracleTopLevelContext {
|
|
|
95
106
|
return Promise.resolve(this.nextBlockTimestamp);
|
|
96
107
|
}
|
|
97
108
|
async getLastBlockTimestamp() {
|
|
98
|
-
return (await this.stateMachine.node.
|
|
109
|
+
return (await this.stateMachine.node.getBlockData('latest')).header.globalVariables.timestamp;
|
|
99
110
|
}
|
|
100
111
|
async getLastTxEffects() {
|
|
101
112
|
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
102
|
-
const block = await this.stateMachine.archiver.getBlock(
|
|
113
|
+
const block = await this.stateMachine.archiver.getBlock({
|
|
114
|
+
number: latestBlockNumber
|
|
115
|
+
});
|
|
103
116
|
if (block.body.txEffects.length != 1) {
|
|
104
117
|
// Note that calls like env.mine() will result in blocks with no transactions, hitting this
|
|
105
118
|
throw new Error(`Expected a single transaction in the last block, found ${block.body.txEffects.length}`);
|
|
106
119
|
}
|
|
107
120
|
const txEffects = block.body.txEffects[0];
|
|
121
|
+
const privateLogs = txEffects.privateLogs;
|
|
122
|
+
if (privateLogs.length > MAX_PRIVATE_LOGS_PER_TX) {
|
|
123
|
+
throw new Error(`${privateLogs.length} private logs exceed max ${MAX_PRIVATE_LOGS_PER_TX}`);
|
|
124
|
+
}
|
|
108
125
|
return {
|
|
109
126
|
txHash: txEffects.txHash,
|
|
110
127
|
noteHashes: txEffects.noteHashes,
|
|
111
|
-
nullifiers: txEffects.nullifiers
|
|
128
|
+
nullifiers: txEffects.nullifiers,
|
|
129
|
+
privateLogs
|
|
112
130
|
};
|
|
113
131
|
}
|
|
114
132
|
async syncContractNonOracleMethod(contractAddress, scope, jobId) {
|
|
@@ -143,11 +161,14 @@ export class TXEOracleTopLevelContext {
|
|
|
143
161
|
this.logger.debug(`time traveling ${duration} seconds`);
|
|
144
162
|
this.nextBlockTimestamp += duration;
|
|
145
163
|
}
|
|
164
|
+
deploymentNullifier(address) {
|
|
165
|
+
return siloNullifier(AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS), address.toField());
|
|
166
|
+
}
|
|
146
167
|
async deploy(artifact, instance, secret) {
|
|
147
168
|
// Emit deployment nullifier
|
|
148
169
|
await this.mineBlock({
|
|
149
170
|
nullifiers: [
|
|
150
|
-
await
|
|
171
|
+
await this.deploymentNullifier(instance.address)
|
|
151
172
|
]
|
|
152
173
|
});
|
|
153
174
|
if (!secret.equals(Fr.ZERO)) {
|
|
@@ -158,6 +179,13 @@ export class TXEOracleTopLevelContext {
|
|
|
158
179
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
159
180
|
}
|
|
160
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Mines a single block containing only the deployment nullifiers for the contracts at the given addresses.
|
|
184
|
+
*/ async mineDeploymentNullifiers(addresses) {
|
|
185
|
+
await this.mineBlock({
|
|
186
|
+
nullifiers: await Promise.all(addresses.map((address)=>this.deploymentNullifier(address)))
|
|
187
|
+
});
|
|
188
|
+
}
|
|
161
189
|
async addAccount(artifact, instance, secret) {
|
|
162
190
|
const partialAddress = await computePartialAddress(instance);
|
|
163
191
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
@@ -179,12 +207,11 @@ export class TXEOracleTopLevelContext {
|
|
|
179
207
|
}
|
|
180
208
|
async addAuthWitness(address, messageHash) {
|
|
181
209
|
const account = await this.accountStore.getAccount(address);
|
|
182
|
-
const
|
|
210
|
+
const ivpkMHash = await hashPublicKey(account.publicKeys.ivpkM);
|
|
211
|
+
const privateKey = await this.keyStore.getMasterSecretKey(ivpkMHash);
|
|
183
212
|
const schnorr = new Schnorr();
|
|
184
|
-
const signature = await schnorr.constructSignature(messageHash
|
|
185
|
-
const authWitness = new AuthWitness(messageHash,
|
|
186
|
-
...signature.toBuffer()
|
|
187
|
-
]);
|
|
213
|
+
const signature = await schnorr.constructSignature(messageHash, privateKey);
|
|
214
|
+
const authWitness = new AuthWitness(messageHash, signature.toLimbFields());
|
|
188
215
|
this.authwits.set(authWitness.requestHash.toString(), authWitness);
|
|
189
216
|
}
|
|
190
217
|
async mineBlock(options = {}) {
|
|
@@ -210,29 +237,26 @@ export class TXEOracleTopLevelContext {
|
|
|
210
237
|
this.logger.info(`Created block ${blockNumber} with timestamp ${block.header.globalVariables.timestamp}`);
|
|
211
238
|
await this.stateMachine.handleL2Block(block);
|
|
212
239
|
}
|
|
213
|
-
async privateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false, jobId) {
|
|
240
|
+
async privateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false, additionalScopes = [], jobId, authorizedUtilityCallTargets, gasSettings) {
|
|
214
241
|
this.logger.verbose(`Executing external function ${await this.contractStore.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
215
242
|
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
216
243
|
if (!artifact) {
|
|
217
244
|
const message = functionSelector.equals(await FunctionSelector.fromSignature('verify_private_authwit(Field)')) ? 'Found no account contract artifact for a private authwit check - use `create_contract_account` instead of `create_light_account` for authwit support.' : 'Function Artifact does not exist';
|
|
218
245
|
throw new Error(message);
|
|
219
246
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
from
|
|
247
|
+
const scopes = from === undefined ? additionalScopes : [
|
|
248
|
+
from,
|
|
249
|
+
...additionalScopes
|
|
224
250
|
];
|
|
225
251
|
// Sync notes before executing private function to discover notes from previous transactions
|
|
226
252
|
const utilityExecutor = async (call, execScopes)=>{
|
|
227
253
|
await this.executeUtilityCall(call, execScopes, jobId);
|
|
228
254
|
};
|
|
229
255
|
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
230
|
-
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, utilityExecutor, blockHeader, jobId,
|
|
256
|
+
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, utilityExecutor, blockHeader, jobId, scopes);
|
|
231
257
|
const blockNumber = await this.getNextBlockNumber();
|
|
232
|
-
const
|
|
233
|
-
const
|
|
234
|
-
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
235
|
-
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
258
|
+
const msgSender = from ?? AztecAddress.NULL_MSG_SENDER;
|
|
259
|
+
const callContext = new CallContext(msgSender, targetContractAddress, functionSelector, isStaticCall);
|
|
236
260
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
237
261
|
const protocolNullifier = await computeProtocolNullifier(getSingleTxBlockRequestHash(blockNumber));
|
|
238
262
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
@@ -264,17 +288,22 @@ export class TXEOracleTopLevelContext {
|
|
|
264
288
|
senderTaggingStore: this.senderTaggingStore,
|
|
265
289
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
266
290
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
267
|
-
|
|
291
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
268
292
|
privateEventStore: this.privateEventStore,
|
|
269
293
|
contractSyncService: this.stateMachine.contractSyncService,
|
|
270
294
|
jobId,
|
|
271
295
|
totalPublicCalldataCount: 0,
|
|
272
296
|
sideEffectCounter: minRevertibleSideEffectCounter,
|
|
273
|
-
scopes
|
|
297
|
+
scopes,
|
|
274
298
|
// In TXE, the typical transaction entrypoint is skipped, so we need to simulate the actions that such a
|
|
275
299
|
// contract would perform, including setting senderForTags.
|
|
276
300
|
senderForTags: from,
|
|
277
|
-
simulator
|
|
301
|
+
simulator,
|
|
302
|
+
messageContextService: this.stateMachine.messageContextService,
|
|
303
|
+
l2TipsStore: this.stateMachine.l2TipsProvider,
|
|
304
|
+
hooks: composeHooks({
|
|
305
|
+
authorizeUtilityCall: this.buildAuthorizeUtilityCallHook(isStaticCall ? 'private view' : 'private', authorizedUtilityCallTargets)
|
|
306
|
+
})
|
|
278
307
|
});
|
|
279
308
|
// 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
309
|
let result;
|
|
@@ -287,7 +316,7 @@ export class TXEOracleTopLevelContext {
|
|
|
287
316
|
r.publicInputs.publicTeardownCallRequest
|
|
288
317
|
]));
|
|
289
318
|
const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
|
|
290
|
-
const calldata = await privateExecutionOracle.
|
|
319
|
+
const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
|
|
291
320
|
return new HashedValues(calldata, r.calldataHash);
|
|
292
321
|
}));
|
|
293
322
|
noteCache.finish();
|
|
@@ -346,10 +375,20 @@ export class TXEOracleTopLevelContext {
|
|
|
346
375
|
throw new Error('Contract execution has reverted');
|
|
347
376
|
}
|
|
348
377
|
}
|
|
378
|
+
// Walk the nested private-call tree and collect every offchain effect the transaction emitted.
|
|
379
|
+
// PXE stores these on each `PrivateCallExecutionResult` and they never reach TXE via the
|
|
380
|
+
// `aztec_utl_emitOffchainEffect` foreign-call path (that path only fires at the top-level), so
|
|
381
|
+
// we pull them out here and the RPC wrapper will hand them to `TXESession` for buffering.
|
|
382
|
+
const offchainEffects = collectNested([
|
|
383
|
+
executionResult
|
|
384
|
+
], (r)=>r.offchainEffects.map((e)=>e.data));
|
|
349
385
|
if (isStaticCall) {
|
|
350
386
|
await checkpoint.revert();
|
|
351
387
|
await forkedWorldTrees.close();
|
|
352
|
-
return
|
|
388
|
+
return {
|
|
389
|
+
returnValues: executionResult.returnValues ?? [],
|
|
390
|
+
offchainEffects
|
|
391
|
+
};
|
|
353
392
|
}
|
|
354
393
|
const txEffect = TxEffect.empty();
|
|
355
394
|
txEffect.noteHashes = processedTx.txEffect.noteHashes;
|
|
@@ -365,14 +404,14 @@ export class TXEOracleTopLevelContext {
|
|
|
365
404
|
]);
|
|
366
405
|
await this.stateMachine.handleL2Block(l2Block);
|
|
367
406
|
await forkedWorldTrees.close();
|
|
368
|
-
return
|
|
407
|
+
return {
|
|
408
|
+
returnValues: executionResult.returnValues ?? [],
|
|
409
|
+
offchainEffects
|
|
410
|
+
};
|
|
369
411
|
}
|
|
370
|
-
async publicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
412
|
+
async publicCallNewFlow(from, targetContractAddress, calldata, isStaticCall, gasSettings) {
|
|
371
413
|
this.logger.verbose(`Executing public function ${await this.contractStore.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
372
414
|
const blockNumber = await this.getNextBlockNumber();
|
|
373
|
-
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
374
|
-
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
375
|
-
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
376
415
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
377
416
|
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
378
417
|
const calldataHash = await computeCalldataHash(calldata);
|
|
@@ -405,7 +444,7 @@ export class TXEOracleTopLevelContext {
|
|
|
405
444
|
// The enqueued public call itself we make be revertible so that the public execution is itself revertible, as tests
|
|
406
445
|
// may require producing reverts.
|
|
407
446
|
const revertibleAccumulatedData = PrivateToPublicAccumulatedData.empty();
|
|
408
|
-
revertibleAccumulatedData.publicCallRequests[0] = new PublicCallRequest(from, targetContractAddress, isStaticCall, calldataHash);
|
|
447
|
+
revertibleAccumulatedData.publicCallRequests[0] = new PublicCallRequest(from ?? AztecAddress.NULL_MSG_SENDER, targetContractAddress, isStaticCall, calldataHash);
|
|
409
448
|
const inputsForPublic = new PartialPrivateTailPublicInputsForPublic(nonRevertibleAccumulatedData, revertibleAccumulatedData, PublicCallRequest.empty());
|
|
410
449
|
const constantData = new TxConstantData(anchorBlockHeader, txContext, Fr.zero(), Fr.zero());
|
|
411
450
|
const txData = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ new Gas(0, 0), /*feePayer=*/ AztecAddress.zero(), /*expirationTimestamp=*/ 0n, inputsForPublic, undefined);
|
|
@@ -461,7 +500,7 @@ export class TXEOracleTopLevelContext {
|
|
|
461
500
|
await forkedWorldTrees.close();
|
|
462
501
|
return returnValues ?? [];
|
|
463
502
|
}
|
|
464
|
-
async executeUtilityFunction(targetContractAddress, functionSelector, args, jobId) {
|
|
503
|
+
async executeUtilityFunction(targetContractAddress, functionSelector, args, jobId, authorizedUtilityCallTargets) {
|
|
465
504
|
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
466
505
|
if (!artifact) {
|
|
467
506
|
throw new Error(`Cannot call ${functionSelector} as there is no artifact found at ${targetContractAddress}.`);
|
|
@@ -470,7 +509,7 @@ export class TXEOracleTopLevelContext {
|
|
|
470
509
|
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
471
510
|
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, async (call, execScopes)=>{
|
|
472
511
|
await this.executeUtilityCall(call, execScopes, jobId);
|
|
473
|
-
}, blockHeader, jobId,
|
|
512
|
+
}, blockHeader, jobId, await this.keyStore.getAccounts());
|
|
474
513
|
const call = FunctionCall.from({
|
|
475
514
|
name: artifact.name,
|
|
476
515
|
to: targetContractAddress,
|
|
@@ -481,9 +520,9 @@ export class TXEOracleTopLevelContext {
|
|
|
481
520
|
args,
|
|
482
521
|
returnTypes: []
|
|
483
522
|
});
|
|
484
|
-
return this.executeUtilityCall(call,
|
|
523
|
+
return this.executeUtilityCall(call, await this.keyStore.getAccounts(), jobId, authorizedUtilityCallTargets);
|
|
485
524
|
}
|
|
486
|
-
async executeUtilityCall(call, scopes, jobId) {
|
|
525
|
+
async executeUtilityCall(call, scopes, jobId, authorizedUtilityCallTargets = []) {
|
|
487
526
|
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
488
527
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
489
528
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
@@ -494,6 +533,10 @@ export class TXEOracleTopLevelContext {
|
|
|
494
533
|
});
|
|
495
534
|
try {
|
|
496
535
|
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
536
|
+
const simulator = new WASMSimulator();
|
|
537
|
+
const utilityExecutor = async (syncCall, execScopes)=>{
|
|
538
|
+
await this.executeUtilityCall(syncCall, execScopes, jobId);
|
|
539
|
+
};
|
|
497
540
|
const oracle = new UtilityExecutionOracle({
|
|
498
541
|
contractAddress: call.to,
|
|
499
542
|
authWitnesses: [],
|
|
@@ -506,12 +549,20 @@ export class TXEOracleTopLevelContext {
|
|
|
506
549
|
aztecNode: this.stateMachine.node,
|
|
507
550
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
508
551
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
509
|
-
|
|
552
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
510
553
|
privateEventStore: this.privateEventStore,
|
|
554
|
+
messageContextService: this.stateMachine.messageContextService,
|
|
555
|
+
contractSyncService: this.stateMachine.contractSyncService,
|
|
556
|
+
l2TipsStore: this.stateMachine.l2TipsProvider,
|
|
511
557
|
jobId,
|
|
512
|
-
scopes
|
|
558
|
+
scopes,
|
|
559
|
+
simulator,
|
|
560
|
+
hooks: composeHooks({
|
|
561
|
+
authorizeUtilityCall: this.buildAuthorizeUtilityCallHook('utility', authorizedUtilityCallTargets)
|
|
562
|
+
}),
|
|
563
|
+
utilityExecutor
|
|
513
564
|
});
|
|
514
|
-
const acirExecutionResult = await
|
|
565
|
+
const acirExecutionResult = await simulator.executeUserCircuit(toACVMWitness(0, call.args), entryPointArtifact, new Oracle(oracle).toACIRCallback()).catch((err)=>{
|
|
515
566
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
516
567
|
throw new ExecutionError(err.message, {
|
|
517
568
|
contractAddress: call.to,
|
|
@@ -534,7 +585,15 @@ export class TXEOracleTopLevelContext {
|
|
|
534
585
|
];
|
|
535
586
|
}
|
|
536
587
|
async getLastBlockNumber() {
|
|
537
|
-
const
|
|
538
|
-
return
|
|
588
|
+
const block = await this.stateMachine.node.getBlock('latest');
|
|
589
|
+
return block ? block.header.globalVariables.blockNumber : BlockNumber.ZERO;
|
|
590
|
+
}
|
|
591
|
+
buildAuthorizeUtilityCallHook(callerContext, authorizedTargets) {
|
|
592
|
+
if (authorizedTargets.length === 0) {
|
|
593
|
+
return undefined;
|
|
594
|
+
}
|
|
595
|
+
return (req)=>Promise.resolve({
|
|
596
|
+
authorized: req.callerContext === callerContext && authorizedTargets.some((t)=>t.equals(req.target))
|
|
597
|
+
});
|
|
539
598
|
}
|
|
540
599
|
}
|