@aztec/simulator 0.82.0 → 0.82.1
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/common/debug_fn_name.js +5 -2
- package/dest/private/acvm/oracle/oracle.d.ts +3 -3
- package/dest/private/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/private/acvm/oracle/oracle.js +9 -15
- package/dest/private/acvm/oracle/typed_oracle.d.ts +3 -3
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/private/acvm/oracle/typed_oracle.js +6 -6
- package/dest/private/hashed_values_cache.d.ts +2 -2
- package/dest/private/hashed_values_cache.d.ts.map +1 -1
- package/dest/private/hashed_values_cache.js +5 -15
- package/dest/private/private_execution.d.ts.map +1 -1
- package/dest/private/private_execution.js +1 -3
- package/dest/private/private_execution_oracle.d.ts +9 -37
- package/dest/private/private_execution_oracle.d.ts.map +1 -1
- package/dest/private/private_execution_oracle.js +32 -92
- package/dest/private/simulator.d.ts.map +1 -1
- package/dest/private/simulator.js +12 -2
- package/dest/public/avm/fixtures/avm_simulation_tester.js +2 -2
- package/dest/public/avm/fixtures/index.d.ts +2 -1
- package/dest/public/avm/fixtures/index.d.ts.map +1 -1
- package/dest/public/avm/fixtures/index.js +7 -12
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +2 -2
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +1 -1
- package/dest/public/avm/fixtures/simple_contract_data_source.js +1 -1
- package/dest/public/avm/journal/journal.d.ts +2 -2
- package/dest/public/avm/journal/journal.d.ts.map +1 -1
- package/dest/public/avm/journal/journal.js +3 -3
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +2 -2
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +27 -47
- package/dest/public/fixtures/utils.d.ts +2 -2
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +18 -22
- package/dest/public/index.d.ts +1 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +1 -1
- package/dest/public/public_db_sources.js +1 -1
- package/dest/public/public_processor/public_processor.js +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +3 -10
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +4 -22
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +2 -3
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +20 -24
- package/dest/public/utils.d.ts +2 -4
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +4 -21
- package/package.json +14 -14
- package/src/common/debug_fn_name.ts +5 -5
- package/src/private/acvm/oracle/oracle.ts +13 -17
- package/src/private/acvm/oracle/typed_oracle.ts +10 -12
- package/src/private/hashed_values_cache.ts +6 -14
- package/src/private/private_execution.ts +0 -4
- package/src/private/private_execution_oracle.ts +39 -138
- package/src/private/simulator.ts +14 -2
- package/src/public/avm/fixtures/avm_simulation_tester.ts +2 -2
- package/src/public/avm/fixtures/index.ts +15 -17
- package/src/public/avm/fixtures/simple_contract_data_source.ts +2 -2
- package/src/public/avm/journal/journal.ts +6 -6
- package/src/public/fixtures/public_tx_simulation_tester.ts +31 -88
- package/src/public/fixtures/utils.ts +28 -26
- package/src/public/index.ts +1 -2
- package/src/public/public_db_sources.ts +1 -1
- package/src/public/public_processor/public_processor.ts +1 -1
- package/src/public/public_tx_simulator/public_tx_context.ts +12 -32
- package/src/public/public_tx_simulator/public_tx_simulator.ts +24 -30
- package/src/public/utils.ts +5 -21
- package/dest/public/execution.d.ts +0 -108
- package/dest/public/execution.d.ts.map +0 -1
- package/dest/public/execution.js +0 -9
- package/src/public/execution.ts +0 -140
|
@@ -2,7 +2,7 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
-
import { CallContext, PrivateExecutionResult } from '@aztec/stdlib/tx';
|
|
5
|
+
import { CallContext, HashedValues, PrivateExecutionResult, collectNested } from '@aztec/stdlib/tx';
|
|
6
6
|
import { createSimulationError } from '../common/errors.js';
|
|
7
7
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
8
8
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
@@ -49,7 +49,17 @@ import { UnconstrainedExecutionOracle } from './unconstrained_execution_oracle.j
|
|
|
49
49
|
const executionResult = await executePrivateFunction(this.simulationProvider, context, entryPointArtifact, contractAddress, request.functionSelector);
|
|
50
50
|
const { usedTxRequestHashForNonces } = noteCache.finish();
|
|
51
51
|
const firstNullifierHint = usedTxRequestHashForNonces ? Fr.ZERO : noteCache.getAllNullifiers()[0];
|
|
52
|
-
|
|
52
|
+
const publicCallRequests = collectNested([
|
|
53
|
+
executionResult
|
|
54
|
+
], (r)=>[
|
|
55
|
+
...r.publicInputs.publicCallRequests.map((r)=>r.inner),
|
|
56
|
+
r.publicInputs.publicTeardownCallRequest
|
|
57
|
+
]).filter((r)=>!r.isEmpty());
|
|
58
|
+
const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
|
|
59
|
+
const calldata = await context.loadFromExecutionCache(r.calldataHash);
|
|
60
|
+
return new HashedValues(calldata, r.calldataHash);
|
|
61
|
+
}));
|
|
62
|
+
return new PrivateExecutionResult(executionResult, firstNullifierHint, publicFunctionsCalldata);
|
|
53
63
|
} catch (err) {
|
|
54
64
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
55
65
|
}
|
|
@@ -4,7 +4,7 @@ import { GasFees } from '@aztec/stdlib/gas';
|
|
|
4
4
|
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
5
5
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
6
6
|
import { SideEffectTrace } from '../../../public/side_effect_trace.js';
|
|
7
|
-
import {
|
|
7
|
+
import { getContractFunctionAbi, getFunctionSelector, initContext, initExecutionEnvironment, resolveContractAssertionMessage } from '../../avm/fixtures/index.js';
|
|
8
8
|
import { AvmPersistableStateManager } from '../../avm/journal/journal.js';
|
|
9
9
|
import { DEFAULT_BLOCK_NUMBER } from '../../fixtures/public_tx_simulation_tester.js';
|
|
10
10
|
import { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js';
|
|
@@ -40,7 +40,7 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
40
40
|
throw new Error(`Contract not found at address: ${address}`);
|
|
41
41
|
}
|
|
42
42
|
const fnSelector = await getFunctionSelector(fnName, contractArtifact);
|
|
43
|
-
const fnAbi =
|
|
43
|
+
const fnAbi = getContractFunctionAbi(fnName, contractArtifact);
|
|
44
44
|
const encodedArgs = encodeArguments(fnAbi, args);
|
|
45
45
|
const calldata = [
|
|
46
46
|
fnSelector.toField(),
|
|
@@ -56,7 +56,8 @@ export declare function randomMemoryUint32s(length: number): Uint32[];
|
|
|
56
56
|
export declare function randomMemoryUint64s(length: number): Uint64[];
|
|
57
57
|
export declare function randomMemoryFields(length: number): Field[];
|
|
58
58
|
export declare function getFunctionSelector(functionName: string, contractArtifact: ContractArtifact): Promise<FunctionSelector>;
|
|
59
|
-
export declare function getContractFunctionArtifact(functionName: string, contractArtifact: ContractArtifact): FunctionArtifact |
|
|
59
|
+
export declare function getContractFunctionArtifact(functionName: string, contractArtifact: ContractArtifact): FunctionArtifact | undefined;
|
|
60
|
+
export declare function getContractFunctionAbi(functionName: string, contractArtifact: ContractArtifact): FunctionAbi | undefined;
|
|
60
61
|
export declare function resolveContractAssertionMessage(functionName: string, revertReason: AvmRevertReason, output: Fr[], contractArtifact: ContractArtifact): string | undefined;
|
|
61
62
|
export declare function getAvmTestContractFunctionSelector(functionName: string): Promise<FunctionSelector>;
|
|
62
63
|
export declare function getAvmGadgetsTestContractFunctionSelector(functionName: string): Promise<FunctionSelector>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEPLOYER_CONTRACT_ADDRESS, MAX_L2_GAS_PER_TX_PUBLIC_PORTION
|
|
1
|
+
import { DEPLOYER_CONTRACT_ADDRESS, MAX_L2_GAS_PER_TX_PUBLIC_PORTION } from '@aztec/constants';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { AvmGadgetsTestContract } from '@aztec/noir-contracts.js/AvmGadgetsTest';
|
|
@@ -85,12 +85,10 @@ export function getFunctionSelector(functionName, contractArtifact) {
|
|
|
85
85
|
return FunctionSelector.fromNameAndParameters(fnArtifact.name, params);
|
|
86
86
|
}
|
|
87
87
|
export function getContractFunctionArtifact(functionName, contractArtifact) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
return artifact;
|
|
88
|
+
return contractArtifact.functions.find((f)=>f.name === functionName);
|
|
89
|
+
}
|
|
90
|
+
export function getContractFunctionAbi(functionName, contractArtifact) {
|
|
91
|
+
return contractArtifact.functions.find((f)=>f.name === functionName) ?? contractArtifact.nonDispatchPublicFunctions.find((f)=>f.name === functionName);
|
|
94
92
|
}
|
|
95
93
|
export function resolveContractAssertionMessage(functionName, revertReason, output, contractArtifact) {
|
|
96
94
|
traverseCauseChain(revertReason, (cause)=>{
|
|
@@ -153,11 +151,8 @@ export function resolveAvmGadgetsTestContractAssertionMessage(functionName, reve
|
|
|
153
151
|
* @returns The contract class, instance, and contract address nullifier.
|
|
154
152
|
*/ export async function createContractClassAndInstance(constructorArgs, deployer, contractArtifact, seed = 0, originalContractClassId) {
|
|
155
153
|
const bytecode = getContractFunctionArtifact(PUBLIC_DISPATCH_FN_NAME, contractArtifact).bytecode;
|
|
156
|
-
const contractClass = await makeContractClassPublic(seed,
|
|
157
|
-
|
|
158
|
-
selector: new FunctionSelector(PUBLIC_DISPATCH_SELECTOR)
|
|
159
|
-
});
|
|
160
|
-
const constructorAbi = getContractFunctionArtifact('constructor', contractArtifact);
|
|
154
|
+
const contractClass = await makeContractClassPublic(seed, bytecode);
|
|
155
|
+
const constructorAbi = getContractFunctionAbi('constructor', contractArtifact);
|
|
161
156
|
const { publicKeys } = await deriveKeys(Fr.random());
|
|
162
157
|
const initializationHash = await computeInitializationHash(constructorAbi, constructorArgs);
|
|
163
158
|
const contractInstance = originalContractClassId === undefined ? await makeContractInstanceFromClassId(contractClass.id, seed, {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import {
|
|
2
|
+
import type { ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
5
|
/**
|
|
@@ -26,7 +26,7 @@ export declare class SimpleContractDataSource implements ContractDataSource {
|
|
|
26
26
|
getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
27
27
|
getContractClassIds(): Promise<Fr[]>;
|
|
28
28
|
getContractArtifact(address: AztecAddress): Promise<ContractArtifact | undefined>;
|
|
29
|
-
|
|
29
|
+
getDebugFunctionName(_address: AztecAddress, _selector: FunctionSelector): Promise<string>;
|
|
30
30
|
registerContractFunctionSignatures(_address: AztecAddress, _signatures: string[]): Promise<void>;
|
|
31
31
|
addContractClass(contractClass: ContractClassPublic): Promise<void>;
|
|
32
32
|
addContractInstance(contractInstance: ContractInstanceWithAddress): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple_contract_data_source.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/simple_contract_data_source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"simple_contract_data_source.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/simple_contract_data_source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAInH;;;;;;GAMG;AACH,qBAAa,wBAAyB,YAAW,kBAAkB;IAC1D,MAAM,yCAA+C;IAG5D,OAAO,CAAC,eAAe,CAA+C;IAEtE,OAAO,CAAC,iBAAiB,CAAuD;IAEhF,OAAO,CAAC,iBAAiB,CAA4C;IAIrE;;;OAGG;IACG,cAAc,CAClB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,mBAAmB,EAClC,gBAAgB,EAAE,2BAA2B;IAO/C,mBAAmB,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAMlE,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIlE,qBAAqB,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIvD,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAIpF,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAI9B,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAWvF,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1F,kCAAkC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhG,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnE,mBAAmB,CAAC,gBAAgB,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;CAIlF"}
|
|
@@ -54,7 +54,7 @@ import { PUBLIC_DISPATCH_FN_NAME } from './index.js';
|
|
|
54
54
|
this.logger.debug(`Contract class ID: ${contractInstance.currentContractClassId}`);
|
|
55
55
|
return Promise.resolve(this.contractArtifacts.get(contractInstance.currentContractClassId.toString()));
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
getDebugFunctionName(_address, _selector) {
|
|
58
58
|
return Promise.resolve(PUBLIC_DISPATCH_FN_NAME);
|
|
59
59
|
}
|
|
60
60
|
registerContractFunctionSignatures(_address, _signatures) {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
+
import type { ContractClassPublicWithCommitment } from '@aztec/stdlib/contract';
|
|
5
6
|
import { SerializableContractInstance } from '@aztec/stdlib/contract';
|
|
6
|
-
import type { ContractClassWithCommitment } from '@aztec/stdlib/contract';
|
|
7
7
|
import type { PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
8
8
|
import type { PublicTreesDB } from '../../../public/public_db_sources.js';
|
|
9
9
|
import type { PublicContractsDBInterface } from '../../../server.js';
|
|
@@ -144,7 +144,7 @@ export declare class AvmPersistableStateManager {
|
|
|
144
144
|
* @param classId - class id to retrieve.
|
|
145
145
|
* @returns the contract class or undefined if it does not exist.
|
|
146
146
|
*/
|
|
147
|
-
getContractClass(classId: Fr): Promise<
|
|
147
|
+
getContractClass(classId: Fr): Promise<ContractClassPublicWithCommitment | undefined>;
|
|
148
148
|
/**
|
|
149
149
|
* Get a contract's bytecode from the contracts DB, also trace the contract class and instance indirectly.
|
|
150
150
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/journal/journal.ts"],"names":[],"mappings":";;AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAK9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/journal/journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -320,8 +320,8 @@ import { PublicStorage } from './public_storage.js';
|
|
|
320
320
|
* @returns the contract class or undefined if it does not exist.
|
|
321
321
|
*/ async getContractClass(classId) {
|
|
322
322
|
this.log.trace(`Getting contract class for id ${classId}`);
|
|
323
|
-
const
|
|
324
|
-
const exists =
|
|
323
|
+
const contractClass = await this.contractsDB.getContractClass(classId);
|
|
324
|
+
const exists = contractClass !== undefined;
|
|
325
325
|
let extendedClass = undefined;
|
|
326
326
|
// Note: We currently do not generate info to check the nullifier tree, because
|
|
327
327
|
// this is not needed for our use cases.
|
|
@@ -331,7 +331,7 @@ import { PublicStorage } from './public_storage.js';
|
|
|
331
331
|
const bytecodeCommitment = await this.contractsDB.getBytecodeCommitment(classId);
|
|
332
332
|
assert(bytecodeCommitment, `Bytecode commitment was not found in DB for contract class (${classId}). This should not happen!`);
|
|
333
333
|
extendedClass = {
|
|
334
|
-
...
|
|
334
|
+
...contractClass,
|
|
335
335
|
publicBytecodeCommitment: bytecodeCommitment
|
|
336
336
|
};
|
|
337
337
|
} else {
|
|
@@ -2,8 +2,7 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import { type ContractArtifact } from '@aztec/stdlib/abi';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
5
|
-
import { type Tx } from '@aztec/stdlib/tx';
|
|
6
|
-
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
5
|
+
import { GlobalVariables, type Tx } from '@aztec/stdlib/tx';
|
|
7
6
|
import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
|
|
8
7
|
import { SimpleContractDataSource } from '../avm/fixtures/simple_contract_data_source.js';
|
|
9
8
|
import { type PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
|
|
@@ -21,6 +20,7 @@ export type TestEnqueuedCall = {
|
|
|
21
20
|
* transactions.
|
|
22
21
|
*/
|
|
23
22
|
export declare class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
23
|
+
#private;
|
|
24
24
|
private merkleTree;
|
|
25
25
|
private txCount;
|
|
26
26
|
constructor(merkleTree: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAiC,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAG3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAE1F,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,+CAA+C,CAAC;AAKvG,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,uBAAuB;;IAGvD,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,OAAO,CAAK;gBAEA,UAAU,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,wBAAwB;WAInF,MAAM,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAMlD,QAAQ,CACnB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,cAAc,KAAkC,GAC/C,OAAO,CAAC,EAAE,CAAC;IAUD,UAAU,CACrB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,cAAc,KAAkC,EAChD,OAAO,kBAAmB,GACzB,OAAO,CAAC,cAAc,CAAC;CAoC3B;AAED,wBAAgB,cAAc,oBAM7B"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asyncMap } from '@aztec/foundation/async-map';
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
-
import {
|
|
3
|
+
import { encodeArguments } from '@aztec/stdlib/abi';
|
|
4
4
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
6
|
+
import { GlobalVariables, PublicCallRequestWithCalldata } from '@aztec/stdlib/tx';
|
|
7
7
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
8
8
|
import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
|
|
9
|
-
import {
|
|
9
|
+
import { getContractFunctionAbi, getFunctionSelector } from '../avm/fixtures/index.js';
|
|
10
10
|
import { SimpleContractDataSource } from '../avm/fixtures/simple_contract_data_source.js';
|
|
11
11
|
import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
|
|
12
12
|
import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
|
|
13
|
-
import { createTxForPublicCalls } from './
|
|
13
|
+
import { createTxForPublicCalls } from './utils.js';
|
|
14
14
|
const TIMESTAMP = new Fr(99833);
|
|
15
15
|
const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
16
16
|
export const DEFAULT_BLOCK_NUMBER = 42;
|
|
@@ -30,36 +30,10 @@ export const DEFAULT_BLOCK_NUMBER = 42;
|
|
|
30
30
|
return new PublicTxSimulationTester(merkleTree, contractDataSource);
|
|
31
31
|
}
|
|
32
32
|
async createTx(sender, setupCalls = [], appCalls = [], teardownCall, feePayer = sender, /* need some unique first nullifier for note-nonce computations */ firstNullifier = new Fr(420000 + this.txCount++)) {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (!contractArtifact) {
|
|
38
|
-
throw new Error(`Contract artifact not found for address: ${address}`);
|
|
39
|
-
}
|
|
40
|
-
const req = await executionRequestForCall(contractArtifact, sender, address, setupCalls[i].fnName, setupCalls[i].args, setupCalls[i].isStaticCall);
|
|
41
|
-
setupExecutionRequests.push(req);
|
|
42
|
-
}
|
|
43
|
-
const appExecutionRequests = [];
|
|
44
|
-
for(let i = 0; i < appCalls.length; i++){
|
|
45
|
-
const address = appCalls[i].address;
|
|
46
|
-
const contractArtifact = appCalls[i].contractArtifact || await this.contractDataSource.getContractArtifact(address);
|
|
47
|
-
if (!contractArtifact) {
|
|
48
|
-
throw new Error(`Contract artifact not found for address: ${address}`);
|
|
49
|
-
}
|
|
50
|
-
const req = await executionRequestForCall(contractArtifact, sender, address, appCalls[i].fnName, appCalls[i].args, appCalls[i].isStaticCall);
|
|
51
|
-
appExecutionRequests.push(req);
|
|
52
|
-
}
|
|
53
|
-
let teardownExecutionRequest = undefined;
|
|
54
|
-
if (teardownCall) {
|
|
55
|
-
const address = teardownCall.address;
|
|
56
|
-
const contractArtifact = teardownCall.contractArtifact || await this.contractDataSource.getContractArtifact(address);
|
|
57
|
-
if (!contractArtifact) {
|
|
58
|
-
throw new Error(`Contract artifact not found for address: ${address}`);
|
|
59
|
-
}
|
|
60
|
-
teardownExecutionRequest = await executionRequestForCall(contractArtifact, sender, address, teardownCall.fnName, teardownCall.args, teardownCall.isStaticCall);
|
|
61
|
-
}
|
|
62
|
-
return await createTxForPublicCalls(firstNullifier, setupExecutionRequests, appExecutionRequests, teardownExecutionRequest, feePayer);
|
|
33
|
+
const setupCallRequests = await asyncMap(setupCalls, (call)=>this.#createPubicCallRequestForCall(call, sender));
|
|
34
|
+
const appCallRequests = await asyncMap(appCalls, (call)=>this.#createPubicCallRequestForCall(call, sender));
|
|
35
|
+
const teardownCallRequest = teardownCall ? await this.#createPubicCallRequestForCall(teardownCall, sender) : undefined;
|
|
36
|
+
return createTxForPublicCalls(firstNullifier, setupCallRequests, appCallRequests, teardownCallRequest, feePayer);
|
|
63
37
|
}
|
|
64
38
|
async simulateTx(sender, setupCalls = [], appCalls = [], teardownCall, feePayer = sender, /* need some unique first nullifier for note-nonce computations */ firstNullifier = new Fr(420000 + this.txCount++), globals = defaultGlobals()) {
|
|
65
39
|
const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, firstNullifier);
|
|
@@ -73,17 +47,23 @@ export const DEFAULT_BLOCK_NUMBER = 42;
|
|
|
73
47
|
this.logger.debug(`Public transaction simulation took ${endTime - startTime}ms`);
|
|
74
48
|
return avmResult;
|
|
75
49
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
fnSelector.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
50
|
+
async #createPubicCallRequestForCall(call, sender) {
|
|
51
|
+
const address = call.address;
|
|
52
|
+
const contractArtifact = call.contractArtifact || await this.contractDataSource.getContractArtifact(address);
|
|
53
|
+
if (!contractArtifact) {
|
|
54
|
+
throw new Error(`Contract artifact not found for address: ${address}`);
|
|
55
|
+
}
|
|
56
|
+
const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
|
|
57
|
+
const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact);
|
|
58
|
+
const encodedArgs = encodeArguments(fnAbi, call.args);
|
|
59
|
+
const calldata = [
|
|
60
|
+
fnSelector.toField(),
|
|
61
|
+
...encodedArgs
|
|
62
|
+
];
|
|
63
|
+
const isStaticCall = call.isStaticCall ?? false;
|
|
64
|
+
const request = await PublicCallRequest.fromCalldata(sender, address, isStaticCall, calldata);
|
|
65
|
+
return new PublicCallRequestWithCalldata(request, calldata);
|
|
66
|
+
}
|
|
87
67
|
}
|
|
88
68
|
export function defaultGlobals() {
|
|
89
69
|
const globals = GlobalVariables.empty();
|
|
@@ -2,11 +2,11 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
4
4
|
import { Gas } from '@aztec/stdlib/gas';
|
|
5
|
-
import {
|
|
5
|
+
import { PublicCallRequestWithCalldata, Tx } from '@aztec/stdlib/tx';
|
|
6
6
|
/**
|
|
7
7
|
* Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
|
|
8
8
|
*/
|
|
9
|
-
export declare function createTxForPublicCalls(firstNullifier: Fr,
|
|
9
|
+
export declare function createTxForPublicCalls(firstNullifier: Fr, setupCallRequests: PublicCallRequestWithCalldata[], appCallRequests: PublicCallRequestWithCalldata[], teardownCallRequest?: PublicCallRequestWithCalldata, feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Tx;
|
|
10
10
|
export declare function createTxForPrivateOnly(feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Tx;
|
|
11
11
|
export declare function addNewContractClassToTx(tx: Tx, contractClass: ContractClassPublic, skipNullifierInsertion?: boolean): Promise<void>;
|
|
12
12
|
export declare function addNewContractInstanceToTx(tx: Tx, contractInstance: ContractInstanceWithAddress, skipNullifierInsertion?: boolean): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAY9D,OAAO,EAGL,6BAA6B,EAC7B,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAI1B;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,EAAE,EAClB,iBAAiB,EAAE,6BAA6B,EAAE,EAClD,eAAe,EAAE,6BAA6B,EAAE,EAChD,mBAAmB,CAAC,EAAE,6BAA6B,EACnD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,GAClC,EAAE,CA6CJ;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,eAAsB,EAAE,gBAAgB,GAAE,GAAqB,GAAG,EAAE,CAoBlH;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBAiC/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,iBA0C/B"}
|
|
@@ -8,15 +8,13 @@ import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
|
8
8
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
9
9
|
import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, RollupValidationRequests, ScopedLogHash, countAccumulatedItems } from '@aztec/stdlib/kernel';
|
|
10
10
|
import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
|
|
11
|
-
import {
|
|
12
|
-
import { BlockHeader, TxConstantData, TxContext } from '@aztec/stdlib/tx';
|
|
11
|
+
import { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
12
|
+
import { BlockHeader, HashedValues, Tx, TxConstantData, TxContext } from '@aztec/stdlib/tx';
|
|
13
13
|
import { strict as assert } from 'assert';
|
|
14
14
|
/**
|
|
15
15
|
* Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
|
|
16
|
-
*/ export
|
|
17
|
-
assert(
|
|
18
|
-
const setupCallRequests = await Promise.all(setupExecutionRequests.map((er)=>er.toCallRequest()));
|
|
19
|
-
const appCallRequests = await Promise.all(appExecutionRequests.map((er)=>er.toCallRequest()));
|
|
16
|
+
*/ export function createTxForPublicCalls(firstNullifier, setupCallRequests, appCallRequests, teardownCallRequest, feePayer = AztecAddress.zero(), gasUsedByPrivate = Gas.empty()) {
|
|
17
|
+
assert(setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined, "Can't create public tx with no enqueued calls");
|
|
20
18
|
// use max limits
|
|
21
19
|
const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
22
20
|
const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
|
|
@@ -24,30 +22,28 @@ import { strict as assert } from 'assert';
|
|
|
24
22
|
forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier;
|
|
25
23
|
// We reverse order because the simulator expects it to be like a "stack" of calls to pop from
|
|
26
24
|
for(let i = setupCallRequests.length - 1; i >= 0; i--){
|
|
27
|
-
forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i];
|
|
25
|
+
forPublic.nonRevertibleAccumulatedData.publicCallRequests[setupCallRequests.length - i - 1] = setupCallRequests[i].request;
|
|
28
26
|
}
|
|
29
27
|
for(let i = appCallRequests.length - 1; i >= 0; i--){
|
|
30
|
-
forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i];
|
|
28
|
+
forPublic.revertibleAccumulatedData.publicCallRequests[appCallRequests.length - i - 1] = appCallRequests[i].request;
|
|
31
29
|
}
|
|
32
|
-
if (
|
|
33
|
-
forPublic.publicTeardownCallRequest =
|
|
30
|
+
if (teardownCallRequest) {
|
|
31
|
+
forPublic.publicTeardownCallRequest = teardownCallRequest.request;
|
|
34
32
|
}
|
|
35
33
|
const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
|
|
36
|
-
const teardownGasLimits =
|
|
34
|
+
const teardownGasLimits = teardownCallRequest ? gasLimits : Gas.empty();
|
|
37
35
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
|
|
38
36
|
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
39
37
|
const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
|
|
40
38
|
const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(), /*gasUsed=*/ gasUsedByPrivate, feePayer, forPublic);
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
return tx;
|
|
39
|
+
const calldata = [
|
|
40
|
+
...setupCallRequests,
|
|
41
|
+
...appCallRequests,
|
|
42
|
+
...teardownCallRequest ? [
|
|
43
|
+
teardownCallRequest
|
|
44
|
+
] : []
|
|
45
|
+
].map((r)=>new HashedValues(r.calldata, r.request.calldataHash));
|
|
46
|
+
return new Tx(txData, ClientIvcProof.empty(), [], calldata);
|
|
51
47
|
}
|
|
52
48
|
export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedByPrivate = new Gas(10, 10)) {
|
|
53
49
|
// use max limits
|
|
@@ -58,7 +54,7 @@ export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedBy
|
|
|
58
54
|
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
59
55
|
const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
|
|
60
56
|
const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(), /*gasUsed=*/ gasUsedByPrivate, feePayer, /*forPublic=*/ undefined, forRollup);
|
|
61
|
-
return Tx.
|
|
57
|
+
return new Tx(txData, ClientIvcProof.empty(), [], []);
|
|
62
58
|
}
|
|
63
59
|
export async function addNewContractClassToTx(tx, contractClass, skipNullifierInsertion = false) {
|
|
64
60
|
const contractClassLogFields = [
|
package/dest/public/index.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export * from '../common/db_interfaces.js';
|
|
2
2
|
export * from './public_tx_simulator/public_tx_simulator.js';
|
|
3
|
-
export { type EnqueuedPublicCallExecutionResult, type PublicFunctionCallResult } from './execution.js';
|
|
4
3
|
export * from './public_db_sources.js';
|
|
5
4
|
export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
|
|
6
5
|
export { SideEffectTrace } from './side_effect_trace.js';
|
|
7
|
-
export { getExecutionRequestsByPhase } from './utils.js';
|
|
8
6
|
export { PublicTxSimulationTester } from './fixtures/index.js';
|
|
9
7
|
export * from './avm/index.js';
|
|
8
|
+
export { getCallRequestsWithCalldataByPhase } from './utils.js';
|
|
10
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC"}
|
package/dest/public/index.js
CHANGED
|
@@ -3,6 +3,6 @@ export * from './public_tx_simulator/public_tx_simulator.js';
|
|
|
3
3
|
export * from './public_db_sources.js';
|
|
4
4
|
export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
|
|
5
5
|
export { SideEffectTrace } from './side_effect_trace.js';
|
|
6
|
-
export { getExecutionRequestsByPhase } from './utils.js';
|
|
7
6
|
export { PublicTxSimulationTester } from './fixtures/index.js';
|
|
8
7
|
export * from './avm/index.js';
|
|
8
|
+
export { getCallRequestsWithCalldataByPhase } from './utils.js';
|
|
@@ -177,7 +177,7 @@ import { TxContractCache } from './tx_contract_cache.js';
|
|
|
177
177
|
return value;
|
|
178
178
|
}
|
|
179
179
|
async getDebugFunctionName(address, selector) {
|
|
180
|
-
return await this.dataSource.
|
|
180
|
+
return await this.dataSource.getDebugFunctionName(address, selector);
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
/**
|
|
@@ -245,7 +245,7 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
245
245
|
}
|
|
246
246
|
async processTx(tx, deadline) {
|
|
247
247
|
const [time, [processedTx, returnValues]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
|
|
248
|
-
this.log.verbose(!tx.hasPublicCalls() ? `Processed tx ${processedTx.hash} with no public calls in ${time}ms` : `Processed tx ${processedTx.hash} with ${tx.
|
|
248
|
+
this.log.verbose(!tx.hasPublicCalls() ? `Processed tx ${processedTx.hash} with no public calls in ${time}ms` : `Processed tx ${processedTx.hash} with ${tx.numberOfPublicCalls()} public calls in ${time}ms`, {
|
|
249
249
|
txHash: processedTx.hash,
|
|
250
250
|
txFee: processedTx.txEffect.transactionFee.toBigInt(),
|
|
251
251
|
revertCode: processedTx.txEffect.revertCode.getCode(),
|
|
@@ -3,8 +3,8 @@ import { type AvmCircuitPublicInputs, AvmExecutionHints, RevertCode } from '@azt
|
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import type { SimulationError } from '@aztec/stdlib/errors';
|
|
5
5
|
import { Gas } from '@aztec/stdlib/gas';
|
|
6
|
-
import { type PrivateToPublicAccumulatedData
|
|
7
|
-
import { type GlobalVariables,
|
|
6
|
+
import { type PrivateToPublicAccumulatedData } from '@aztec/stdlib/kernel';
|
|
7
|
+
import { type GlobalVariables, PublicCallRequestWithCalldata, type StateReference, type Tx, TxExecutionPhase, type TxHash } from '@aztec/stdlib/tx';
|
|
8
8
|
import type { PublicContractsDBInterface } from '../../server.js';
|
|
9
9
|
import { AvmPersistableStateManager } from '../avm/index.js';
|
|
10
10
|
import type { PublicTreesDB } from '../public_db_sources.js';
|
|
@@ -22,9 +22,6 @@ export declare class PublicTxContext {
|
|
|
22
22
|
private readonly setupCallRequests;
|
|
23
23
|
private readonly appLogicCallRequests;
|
|
24
24
|
private readonly teardownCallRequests;
|
|
25
|
-
private readonly setupExecutionRequests;
|
|
26
|
-
private readonly appLogicExecutionRequests;
|
|
27
|
-
private readonly teardownExecutionRequests;
|
|
28
25
|
readonly nonRevertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData;
|
|
29
26
|
readonly revertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData;
|
|
30
27
|
readonly feePayer: AztecAddress;
|
|
@@ -62,11 +59,7 @@ export declare class PublicTxContext {
|
|
|
62
59
|
/**
|
|
63
60
|
* Get the call requests for the specified phase (including args hashes).
|
|
64
61
|
*/
|
|
65
|
-
getCallRequestsForPhase(phase: TxExecutionPhase):
|
|
66
|
-
/**
|
|
67
|
-
* Get the call requests for the specified phase (including actual args).
|
|
68
|
-
*/
|
|
69
|
-
getExecutionRequestsForPhase(phase: TxExecutionPhase): PublicExecutionRequest[];
|
|
62
|
+
getCallRequestsForPhase(phase: TxExecutionPhase): PublicCallRequestWithCalldata[];
|
|
70
63
|
/**
|
|
71
64
|
* How much gas is left as of the specified phase?
|
|
72
65
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_context.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,KAAK,sBAAsB,EAAE,iBAAiB,EAAmB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,GAAG,EAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAGL,KAAK,8BAA8B,
|
|
1
|
+
{"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_context.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,KAAK,sBAAsB,EAAE,iBAAiB,EAAmB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,GAAG,EAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAGL,KAAK,8BAA8B,EAIpC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,eAAe,EACpB,6BAA6B,EAC7B,KAAK,cAAc,EAEnB,KAAK,EAAE,EACP,gBAAgB,EAChB,KAAK,MAAM,EACZ,MAAM,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAI7D;;GAEG;AACH,qBAAa,eAAe;aAgBR,MAAM,EAAE,MAAM;aACd,KAAK,EAAE,iBAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;aACrB,uCAAuC,EAAE,8BAA8B;aACvE,oCAAoC,EAAE,8BAA8B;aACpE,QAAQ,EAAE,YAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK;aACN,KAAK,EAAE,iBAAiB;IA7B1C,OAAO,CAAC,GAAG,CAAS;IAGpB,OAAO,CAAC,eAAe,CAAoB;IAEpC,eAAe,EAAE,GAAG,CAAe;IAG1C,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,UAAU,CAA6B;IAExC,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAEjD,OAAO;WAoBa,MAAM,CACxB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,0BAA0B,EACvC,EAAE,EAAE,EAAE,EACN,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO;IAwD7B;;;;OAIG;IACG,IAAI;IAOV;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,YAAY,GAAE,eAAe,GAAG,SAAqB,EAAE,OAAO,SAAK;IA0BnG;;;OAGG;IACH,kBAAkB,IAAI,UAAU;IAKhC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAW1C;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,GAAG,6BAA6B,EAAE;IAWjF;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,GAAG;IAS/C;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG;IAQ5C;;;OAGG;IACH,eAAe,IAAI,GAAG;IAItB;;;;;OAKG;IACH,gBAAgB,IAAI,GAAG;IAOvB;;;OAGG;IACH,sBAAsB,IAAI,GAAG;IAK7B;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,EAAE;IAQ9C;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;OAEG;IACU,8BAA8B,CAAC,iBAAiB,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAyGhH;AAED;;;;;;;;;GASG;AACH,cAAM,iBAAiB;IAKT,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJ3C,OAAO,CAAC,GAAG,CAAS;IAEpB,OAAO,CAAC,2BAA2B,CAAyC;gBAE/C,cAAc,EAAE,0BAA0B;IAIjE,IAAI;IAMV,qBAAqB;IAIrB,QAAQ;IAIF,gBAAgB;IAQhB,kBAAkB;CAOzB"}
|