@aztec/simulator 0.56.0 → 0.58.0
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/acvm/oracle/oracle.d.ts +2 -5
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +7 -38
- package/dest/acvm/oracle/typed_oracle.d.ts +4 -8
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +1 -10
- package/dest/avm/avm_execution_environment.d.ts +2 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +3 -4
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +2 -3
- package/dest/avm/avm_memory_types.d.ts +10 -5
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +31 -16
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +5 -2
- package/dest/avm/errors.d.ts +1 -1
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/errors.js +12 -3
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +4 -4
- package/dest/avm/journal/journal.d.ts +2 -1
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +8 -8
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +54 -47
- package/dest/avm/opcodes/addressing_mode.d.ts +3 -2
- package/dest/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/avm/opcodes/addressing_mode.js +25 -21
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +7 -6
- package/dest/avm/opcodes/bitwise.d.ts +3 -3
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +19 -16
- package/dest/avm/opcodes/commitment.d.ts.map +1 -1
- package/dest/avm/opcodes/commitment.js +6 -5
- package/dest/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/avm/opcodes/comparators.js +7 -6
- package/dest/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/avm/opcodes/contract.js +8 -6
- package/dest/avm/opcodes/control_flow.js +7 -7
- package/dest/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/avm/opcodes/conversion.js +11 -10
- package/dest/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/avm/opcodes/ec_add.js +25 -15
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +6 -5
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +37 -26
- package/dest/avm/opcodes/hashing.d.ts +1 -3
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +39 -48
- package/dest/avm/opcodes/instruction.d.ts +2 -6
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction.js +3 -9
- package/dest/avm/opcodes/instruction_impl.d.ts +1 -2
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction_impl.js +2 -5
- package/dest/avm/opcodes/memory.d.ts +0 -12
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +24 -54
- package/dest/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/avm/opcodes/misc.js +10 -9
- package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +1 -1
- package/dest/avm/opcodes/multi_scalar_mul.js +35 -20
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +13 -11
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +2 -3
- package/dest/avm/serialization/instruction_serialization.d.ts +32 -34
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +34 -37
- package/dest/avm/test_utils.d.ts +1 -2
- package/dest/avm/test_utils.d.ts.map +1 -1
- package/dest/avm/test_utils.js +1 -1
- package/dest/client/client_execution_context.d.ts +6 -30
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +36 -54
- package/dest/client/db_oracle.d.ts +1 -2
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/db_oracle.js +1 -1
- package/dest/client/index.d.ts +1 -1
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +2 -2
- package/dest/client/private_execution.d.ts +12 -3
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +29 -23
- package/dest/client/simulator.d.ts +2 -3
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +1 -1
- package/dest/client/view_data_oracle.d.ts +1 -2
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +1 -1
- package/dest/common/debug_fn_name.d.ts +4 -0
- package/dest/common/debug_fn_name.d.ts.map +1 -0
- package/dest/common/debug_fn_name.js +15 -0
- package/dest/common/index.d.ts +0 -1
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +1 -2
- package/dest/public/db_interfaces.d.ts +1 -2
- package/dest/public/db_interfaces.d.ts.map +1 -1
- package/dest/public/dual_side_effect_trace.d.ts +76 -0
- package/dest/public/dual_side_effect_trace.d.ts.map +1 -0
- package/dest/public/dual_side_effect_trace.js +109 -0
- package/dest/public/enqueued_call_side_effect_trace.d.ts +114 -0
- package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -0
- package/dest/public/enqueued_call_side_effect_trace.js +314 -0
- package/dest/public/enqueued_call_simulator.d.ts +2 -2
- package/dest/public/enqueued_call_simulator.d.ts.map +1 -1
- package/dest/public/enqueued_call_simulator.js +20 -10
- package/dest/public/enqueued_calls_processor.d.ts +2 -2
- package/dest/public/enqueued_calls_processor.d.ts.map +1 -1
- package/dest/public/enqueued_calls_processor.js +3 -5
- package/dest/public/execution.d.ts +11 -5
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +13 -1
- package/dest/public/executor.d.ts +7 -6
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +24 -15
- package/dest/public/fee_payment.d.ts +1 -1
- package/dest/public/fee_payment.d.ts.map +1 -1
- package/dest/public/fee_payment.js +4 -7
- package/dest/public/hints_builder.d.ts +2 -2
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +2 -2
- package/dest/public/public_db_sources.d.ts +4 -5
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +15 -11
- package/dest/public/public_kernel_tail_simulator.d.ts +3 -3
- package/dest/public/public_kernel_tail_simulator.d.ts.map +1 -1
- package/dest/public/public_kernel_tail_simulator.js +1 -1
- package/dest/public/public_processor.d.ts +7 -10
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +9 -10
- package/dest/public/side_effect_errors.d.ts +4 -0
- package/dest/public/side_effect_errors.d.ts.map +1 -0
- package/dest/public/side_effect_errors.js +7 -0
- package/dest/public/side_effect_trace.d.ts +3 -4
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +54 -29
- package/dest/public/side_effect_trace_interface.d.ts +1 -1
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/package.json +12 -9
- package/src/acvm/oracle/oracle.ts +8 -86
- package/src/acvm/oracle/typed_oracle.ts +8 -33
- package/src/avm/avm_execution_environment.ts +1 -3
- package/src/avm/avm_gas.ts +1 -2
- package/src/avm/avm_memory_types.ts +38 -16
- package/src/avm/avm_simulator.ts +7 -1
- package/src/avm/errors.ts +11 -3
- package/src/avm/fixtures/index.ts +2 -3
- package/src/avm/journal/journal.ts +14 -10
- package/src/avm/opcodes/accrued_substate.ts +53 -61
- package/src/avm/opcodes/addressing_mode.ts +27 -24
- package/src/avm/opcodes/arithmetic.ts +6 -8
- package/src/avm/opcodes/bitwise.ts +18 -18
- package/src/avm/opcodes/commitment.ts +6 -7
- package/src/avm/opcodes/comparators.ts +6 -8
- package/src/avm/opcodes/contract.ts +7 -8
- package/src/avm/opcodes/control_flow.ts +6 -6
- package/src/avm/opcodes/conversion.ts +10 -12
- package/src/avm/opcodes/ec_add.ts +29 -24
- package/src/avm/opcodes/environment_getters.ts +5 -4
- package/src/avm/opcodes/external_calls.ts +37 -30
- package/src/avm/opcodes/hashing.ts +38 -63
- package/src/avm/opcodes/instruction.ts +3 -10
- package/src/avm/opcodes/instruction_impl.ts +0 -3
- package/src/avm/opcodes/memory.ts +23 -67
- package/src/avm/opcodes/misc.ts +9 -11
- package/src/avm/opcodes/multi_scalar_mul.ts +31 -26
- package/src/avm/opcodes/storage.ts +12 -10
- package/src/avm/serialization/bytecode_serialization.ts +0 -2
- package/src/avm/serialization/instruction_serialization.ts +1 -4
- package/src/avm/test_utils.ts +1 -2
- package/src/client/client_execution_context.ts +46 -97
- package/src/client/db_oracle.ts +6 -2
- package/src/client/index.ts +1 -1
- package/src/client/private_execution.ts +45 -15
- package/src/client/simulator.ts +2 -3
- package/src/client/view_data_oracle.ts +1 -2
- package/src/common/debug_fn_name.ts +22 -0
- package/src/common/index.ts +0 -1
- package/src/public/db_interfaces.ts +5 -2
- package/src/public/dual_side_effect_trace.ts +173 -0
- package/src/public/enqueued_call_side_effect_trace.ts +552 -0
- package/src/public/enqueued_call_simulator.ts +35 -14
- package/src/public/enqueued_calls_processor.ts +4 -6
- package/src/public/execution.ts +15 -6
- package/src/public/executor.ts +42 -19
- package/src/public/fee_payment.ts +4 -6
- package/src/public/hints_builder.ts +9 -11
- package/src/public/public_db_sources.ts +31 -22
- package/src/public/public_kernel_tail_simulator.ts +3 -3
- package/src/public/public_processor.ts +17 -13
- package/src/public/side_effect_errors.ts +6 -0
- package/src/public/side_effect_trace.ts +74 -29
- package/src/public/side_effect_trace_interface.ts +2 -2
- package/dest/client/execution_result.d.ts +0 -104
- package/dest/client/execution_result.d.ts.map +0 -1
- package/dest/client/execution_result.js +0 -136
- package/dest/common/return_values.d.ts +0 -11
- package/dest/common/return_values.d.ts.map +0 -1
- package/dest/common/return_values.js +0 -13
- package/src/client/execution_result.ts +0 -228
- package/src/common/return_values.ts +0 -18
|
@@ -7,12 +7,11 @@ import {
|
|
|
7
7
|
type NullifierMembershipWitness,
|
|
8
8
|
type PublicDataWitness,
|
|
9
9
|
} from '@aztec/circuit-types';
|
|
10
|
-
import { type Header, type KeyValidationRequest } from '@aztec/circuits.js';
|
|
10
|
+
import { type ContractInstance, type Header, type KeyValidationRequest } from '@aztec/circuits.js';
|
|
11
11
|
import { siloNullifier } from '@aztec/circuits.js/hash';
|
|
12
12
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
13
13
|
import { Fr } from '@aztec/foundation/fields';
|
|
14
14
|
import { applyStringFormatting, createDebugLogger } from '@aztec/foundation/log';
|
|
15
|
-
import { type ContractInstance } from '@aztec/types/contracts';
|
|
16
15
|
|
|
17
16
|
import { type NoteData, TypedOracle } from '../acvm/index.js';
|
|
18
17
|
import { type DBOracle } from './db_oracle.js';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type AztecAddress, Fr, FunctionSelector, PUBLIC_DISPATCH_SELECTOR } from '@aztec/circuits.js';
|
|
2
|
+
|
|
3
|
+
import { type WorldStateDB } from '../public/public_db_sources.js';
|
|
4
|
+
|
|
5
|
+
export async function getPublicFunctionDebugName(
|
|
6
|
+
db: WorldStateDB,
|
|
7
|
+
contractAddress: AztecAddress,
|
|
8
|
+
fn: FunctionSelector,
|
|
9
|
+
calldata: Fr[],
|
|
10
|
+
): Promise<string> {
|
|
11
|
+
if (fn.equals(FunctionSelector.fromField(new Fr(PUBLIC_DISPATCH_SELECTOR)))) {
|
|
12
|
+
// If the function is a dispatch, we need to look up the target function which
|
|
13
|
+
// is expected to be the first argument.
|
|
14
|
+
const targetFunction =
|
|
15
|
+
calldata[0] !== undefined
|
|
16
|
+
? await db.getDebugFunctionName(contractAddress, FunctionSelector.fromField(calldata[0]))
|
|
17
|
+
: `<calldata[0] undefined>`;
|
|
18
|
+
return `${targetFunction} (via dispatch)`;
|
|
19
|
+
} else {
|
|
20
|
+
return (await db.getDebugFunctionName(contractAddress, fn)) ?? `${contractAddress}:${fn}`;
|
|
21
|
+
}
|
|
22
|
+
}
|
package/src/common/index.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { type NullifierMembershipWitness } from '@aztec/circuit-types';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
type ContractInstanceWithAddress,
|
|
4
|
+
type FunctionSelector,
|
|
5
|
+
type L1_TO_L2_MSG_TREE_HEIGHT,
|
|
6
|
+
} from '@aztec/circuits.js';
|
|
3
7
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
8
|
import { type Fr } from '@aztec/foundation/fields';
|
|
5
|
-
import { type ContractInstanceWithAddress } from '@aztec/types/contracts';
|
|
6
9
|
|
|
7
10
|
import { type MessageLoadOracleInputs } from '../acvm/index.js';
|
|
8
11
|
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type CombinedConstantData,
|
|
3
|
+
type ContractInstanceWithAddress,
|
|
4
|
+
type Gas,
|
|
5
|
+
type VMCircuitPublicInputs,
|
|
6
|
+
} from '@aztec/circuits.js';
|
|
7
|
+
import { type Fr } from '@aztec/foundation/fields';
|
|
8
|
+
|
|
9
|
+
import { assert } from 'console';
|
|
10
|
+
|
|
11
|
+
import { type AvmContractCallResult } from '../avm/avm_contract_call_result.js';
|
|
12
|
+
import { type AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
13
|
+
import { type PublicEnqueuedCallSideEffectTrace } from './enqueued_call_side_effect_trace.js';
|
|
14
|
+
import { type PublicExecutionResult } from './execution.js';
|
|
15
|
+
import { type PublicSideEffectTrace } from './side_effect_trace.js';
|
|
16
|
+
import { type PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
|
|
17
|
+
|
|
18
|
+
export type TracedContractInstance = { exists: boolean } & ContractInstanceWithAddress;
|
|
19
|
+
|
|
20
|
+
export class DualSideEffectTrace implements PublicSideEffectTraceInterface {
|
|
21
|
+
constructor(
|
|
22
|
+
public readonly innerCallTrace: PublicSideEffectTrace,
|
|
23
|
+
public readonly enqueuedCallTrace: PublicEnqueuedCallSideEffectTrace,
|
|
24
|
+
) {}
|
|
25
|
+
|
|
26
|
+
public fork() {
|
|
27
|
+
return new DualSideEffectTrace(this.innerCallTrace.fork(), this.enqueuedCallTrace.fork());
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public getCounter() {
|
|
31
|
+
assert(this.innerCallTrace.getCounter() == this.enqueuedCallTrace.getCounter());
|
|
32
|
+
return this.innerCallTrace.getCounter();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public tracePublicStorageRead(storageAddress: Fr, slot: Fr, value: Fr, exists: boolean, cached: boolean) {
|
|
36
|
+
this.innerCallTrace.tracePublicStorageRead(storageAddress, slot, value, exists, cached);
|
|
37
|
+
this.enqueuedCallTrace.tracePublicStorageRead(storageAddress, slot, value, exists, cached);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public tracePublicStorageWrite(storageAddress: Fr, slot: Fr, value: Fr) {
|
|
41
|
+
this.innerCallTrace.tracePublicStorageWrite(storageAddress, slot, value);
|
|
42
|
+
this.enqueuedCallTrace.tracePublicStorageWrite(storageAddress, slot, value);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// TODO(8287): _exists can be removed once we have the vm properly handling the equality check
|
|
46
|
+
public traceNoteHashCheck(_storageAddress: Fr, noteHash: Fr, leafIndex: Fr, exists: boolean) {
|
|
47
|
+
this.innerCallTrace.traceNoteHashCheck(_storageAddress, noteHash, leafIndex, exists);
|
|
48
|
+
this.enqueuedCallTrace.traceNoteHashCheck(_storageAddress, noteHash, leafIndex, exists);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public traceNewNoteHash(_storageAddress: Fr, noteHash: Fr) {
|
|
52
|
+
this.innerCallTrace.traceNewNoteHash(_storageAddress, noteHash);
|
|
53
|
+
this.enqueuedCallTrace.traceNewNoteHash(_storageAddress, noteHash);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public traceNullifierCheck(storageAddress: Fr, nullifier: Fr, leafIndex: Fr, exists: boolean, isPending: boolean) {
|
|
57
|
+
this.innerCallTrace.traceNullifierCheck(storageAddress, nullifier, leafIndex, exists, isPending);
|
|
58
|
+
this.enqueuedCallTrace.traceNullifierCheck(storageAddress, nullifier, leafIndex, exists, isPending);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public traceNewNullifier(storageAddress: Fr, nullifier: Fr) {
|
|
62
|
+
this.innerCallTrace.traceNewNullifier(storageAddress, nullifier);
|
|
63
|
+
this.enqueuedCallTrace.traceNewNullifier(storageAddress, nullifier);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public traceL1ToL2MessageCheck(contractAddress: Fr, msgHash: Fr, msgLeafIndex: Fr, exists: boolean) {
|
|
67
|
+
this.innerCallTrace.traceL1ToL2MessageCheck(contractAddress, msgHash, msgLeafIndex, exists);
|
|
68
|
+
this.enqueuedCallTrace.traceL1ToL2MessageCheck(contractAddress, msgHash, msgLeafIndex, exists);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public traceNewL2ToL1Message(contractAddress: Fr, recipient: Fr, content: Fr) {
|
|
72
|
+
this.innerCallTrace.traceNewL2ToL1Message(contractAddress, recipient, content);
|
|
73
|
+
this.enqueuedCallTrace.traceNewL2ToL1Message(contractAddress, recipient, content);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public traceUnencryptedLog(contractAddress: Fr, log: Fr[]) {
|
|
77
|
+
this.innerCallTrace.traceUnencryptedLog(contractAddress, log);
|
|
78
|
+
this.enqueuedCallTrace.traceUnencryptedLog(contractAddress, log);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
public traceGetContractInstance(instance: TracedContractInstance) {
|
|
82
|
+
this.innerCallTrace.traceGetContractInstance(instance);
|
|
83
|
+
this.enqueuedCallTrace.traceGetContractInstance(instance);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Trace a nested call.
|
|
88
|
+
* Accept some results from a finished nested call's trace into this one.
|
|
89
|
+
*/
|
|
90
|
+
public traceNestedCall(
|
|
91
|
+
/** The trace of the nested call. */
|
|
92
|
+
nestedCallTrace: this,
|
|
93
|
+
/** The execution environment of the nested call. */
|
|
94
|
+
nestedEnvironment: AvmExecutionEnvironment,
|
|
95
|
+
/** How much gas was available for this public execution. */
|
|
96
|
+
startGasLeft: Gas,
|
|
97
|
+
/** How much gas was left after this public execution. */
|
|
98
|
+
endGasLeft: Gas,
|
|
99
|
+
/** Bytecode used for this execution. */
|
|
100
|
+
bytecode: Buffer,
|
|
101
|
+
/** The call's results */
|
|
102
|
+
avmCallResults: AvmContractCallResult,
|
|
103
|
+
/** Function name for logging */
|
|
104
|
+
functionName: string = 'unknown',
|
|
105
|
+
) {
|
|
106
|
+
this.innerCallTrace.traceNestedCall(
|
|
107
|
+
nestedCallTrace.innerCallTrace,
|
|
108
|
+
nestedEnvironment,
|
|
109
|
+
startGasLeft,
|
|
110
|
+
endGasLeft,
|
|
111
|
+
bytecode,
|
|
112
|
+
avmCallResults,
|
|
113
|
+
functionName,
|
|
114
|
+
);
|
|
115
|
+
this.enqueuedCallTrace.traceNestedCall(
|
|
116
|
+
nestedCallTrace.enqueuedCallTrace,
|
|
117
|
+
nestedEnvironment,
|
|
118
|
+
startGasLeft,
|
|
119
|
+
endGasLeft,
|
|
120
|
+
bytecode,
|
|
121
|
+
avmCallResults,
|
|
122
|
+
functionName,
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Convert this trace to a PublicExecutionResult for use externally to the simulator.
|
|
128
|
+
*/
|
|
129
|
+
public toPublicExecutionResult(
|
|
130
|
+
/** The execution environment of the nested call. */
|
|
131
|
+
avmEnvironment: AvmExecutionEnvironment,
|
|
132
|
+
/** How much gas was available for this public execution. */
|
|
133
|
+
startGasLeft: Gas,
|
|
134
|
+
/** How much gas was left after this public execution. */
|
|
135
|
+
endGasLeft: Gas,
|
|
136
|
+
/** Bytecode used for this execution. */
|
|
137
|
+
bytecode: Buffer,
|
|
138
|
+
/** The call's results */
|
|
139
|
+
avmCallResults: AvmContractCallResult,
|
|
140
|
+
/** Function name for logging */
|
|
141
|
+
functionName: string = 'unknown',
|
|
142
|
+
): PublicExecutionResult {
|
|
143
|
+
return this.innerCallTrace.toPublicExecutionResult(
|
|
144
|
+
avmEnvironment,
|
|
145
|
+
startGasLeft,
|
|
146
|
+
endGasLeft,
|
|
147
|
+
bytecode,
|
|
148
|
+
avmCallResults,
|
|
149
|
+
functionName,
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
public toVMCircuitPublicInputs(
|
|
154
|
+
/** Constants */
|
|
155
|
+
constants: CombinedConstantData,
|
|
156
|
+
/** The execution environment of the nested call. */
|
|
157
|
+
avmEnvironment: AvmExecutionEnvironment,
|
|
158
|
+
/** How much gas was available for this public execution. */
|
|
159
|
+
startGasLeft: Gas,
|
|
160
|
+
/** How much gas was left after this public execution. */
|
|
161
|
+
endGasLeft: Gas,
|
|
162
|
+
/** The call's results */
|
|
163
|
+
avmCallResults: AvmContractCallResult,
|
|
164
|
+
): VMCircuitPublicInputs {
|
|
165
|
+
return this.enqueuedCallTrace.toVMCircuitPublicInputs(
|
|
166
|
+
constants,
|
|
167
|
+
avmEnvironment,
|
|
168
|
+
startGasLeft,
|
|
169
|
+
endGasLeft,
|
|
170
|
+
avmCallResults,
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
}
|