@aztec/simulator 0.33.0 → 0.35.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/acvm.d.ts +4 -1
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm.js +5 -5
- package/dest/acvm/deserialize.d.ts +3 -5
- package/dest/acvm/deserialize.d.ts.map +1 -1
- package/dest/acvm/deserialize.js +6 -9
- package/dest/acvm/oracle/oracle.d.ts +3 -1
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +14 -6
- package/dest/acvm/oracle/typed_oracle.d.ts +2 -0
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +7 -1
- package/dest/avm/avm_execution_environment.d.ts +6 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +12 -9
- package/dest/avm/avm_gas.js +2 -2
- package/dest/avm/avm_machine_state.d.ts +2 -0
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +24 -6
- package/dest/avm/avm_memory_types.js +6 -6
- package/dest/avm/avm_simulator.js +7 -7
- package/dest/avm/fixtures/index.d.ts +3 -0
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +11 -4
- package/dest/avm/journal/journal.d.ts +15 -13
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +16 -5
- package/dest/avm/journal/trace.d.ts +8 -19
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +48 -116
- package/dest/avm/journal/trace_types.d.ts +23 -4
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.d.ts +2 -1
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +14 -6
- package/dest/avm/opcodes/context_getters.js +2 -2
- package/dest/avm/opcodes/external_calls.d.ts +2 -2
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +26 -10
- package/dest/avm/opcodes/hashing.d.ts +8 -8
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +35 -43
- package/dest/avm/serialization/instruction_serialization.d.ts +1 -1
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +2 -2
- package/dest/client/client_execution_context.d.ts +14 -4
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +28 -13
- package/dest/client/private_execution.d.ts +1 -1
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +10 -8
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +6 -5
- package/dest/client/unconstrained_execution.d.ts +1 -1
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +6 -5
- package/dest/client/view_data_oracle.d.ts +2 -2
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +2 -2
- package/dest/common/index.d.ts +1 -1
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +2 -2
- package/dest/common/packed_values_cache.d.ts +28 -0
- package/dest/common/packed_values_cache.d.ts.map +1 -0
- package/dest/common/packed_values_cache.js +50 -0
- package/dest/index.d.ts +1 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -1
- package/dest/mocks/fixtures.d.ts +42 -0
- package/dest/mocks/fixtures.d.ts.map +1 -0
- package/dest/mocks/fixtures.js +84 -0
- package/dest/mocks/index.d.ts +2 -0
- package/dest/mocks/index.d.ts.map +1 -0
- package/dest/mocks/index.js +2 -0
- package/dest/public/abstract_phase_manager.d.ts +82 -0
- package/dest/public/abstract_phase_manager.d.ts.map +1 -0
- package/dest/public/abstract_phase_manager.js +320 -0
- package/dest/public/app_logic_phase_manager.d.ts +29 -0
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -0
- package/dest/public/app_logic_phase_manager.js +50 -0
- package/dest/public/execution.d.ts +3 -0
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +1 -15
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +80 -83
- package/dest/public/hints_builder.d.ts +23 -0
- package/dest/public/hints_builder.d.ts.map +1 -0
- package/dest/public/hints_builder.js +62 -0
- package/dest/public/index.d.ts +5 -0
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +6 -1
- package/dest/public/phase_manager_factory.d.ts +18 -0
- package/dest/public/phase_manager_factory.d.ts.map +1 -0
- package/dest/public/phase_manager_factory.js +56 -0
- package/dest/public/public_execution_context.d.ts +20 -10
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +35 -23
- package/dest/public/public_executor.d.ts +79 -0
- package/dest/public/public_executor.d.ts.map +1 -0
- package/dest/public/public_executor.js +198 -0
- package/dest/public/public_kernel.d.ts +37 -0
- package/dest/public/public_kernel.d.ts.map +1 -0
- package/dest/public/public_kernel.js +97 -0
- package/dest/public/public_kernel_circuit_simulator.d.ts +31 -0
- package/dest/public/public_kernel_circuit_simulator.d.ts.map +1 -0
- package/dest/public/public_kernel_circuit_simulator.js +2 -0
- package/dest/public/public_processor.d.ts +53 -0
- package/dest/public/public_processor.d.ts.map +1 -0
- package/dest/public/public_processor.js +144 -0
- package/dest/public/setup_phase_manager.d.ts +30 -0
- package/dest/public/setup_phase_manager.d.ts.map +1 -0
- package/dest/public/setup_phase_manager.js +46 -0
- package/dest/public/tail_phase_manager.d.ts +30 -0
- package/dest/public/tail_phase_manager.d.ts.map +1 -0
- package/dest/public/tail_phase_manager.js +60 -0
- package/dest/public/teardown_phase_manager.d.ts +30 -0
- package/dest/public/teardown_phase_manager.d.ts.map +1 -0
- package/dest/public/teardown_phase_manager.js +46 -0
- package/dest/public/transitional_adaptors.d.ts +33 -0
- package/dest/public/transitional_adaptors.d.ts.map +1 -0
- package/dest/public/transitional_adaptors.js +162 -0
- package/dest/public/utils.d.ts +8 -0
- package/dest/public/utils.d.ts.map +1 -0
- package/dest/public/utils.js +29 -0
- package/dest/simulator/acvm_native.d.ts +19 -3
- package/dest/simulator/acvm_native.d.ts.map +1 -1
- package/dest/simulator/acvm_native.js +75 -48
- package/dest/simulator/acvm_wasm.d.ts.map +1 -1
- package/dest/simulator/acvm_wasm.js +3 -4
- package/package.json +8 -5
- package/src/acvm/acvm.ts +8 -5
- package/src/acvm/deserialize.ts +5 -9
- package/src/acvm/oracle/oracle.ts +15 -5
- package/src/acvm/oracle/typed_oracle.ts +8 -0
- package/src/avm/avm_execution_environment.ts +17 -17
- package/src/avm/avm_gas.ts +1 -1
- package/src/avm/avm_machine_state.ts +26 -5
- package/src/avm/avm_memory_types.ts +5 -5
- package/src/avm/avm_simulator.ts +6 -6
- package/src/avm/fixtures/index.ts +14 -1
- package/src/avm/journal/journal.ts +37 -17
- package/src/avm/journal/trace.ts +59 -121
- package/src/avm/journal/trace_types.ts +39 -39
- package/src/avm/opcodes/accrued_substate.ts +17 -5
- package/src/avm/opcodes/context_getters.ts +1 -1
- package/src/avm/opcodes/external_calls.ts +32 -9
- package/src/avm/opcodes/hashing.ts +38 -54
- package/src/avm/serialization/instruction_serialization.ts +1 -1
- package/src/client/client_execution_context.ts +30 -11
- package/src/client/private_execution.ts +9 -8
- package/src/client/simulator.ts +7 -3
- package/src/client/unconstrained_execution.ts +5 -4
- package/src/client/view_data_oracle.ts +1 -1
- package/src/common/index.ts +1 -1
- package/src/common/packed_values_cache.ts +55 -0
- package/src/index.ts +1 -0
- package/src/mocks/fixtures.ts +169 -0
- package/src/mocks/index.ts +1 -0
- package/src/public/abstract_phase_manager.ts +571 -0
- package/src/public/app_logic_phase_manager.ts +76 -0
- package/src/public/execution.ts +4 -0
- package/src/public/executor.ts +93 -93
- package/src/public/hints_builder.ts +119 -0
- package/src/public/index.ts +5 -0
- package/src/public/phase_manager_factory.ts +126 -0
- package/src/public/public_execution_context.ts +43 -37
- package/src/public/public_executor.ts +267 -0
- package/src/public/public_kernel.ts +139 -0
- package/src/public/public_kernel_circuit_simulator.ts +36 -0
- package/src/public/public_processor.ts +212 -0
- package/src/public/setup_phase_manager.ts +66 -0
- package/src/public/tail_phase_manager.ts +120 -0
- package/src/public/teardown_phase_manager.ts +66 -0
- package/src/public/transitional_adaptors.ts +249 -0
- package/src/public/utils.ts +31 -0
- package/src/simulator/acvm_native.ts +94 -47
- package/src/simulator/acvm_wasm.ts +7 -3
- package/dest/avm/temporary_executor_migration.d.ts +0 -27
- package/dest/avm/temporary_executor_migration.d.ts.map +0 -1
- package/dest/avm/temporary_executor_migration.js +0 -94
- package/dest/common/packed_args_cache.d.ts +0 -28
- package/dest/common/packed_args_cache.d.ts.map +0 -1
- package/dest/common/packed_args_cache.js +0 -50
- package/src/avm/temporary_executor_migration.ts +0 -136
- package/src/common/packed_args_cache.ts +0 -55
package/dest/public/executor.js
CHANGED
|
@@ -1,55 +1,93 @@
|
|
|
1
1
|
import { UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
|
|
2
|
-
import { Fr, PublicCircuitPublicInputs } from '@aztec/circuits.js';
|
|
2
|
+
import { Fr, Gas, PublicCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { spawn } from 'child_process';
|
|
5
5
|
import fs from 'fs/promises';
|
|
6
6
|
import path from 'path';
|
|
7
|
-
import { Oracle, acvm, extractCallStack,
|
|
7
|
+
import { Oracle, acvm, extractCallStack, witnessMapToFields } from '../acvm/index.js';
|
|
8
8
|
import { AvmContext } from '../avm/avm_context.js';
|
|
9
9
|
import { AvmMachineState } from '../avm/avm_machine_state.js';
|
|
10
10
|
import { AvmSimulator } from '../avm/avm_simulator.js';
|
|
11
11
|
import { HostStorage } from '../avm/journal/host_storage.js';
|
|
12
12
|
import { AvmPersistableStateManager } from '../avm/journal/index.js';
|
|
13
|
-
import { isAvmBytecode, temporaryConvertAvmResults, temporaryCreateAvmExecutionEnvironment, } from '../avm/temporary_executor_migration.js';
|
|
14
13
|
import { AcirSimulator } from '../client/simulator.js';
|
|
15
14
|
import { ExecutionError, createSimulationError } from '../common/errors.js';
|
|
16
15
|
import { SideEffectCounter } from '../common/index.js';
|
|
17
|
-
import {
|
|
16
|
+
import { PackedValuesCache } from '../common/packed_values_cache.js';
|
|
18
17
|
import { checkValidStaticCall } from './execution.js';
|
|
19
18
|
import { PublicExecutionContext } from './public_execution_context.js';
|
|
19
|
+
import { convertAvmResults, createAvmExecutionEnvironment, isAvmBytecode } from './transitional_adaptors.js';
|
|
20
20
|
/**
|
|
21
21
|
* Execute a public function and return the execution result.
|
|
22
22
|
*/
|
|
23
|
-
export async function executePublicFunction(context,
|
|
23
|
+
export async function executePublicFunction(context, nested) {
|
|
24
|
+
const bytecode = await context.contractsDb.getBytecode(context.execution.contractAddress, context.execution.functionData.selector);
|
|
25
|
+
if (!bytecode) {
|
|
26
|
+
throw new Error(`Bytecode not found for ${context.execution.contractAddress}:${context.execution.functionData.selector}`);
|
|
27
|
+
}
|
|
28
|
+
if (isAvmBytecode(bytecode)) {
|
|
29
|
+
return await executePublicFunctionAvm(context);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return await executePublicFunctionAcvm(context, bytecode, nested);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function executePublicFunctionAvm(executionContext) {
|
|
36
|
+
const address = executionContext.execution.contractAddress;
|
|
37
|
+
const selector = executionContext.execution.functionData.selector;
|
|
38
|
+
const log = createDebugLogger('aztec:simulator:public_execution');
|
|
39
|
+
log.verbose(`[AVM] Executing public external function ${address.toString()}:${selector}.`);
|
|
40
|
+
// Temporary code to construct the AVM context
|
|
41
|
+
// These data structures will permeate across the simulator when the public executor is phased out
|
|
42
|
+
const hostStorage = new HostStorage(executionContext.stateDb, executionContext.contractsDb, executionContext.commitmentsDb);
|
|
43
|
+
const worldStateJournal = new AvmPersistableStateManager(hostStorage);
|
|
44
|
+
const executionEnv = createAvmExecutionEnvironment(executionContext.execution, executionContext.header, executionContext.globalVariables);
|
|
45
|
+
const machineState = new AvmMachineState(executionContext.execution.callContext.gasLeft);
|
|
46
|
+
const context = new AvmContext(worldStateJournal, executionEnv, machineState);
|
|
47
|
+
const simulator = new AvmSimulator(context);
|
|
48
|
+
const result = await simulator.execute();
|
|
49
|
+
const newWorldState = context.persistableState.flush();
|
|
50
|
+
log.verbose(`[AVM] ${address.toString()}:${selector} returned, reverted: ${result.reverted}, reason: ${result.revertReason}.`);
|
|
51
|
+
return await convertAvmResults(executionContext, newWorldState, result, machineState);
|
|
52
|
+
}
|
|
53
|
+
async function executePublicFunctionAcvm(context, acir, nested) {
|
|
24
54
|
const execution = context.execution;
|
|
25
55
|
const { contractAddress, functionData } = execution;
|
|
26
56
|
const selector = functionData.selector;
|
|
27
|
-
log
|
|
57
|
+
const log = createDebugLogger('aztec:simulator:public_execution');
|
|
58
|
+
log.verbose(`[ACVM] Executing public external function ${contractAddress.toString()}:${selector}.`);
|
|
28
59
|
const initialWitness = context.getInitialWitness();
|
|
29
60
|
const acvmCallback = new Oracle(context);
|
|
30
|
-
const { partialWitness, reverted, revertReason } = await
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
reverted: false,
|
|
34
|
-
revertReason: undefined,
|
|
35
|
-
}))
|
|
36
|
-
.catch((err) => {
|
|
37
|
-
const ee = new ExecutionError(err.message, {
|
|
38
|
-
contractAddress,
|
|
39
|
-
functionSelector: selector,
|
|
40
|
-
}, extractCallStack(err), { cause: err });
|
|
41
|
-
if (nested) {
|
|
42
|
-
// If we're nested, throw the error so the parent can handle it
|
|
43
|
-
throw ee;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
61
|
+
const { partialWitness, returnWitnessMap, reverted, revertReason } = await (async () => {
|
|
62
|
+
try {
|
|
63
|
+
const result = await acvm(await AcirSimulator.getSolver(), acir, initialWitness, acvmCallback);
|
|
46
64
|
return {
|
|
47
|
-
partialWitness:
|
|
48
|
-
|
|
49
|
-
|
|
65
|
+
partialWitness: result.partialWitness,
|
|
66
|
+
returnWitnessMap: result.returnWitness,
|
|
67
|
+
reverted: false,
|
|
68
|
+
revertReason: undefined,
|
|
50
69
|
};
|
|
51
70
|
}
|
|
52
|
-
|
|
71
|
+
catch (err_) {
|
|
72
|
+
const err = err_;
|
|
73
|
+
const ee = new ExecutionError(err.message, {
|
|
74
|
+
contractAddress,
|
|
75
|
+
functionSelector: selector,
|
|
76
|
+
}, extractCallStack(err), { cause: err });
|
|
77
|
+
if (nested) {
|
|
78
|
+
// If we're nested, throw the error so the parent can handle it
|
|
79
|
+
throw ee;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return {
|
|
83
|
+
partialWitness: undefined,
|
|
84
|
+
returnWitnessMap: undefined,
|
|
85
|
+
reverted: true,
|
|
86
|
+
revertReason: createSimulationError(ee),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
})();
|
|
53
91
|
if (reverted) {
|
|
54
92
|
if (!revertReason) {
|
|
55
93
|
throw new Error('Reverted but no revert reason');
|
|
@@ -71,27 +109,30 @@ export async function executePublicFunction(context, acir, nested, log = createD
|
|
|
71
109
|
unencryptedLogs: UnencryptedFunctionL2Logs.empty(),
|
|
72
110
|
reverted,
|
|
73
111
|
revertReason,
|
|
112
|
+
gasLeft: Gas.empty(),
|
|
74
113
|
};
|
|
75
114
|
}
|
|
76
115
|
if (!partialWitness) {
|
|
77
116
|
throw new Error('No partial witness returned from ACVM');
|
|
78
117
|
}
|
|
79
|
-
const returnWitness =
|
|
80
|
-
const {
|
|
118
|
+
const returnWitness = witnessMapToFields(returnWitnessMap);
|
|
119
|
+
const { returnsHash, nullifierReadRequests: nullifierReadRequestsPadded, nullifierNonExistentReadRequests: nullifierNonExistentReadRequestsPadded, newL2ToL1Msgs, newNoteHashes: newNoteHashesPadded, newNullifiers: newNullifiersPadded, startSideEffectCounter, endSideEffectCounter, } = PublicCircuitPublicInputs.fromFields(returnWitness);
|
|
120
|
+
const returnValues = await context.unpackReturns(returnsHash);
|
|
81
121
|
const nullifierReadRequests = nullifierReadRequestsPadded.filter(v => !v.isEmpty());
|
|
82
122
|
const nullifierNonExistentReadRequests = nullifierNonExistentReadRequestsPadded.filter(v => !v.isEmpty());
|
|
83
123
|
const newL2ToL1Messages = newL2ToL1Msgs.filter(v => !v.isEmpty());
|
|
84
124
|
const newNoteHashes = newNoteHashesPadded.filter(v => !v.isEmpty());
|
|
85
125
|
const newNullifiers = newNullifiersPadded.filter(v => !v.isEmpty());
|
|
86
126
|
const { contractStorageReads, contractStorageUpdateRequests } = context.getStorageActionData();
|
|
87
|
-
log(`Contract storage reads: ${contractStorageReads
|
|
127
|
+
log.debug(`Contract storage reads: ${contractStorageReads
|
|
88
128
|
.map(r => r.toFriendlyJSON() + ` - sec: ${r.sideEffectCounter}`)
|
|
89
129
|
.join(', ')}`);
|
|
90
|
-
log(`Contract storage update requests: ${contractStorageUpdateRequests
|
|
130
|
+
log.debug(`Contract storage update requests: ${contractStorageUpdateRequests
|
|
91
131
|
.map(r => r.toFriendlyJSON() + ` - sec: ${r.sideEffectCounter}`)
|
|
92
132
|
.join(', ')}`);
|
|
93
133
|
const nestedExecutions = context.getNestedExecutions();
|
|
94
134
|
const unencryptedLogs = context.getUnencryptedLogs();
|
|
135
|
+
const gasLeft = context.execution.callContext.gasLeft; // No gas metering for ACVM
|
|
95
136
|
return {
|
|
96
137
|
execution,
|
|
97
138
|
newNoteHashes,
|
|
@@ -108,6 +149,7 @@ export async function executePublicFunction(context, acir, nested, log = createD
|
|
|
108
149
|
unencryptedLogs,
|
|
109
150
|
reverted: false,
|
|
110
151
|
revertReason: undefined,
|
|
152
|
+
gasLeft,
|
|
111
153
|
};
|
|
112
154
|
}
|
|
113
155
|
/**
|
|
@@ -128,61 +170,16 @@ export class PublicExecutor {
|
|
|
128
170
|
* @returns The result of the run plus all nested runs.
|
|
129
171
|
*/
|
|
130
172
|
async simulate(execution, globalVariables, sideEffectCounter = 0) {
|
|
131
|
-
const selector = execution.functionData.selector;
|
|
132
|
-
const bytecode = await this.contractsDb.getBytecode(execution.contractAddress, selector);
|
|
133
|
-
if (!bytecode) {
|
|
134
|
-
throw new Error(`Bytecode not found for ${execution.contractAddress}:${selector}`);
|
|
135
|
-
}
|
|
136
|
-
if (isAvmBytecode(bytecode)) {
|
|
137
|
-
return await this.simulateAvm(execution, globalVariables, sideEffectCounter);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
return await this.simulateAcvm(execution, globalVariables, sideEffectCounter);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Executes a public execution request with the ACVM.
|
|
145
|
-
* @param execution - The execution to run.
|
|
146
|
-
* @param globalVariables - The global variables to use.
|
|
147
|
-
* @returns The result of the run plus all nested runs.
|
|
148
|
-
*/
|
|
149
|
-
async simulateAcvm(execution, globalVariables, sideEffectCounter = 0) {
|
|
150
|
-
const selector = execution.functionData.selector;
|
|
151
|
-
const acir = await this.contractsDb.getBytecode(execution.contractAddress, selector);
|
|
152
|
-
if (!acir) {
|
|
153
|
-
throw new Error(`Bytecode not found for ${execution.contractAddress}:${selector}`);
|
|
154
|
-
}
|
|
155
173
|
// Functions can request to pack arguments before calling other functions.
|
|
156
174
|
// We use this cache to hold the packed arguments.
|
|
157
|
-
const packedArgs =
|
|
175
|
+
const packedArgs = PackedValuesCache.create([]);
|
|
158
176
|
const context = new PublicExecutionContext(execution, this.header, globalVariables, packedArgs, new SideEffectCounter(sideEffectCounter), this.stateDb, this.contractsDb, this.commitmentsDb);
|
|
159
|
-
const executionResult = await executePublicFunction(context,
|
|
177
|
+
const executionResult = await executePublicFunction(context, /*nested=*/ false);
|
|
160
178
|
if (executionResult.execution.callContext.isStaticCall) {
|
|
161
179
|
checkValidStaticCall(executionResult.newNoteHashes, executionResult.newNullifiers, executionResult.contractStorageUpdateRequests, executionResult.newL2ToL1Messages, executionResult.unencryptedLogs);
|
|
162
180
|
}
|
|
163
181
|
return executionResult;
|
|
164
182
|
}
|
|
165
|
-
/**
|
|
166
|
-
* Executes a public execution request in the AVM.
|
|
167
|
-
* @param execution - The execution to run.
|
|
168
|
-
* @param globalVariables - The global variables to use.
|
|
169
|
-
* @returns The result of the run plus all nested runs.
|
|
170
|
-
*/
|
|
171
|
-
async simulateAvm(execution, globalVariables, _sideEffectCounter = 0) {
|
|
172
|
-
// Temporary code to construct the AVM context
|
|
173
|
-
// These data structures will permeate across the simulator when the public executor is phased out
|
|
174
|
-
const hostStorage = new HostStorage(this.stateDb, this.contractsDb, this.commitmentsDb);
|
|
175
|
-
const worldStateJournal = new AvmPersistableStateManager(hostStorage);
|
|
176
|
-
const executionEnv = temporaryCreateAvmExecutionEnvironment(execution, globalVariables);
|
|
177
|
-
// TODO(@spalladino) Load initial gas from the public execution request
|
|
178
|
-
const machineState = new AvmMachineState(1e10, 1e10, 1e10);
|
|
179
|
-
const context = new AvmContext(worldStateJournal, executionEnv, machineState);
|
|
180
|
-
const simulator = new AvmSimulator(context);
|
|
181
|
-
const result = await simulator.execute();
|
|
182
|
-
const newWorldState = context.persistableState.flush();
|
|
183
|
-
// TODO(@spalladino) Read gas left from machineState and return it
|
|
184
|
-
return temporaryConvertAvmResults(execution, newWorldState, result);
|
|
185
|
-
}
|
|
186
183
|
/**
|
|
187
184
|
* These functions are currently housed in the temporary executor as it relies on access to
|
|
188
185
|
* oracles like the contractsDB and this is the least intrusive way to achieve this.
|
|
@@ -212,14 +209,14 @@ export class PublicExecutor {
|
|
|
212
209
|
await fs.writeFile(bytecodePath, bytecode);
|
|
213
210
|
const bbExec = path.join(bbPath, 'build', 'bin', 'bb');
|
|
214
211
|
const bbArgs = ['avm_prove', '-b', bytecodePath, '-d', calldataPath, '-o', proofPath];
|
|
215
|
-
this.log(`calling '${bbExec} ${bbArgs.join(' ')}'`);
|
|
212
|
+
this.log.debug(`calling '${bbExec} ${bbArgs.join(' ')}'`);
|
|
216
213
|
const bbBinary = spawn(bbExec, bbArgs);
|
|
217
214
|
// The binary writes the proof and the verification key to the write path.
|
|
218
215
|
return new Promise((resolve, reject) => {
|
|
219
216
|
let stdout = '';
|
|
220
217
|
let stderr = '';
|
|
221
218
|
bbBinary.on('close', () => {
|
|
222
|
-
this.log(`Proof generation complete. Reading proof and vk from ${proofPath}.`);
|
|
219
|
+
this.log.verbose(`Proof generation complete. Reading proof and vk from ${proofPath}.`);
|
|
223
220
|
return resolve(Promise.all([fs.readFile(proofPath), fs.readFile(path.join(artifactsPath, 'vk'))]));
|
|
224
221
|
});
|
|
225
222
|
// Catch stdout.
|
|
@@ -228,7 +225,7 @@ export class PublicExecutor {
|
|
|
228
225
|
});
|
|
229
226
|
bbBinary.stdout.on('end', () => {
|
|
230
227
|
if (stdout.length > 0) {
|
|
231
|
-
this.log(`stdout: ${stdout}`);
|
|
228
|
+
this.log.debug(`stdout: ${stdout}`);
|
|
232
229
|
}
|
|
233
230
|
});
|
|
234
231
|
// Catch stderr.
|
|
@@ -237,7 +234,7 @@ export class PublicExecutor {
|
|
|
237
234
|
});
|
|
238
235
|
bbBinary.stderr.on('end', () => {
|
|
239
236
|
if (stderr.length > 0) {
|
|
240
|
-
this.log(`stderr: ${stderr}`);
|
|
237
|
+
this.log.warn(`stderr: ${stderr}`);
|
|
241
238
|
}
|
|
242
239
|
});
|
|
243
240
|
// Catch and propagate errors from spawning
|
|
@@ -264,7 +261,7 @@ export class PublicExecutor {
|
|
|
264
261
|
await fs.writeFile(proofPath, proof);
|
|
265
262
|
const bbExec = path.join(bbPath, 'build', 'bin', 'bb');
|
|
266
263
|
const bbArgs = ['avm_verify', '-p', proofPath];
|
|
267
|
-
this.log(`calling '${bbPath} ${bbArgs.join(' ')}'`);
|
|
264
|
+
this.log.debug(`calling '${bbPath} ${bbArgs.join(' ')}'`);
|
|
268
265
|
const bbBinary = spawn(bbExec, bbArgs);
|
|
269
266
|
// The binary prints to stdout 1 if the proof is valid and 0 if it is not.
|
|
270
267
|
return new Promise((resolve, reject) => {
|
|
@@ -282,4 +279,4 @@ export class PublicExecutor {
|
|
|
282
279
|
});
|
|
283
280
|
}
|
|
284
281
|
}
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxFQUFFLEVBQXFDLHlCQUF5QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0IsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRXhCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsMEJBQTBCLEVBQzFCLHNDQUFzQyxHQUN2QyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFN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
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFxQyx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXJFLE9BQU8sRUFBb0Qsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FB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
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Fr, MAX_NEW_NULLIFIERS_PER_TX, type MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX, type MAX_NULLIFIER_READ_REQUESTS_PER_TX, MembershipWitness, type PublicDataRead, PublicDataTreeLeafPreimage, type ReadRequestContext, type SideEffectLinkedToNoteHash } from '@aztec/circuits.js';
|
|
2
|
+
import { type Tuple } from '@aztec/foundation/serialize';
|
|
3
|
+
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
4
|
+
export declare class HintsBuilder {
|
|
5
|
+
private db;
|
|
6
|
+
constructor(db: MerkleTreeOperations);
|
|
7
|
+
getNullifierReadRequestHints(nullifierReadRequests: Tuple<ReadRequestContext, typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>, nullifiersNonRevertible: Tuple<SideEffectLinkedToNoteHash, typeof MAX_NEW_NULLIFIERS_PER_TX>, nullifiersRevertible: Tuple<SideEffectLinkedToNoteHash, typeof MAX_NEW_NULLIFIERS_PER_TX>): Promise<import("@aztec/circuits.js").NullifierReadRequestHints>;
|
|
8
|
+
getNullifierNonExistentReadRequestHints(nullifierNonExistentReadRequests: Tuple<ReadRequestContext, typeof MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX>, nullifiersNonRevertible: Tuple<SideEffectLinkedToNoteHash, typeof MAX_NEW_NULLIFIERS_PER_TX>, nullifiersRevertible: Tuple<SideEffectLinkedToNoteHash, typeof MAX_NEW_NULLIFIERS_PER_TX>): Promise<import("@aztec/circuits.js").NullifierNonExistentReadRequestHints>;
|
|
9
|
+
getNullifierMembershipWitness(nullifier: Fr): Promise<{
|
|
10
|
+
membershipWitness: MembershipWitness<20>;
|
|
11
|
+
leafPreimage: import("@aztec/foundation/trees").IndexedTreeLeafPreimage;
|
|
12
|
+
} | undefined>;
|
|
13
|
+
getLowNullifierMembershipWitness(nullifier: Fr): Promise<{
|
|
14
|
+
membershipWitness: MembershipWitness<20>;
|
|
15
|
+
leafPreimage: import("@aztec/foundation/trees").IndexedTreeLeafPreimage;
|
|
16
|
+
}>;
|
|
17
|
+
private getNullifierMembershipWitnessWithPreimage;
|
|
18
|
+
getPublicDataReadsInfo(publicDataReads: PublicDataRead[]): Promise<{
|
|
19
|
+
newPublicDataReadsWitnesses: [MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>];
|
|
20
|
+
newPublicDataReadsPreimages: [PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage];
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=hints_builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hints_builder.d.ts","sourceRoot":"","sources":["../../src/public/hints_builder.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EAAE,EACP,yBAAyB,EACzB,KAAK,+CAA+C,EACpD,KAAK,kCAAkC,EAEvC,iBAAiB,EAGjB,KAAK,cAAc,EACnB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAIhC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,qBAAa,YAAY;IACX,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,oBAAoB;IAE5C,4BAA4B,CAC1B,qBAAqB,EAAE,KAAK,CAAC,kBAAkB,EAAE,OAAO,kCAAkC,CAAC,EAC3F,uBAAuB,EAAE,KAAK,CAAC,0BAA0B,EAAE,OAAO,yBAAyB,CAAC,EAC5F,oBAAoB,EAAE,KAAK,CAAC,0BAA0B,EAAE,OAAO,yBAAyB,CAAC;IAS3F,uCAAuC,CACrC,gCAAgC,EAAE,KAAK,CAAC,kBAAkB,EAAE,OAAO,+CAA+C,CAAC,EACnH,uBAAuB,EAAE,KAAK,CAAC,0BAA0B,EAAE,OAAO,yBAAyB,CAAC,EAC5F,oBAAoB,EAAE,KAAK,CAAC,0BAA0B,EAAE,OAAO,yBAAyB,CAAC;IAUrF,6BAA6B,CAAC,SAAS,EAAE,EAAE;;;;IAS3C,gCAAgC,CAAC,SAAS,EAAE,EAAE;;;;YActC,yCAAyC;IAgBjD,sBAAsB,CAAC,eAAe,EAAE,cAAc,EAAE;;;;CA6B/D"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { MerkleTreeId } from '@aztec/circuit-types';
|
|
2
|
+
import { MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_READS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT, PublicDataTreeLeafPreimage, buildNullifierNonExistentReadRequestHints, buildNullifierReadRequestHints, mergeAccumulatedData, } from '@aztec/circuits.js';
|
|
3
|
+
import { makeTuple } from '@aztec/foundation/array';
|
|
4
|
+
export class HintsBuilder {
|
|
5
|
+
constructor(db) {
|
|
6
|
+
this.db = db;
|
|
7
|
+
}
|
|
8
|
+
getNullifierReadRequestHints(nullifierReadRequests, nullifiersNonRevertible, nullifiersRevertible) {
|
|
9
|
+
return buildNullifierReadRequestHints(this, nullifierReadRequests, mergeAccumulatedData(MAX_NEW_NULLIFIERS_PER_TX, nullifiersNonRevertible, nullifiersRevertible));
|
|
10
|
+
}
|
|
11
|
+
getNullifierNonExistentReadRequestHints(nullifierNonExistentReadRequests, nullifiersNonRevertible, nullifiersRevertible) {
|
|
12
|
+
const pendingNullifiers = mergeAccumulatedData(MAX_NEW_NULLIFIERS_PER_TX, nullifiersNonRevertible, nullifiersRevertible);
|
|
13
|
+
return buildNullifierNonExistentReadRequestHints(this, nullifierNonExistentReadRequests, pendingNullifiers);
|
|
14
|
+
}
|
|
15
|
+
async getNullifierMembershipWitness(nullifier) {
|
|
16
|
+
const index = await this.db.findLeafIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBuffer());
|
|
17
|
+
if (index === undefined) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
return this.getNullifierMembershipWitnessWithPreimage(index);
|
|
21
|
+
}
|
|
22
|
+
async getLowNullifierMembershipWitness(nullifier) {
|
|
23
|
+
const res = await this.db.getPreviousValueIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBigInt());
|
|
24
|
+
if (res === undefined) {
|
|
25
|
+
throw new Error(`Cannot find the low leaf for nullifier ${nullifier.toBigInt()}.`);
|
|
26
|
+
}
|
|
27
|
+
const { index, alreadyPresent } = res;
|
|
28
|
+
if (alreadyPresent) {
|
|
29
|
+
throw new Error(`Nullifier ${nullifier.toBigInt()} already exists in the tree.`);
|
|
30
|
+
}
|
|
31
|
+
return this.getNullifierMembershipWitnessWithPreimage(index);
|
|
32
|
+
}
|
|
33
|
+
async getNullifierMembershipWitnessWithPreimage(index) {
|
|
34
|
+
const siblingPath = await this.db.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, index);
|
|
35
|
+
const membershipWitness = new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple());
|
|
36
|
+
const leafPreimage = await this.db.getLeafPreimage(MerkleTreeId.NULLIFIER_TREE, index);
|
|
37
|
+
if (!leafPreimage) {
|
|
38
|
+
throw new Error(`Cannot find the leaf preimage at index ${index}.`);
|
|
39
|
+
}
|
|
40
|
+
return { membershipWitness, leafPreimage };
|
|
41
|
+
}
|
|
42
|
+
async getPublicDataReadsInfo(publicDataReads) {
|
|
43
|
+
const newPublicDataReadsWitnesses = makeTuple(MAX_PUBLIC_DATA_READS_PER_TX, () => MembershipWitness.empty(PUBLIC_DATA_TREE_HEIGHT, 0n));
|
|
44
|
+
const newPublicDataReadsPreimages = makeTuple(MAX_PUBLIC_DATA_READS_PER_TX, () => PublicDataTreeLeafPreimage.empty());
|
|
45
|
+
for (const i in publicDataReads) {
|
|
46
|
+
const leafSlot = publicDataReads[i].leafSlot.value;
|
|
47
|
+
const lowLeafResult = await this.db.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot);
|
|
48
|
+
if (!lowLeafResult) {
|
|
49
|
+
throw new Error(`Public data tree should have one initial leaf`);
|
|
50
|
+
}
|
|
51
|
+
const preimage = await this.db.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
|
|
52
|
+
const path = await this.db.getSiblingPath(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
|
|
53
|
+
newPublicDataReadsWitnesses[i] = new MembershipWitness(PUBLIC_DATA_TREE_HEIGHT, BigInt(lowLeafResult.index), path.toTuple());
|
|
54
|
+
newPublicDataReadsPreimages[i] = preimage;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
newPublicDataReadsWitnesses,
|
|
58
|
+
newPublicDataReadsPreimages,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludHNfYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvaGludHNfYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUVMLHlCQUF5QixFQUd6Qiw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQix1QkFBdUIsRUFFdkIsMEJBQTBCLEVBRzFCLHlDQUF5QyxFQUN6Qyw4QkFBOEIsRUFDOUIsb0JBQW9CLEdBQ3JCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSXBELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQW9CLEVBQXdCO1FBQXhCLE9BQUUsR0FBRixFQUFFLENBQXNCO0lBQUcsQ0FBQztJQUVoRCw0QkFBNEIsQ0FDMUIscUJBQTJGLEVBQzNGLHVCQUE0RixFQUM1RixvQkFBeUY7UUFFekYsT0FBTyw4QkFBOEIsQ0FDbkMsSUFBSSxFQUNKLHFCQUFxQixFQUNyQixvQkFBb0IsQ0FBQyx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsQ0FBQyxDQUMvRixDQUFDO0lBQ0osQ0FBQztJQUVELHVDQUF1QyxDQUNyQyxnQ0FBbUgsRUFDbkgsdUJBQTRGLEVBQzVGLG9CQUF5RjtRQUV6RixNQUFNLGlCQUFpQixHQUFHLG9CQUFvQixDQUM1Qyx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixDQUNyQixDQUFDO1FBQ0YsT0FBTyx5Q0FBeUMsQ0FBQyxJQUFJLEVBQUUsZ0NBQWdDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsS0FBSyxDQUFDLDZCQUE2QixDQUFDLFNBQWE7UUFDL0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMseUNBQXlDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxTQUFhO1FBQ2xELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25HLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUVELE1BQU0sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ3RDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLFNBQVMsQ0FBQyxRQUFRLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMseUNBQXlDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxLQUFhO1FBQ25FLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQStCLFlBQVksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkgsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUM3QyxxQkFBcUIsRUFDckIsS0FBSyxFQUNMLFdBQVcsQ0FBQyxPQUFPLEVBQWdDLENBQ3BELENBQUM7UUFFRixNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLGVBQWlDO1FBQzVELE1BQU0sMkJBQTJCLEdBRzdCLFNBQVMsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4RyxNQUFNLDJCQUEyQixHQUMvQixTQUFTLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVwRixLQUFLLE1BQU0sQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ25ELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbkcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7WUFDbkUsQ0FBQztZQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUYsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxpQkFBaUIsQ0FDcEQsdUJBQXVCLEVBQ3ZCLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQzNCLElBQUksQ0FBQyxPQUFPLEVBQWtDLENBQy9DLENBQUM7WUFDRiwyQkFBMkIsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUF1QyxDQUFDO1FBQzNFLENBQUM7UUFDRCxPQUFPO1lBQ0wsMkJBQTJCO1lBQzNCLDJCQUEyQjtTQUM1QixDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
|
package/dest/public/index.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export * from './db.js';
|
|
2
2
|
export { type PublicExecution, type PublicExecutionResult, isPublicExecutionResult, collectPublicDataReads, collectPublicDataUpdateRequests, } from './execution.js';
|
|
3
3
|
export { PublicExecutor } from './executor.js';
|
|
4
|
+
export { PublicProcessor, PublicProcessorFactory } from './public_processor.js';
|
|
5
|
+
export * from './public_executor.js';
|
|
6
|
+
export * from './abstract_phase_manager.js';
|
|
7
|
+
export * from './public_kernel_circuit_simulator.js';
|
|
8
|
+
export * from './public_kernel.js';
|
|
4
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,SAAS,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAChF,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oBAAoB,CAAC"}
|
package/dest/public/index.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export * from './db.js';
|
|
2
2
|
export { isPublicExecutionResult, collectPublicDataReads, collectPublicDataUpdateRequests, } from './execution.js';
|
|
3
3
|
export { PublicExecutor } from './executor.js';
|
|
4
|
-
|
|
4
|
+
export { PublicProcessor, PublicProcessorFactory } from './public_processor.js';
|
|
5
|
+
export * from './public_executor.js';
|
|
6
|
+
export * from './abstract_phase_manager.js';
|
|
7
|
+
export * from './public_kernel_circuit_simulator.js';
|
|
8
|
+
export * from './public_kernel.js';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLCtCQUErQixHQUNoQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hGLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsb0JBQW9CLENBQUMifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type GlobalVariables, type Header, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
|
+
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
|
+
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
|
+
import { type AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_executor.js';
|
|
7
|
+
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
|
+
export declare class PhaseDidNotChangeError extends Error {
|
|
9
|
+
constructor(phase: PublicKernelPhase);
|
|
10
|
+
}
|
|
11
|
+
export declare class CannotTransitionToSetupError extends Error {
|
|
12
|
+
constructor();
|
|
13
|
+
}
|
|
14
|
+
export declare class PhaseManagerFactory {
|
|
15
|
+
static phaseFromTx(tx: Tx, db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB): AbstractPhaseManager | undefined;
|
|
16
|
+
static phaseFromOutput(output: PublicKernelCircuitPublicInputs, currentPhaseManager: AbstractPhaseManager, db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB): AbstractPhaseManager | undefined;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=phase_manager_factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase_manager_factory.d.ts","sourceRoot":"","sources":["../../src/public/phase_manager_factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,KAAK,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAKzF,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,KAAK,EAAE,iBAAiB;CAGrC;AAED,qBAAa,4BAA6B,SAAQ,KAAK;;CAItD;AAED,qBAAa,mBAAmB;WAChB,WAAW,CACvB,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,GAC3B,oBAAoB,GAAG,SAAS;WAqCrB,eAAe,CAC3B,MAAM,EAAE,+BAA+B,EACvC,mBAAmB,EAAE,oBAAoB,EACzC,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,GAC3B,oBAAoB,GAAG,SAAS;CA2CpC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { PublicKernelPhase } from './abstract_phase_manager.js';
|
|
2
|
+
import { AppLogicPhaseManager } from './app_logic_phase_manager.js';
|
|
3
|
+
import { SetupPhaseManager } from './setup_phase_manager.js';
|
|
4
|
+
import { TailPhaseManager } from './tail_phase_manager.js';
|
|
5
|
+
import { TeardownPhaseManager } from './teardown_phase_manager.js';
|
|
6
|
+
export class PhaseDidNotChangeError extends Error {
|
|
7
|
+
constructor(phase) {
|
|
8
|
+
super(`Tried to advance the phase from [${phase}] when the circuit still needs [${phase}]`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class CannotTransitionToSetupError extends Error {
|
|
12
|
+
constructor() {
|
|
13
|
+
super('Cannot transition to setup phase');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class PhaseManagerFactory {
|
|
17
|
+
static phaseFromTx(tx, db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB) {
|
|
18
|
+
const data = tx.data.forPublic;
|
|
19
|
+
if (data.needsSetup) {
|
|
20
|
+
return new SetupPhaseManager(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB);
|
|
21
|
+
}
|
|
22
|
+
else if (data.needsAppLogic) {
|
|
23
|
+
return new AppLogicPhaseManager(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB);
|
|
24
|
+
}
|
|
25
|
+
else if (data.needsTeardown) {
|
|
26
|
+
return new TeardownPhaseManager(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
static phaseFromOutput(output, currentPhaseManager, db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB) {
|
|
33
|
+
if (output.needsSetup) {
|
|
34
|
+
throw new CannotTransitionToSetupError();
|
|
35
|
+
}
|
|
36
|
+
else if (output.needsAppLogic) {
|
|
37
|
+
if (currentPhaseManager.phase === PublicKernelPhase.APP_LOGIC) {
|
|
38
|
+
throw new PhaseDidNotChangeError(currentPhaseManager.phase);
|
|
39
|
+
}
|
|
40
|
+
return new AppLogicPhaseManager(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB);
|
|
41
|
+
}
|
|
42
|
+
else if (output.needsTeardown) {
|
|
43
|
+
if (currentPhaseManager.phase === PublicKernelPhase.TEARDOWN) {
|
|
44
|
+
throw new PhaseDidNotChangeError(currentPhaseManager.phase);
|
|
45
|
+
}
|
|
46
|
+
return new TeardownPhaseManager(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB);
|
|
47
|
+
}
|
|
48
|
+
else if (currentPhaseManager.phase !== PublicKernelPhase.TAIL) {
|
|
49
|
+
return new TailPhaseManager(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhhc2VfbWFuYWdlcl9mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9waGFzZV9tYW5hZ2VyX2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUE2QixpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5FLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxLQUFLO0lBQy9DLFlBQVksS0FBd0I7UUFDbEMsS0FBSyxDQUFDLG9DQUFvQyxLQUFLLG1DQUFtQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQzlGLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxLQUFLO0lBQ3JEO1FBQ0UsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQUN2QixNQUFNLENBQUMsV0FBVyxDQUN2QixFQUFNLEVBQ04sRUFBd0IsRUFDeEIsY0FBOEIsRUFDOUIsWUFBMEMsRUFDMUMsZUFBZ0MsRUFDaEMsZ0JBQXdCLEVBQ3hCLGlCQUE4QyxFQUM5QyxhQUE0QjtRQUU1QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVUsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksaUJBQWlCLENBQzFCLEVBQUUsRUFDRixjQUFjLEVBQ2QsWUFBWSxFQUNaLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGFBQWEsQ0FDZCxDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxvQkFBb0IsQ0FDN0IsRUFBRSxFQUNGLGNBQWMsRUFDZCxZQUFZLEVBQ1osZUFBZSxFQUNmLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsYUFBYSxDQUNkLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLG9CQUFvQixDQUM3QixFQUFFLEVBQ0YsY0FBYyxFQUNkLFlBQVksRUFDWixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixhQUFhLENBQ2QsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUMzQixNQUF1QyxFQUN2QyxtQkFBeUMsRUFDekMsRUFBd0IsRUFDeEIsY0FBOEIsRUFDOUIsWUFBMEMsRUFDMUMsZUFBZ0MsRUFDaEMsZ0JBQXdCLEVBQ3hCLGlCQUE4QyxFQUM5QyxhQUE0QjtRQUU1QixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksNEJBQTRCLEVBQUUsQ0FBQztRQUMzQyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEMsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLEtBQUssaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzlELE1BQU0sSUFBSSxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsT0FBTyxJQUFJLG9CQUFvQixDQUM3QixFQUFFLEVBQ0YsY0FBYyxFQUNkLFlBQVksRUFDWixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixhQUFhLENBQ2QsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNoQyxJQUFJLG1CQUFtQixDQUFDLEtBQUssS0FBSyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxJQUFJLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELENBQUM7WUFDRCxPQUFPLElBQUksb0JBQW9CLENBQzdCLEVBQUUsRUFDRixjQUFjLEVBQ2QsWUFBWSxFQUNaLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGFBQWEsQ0FDZCxDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksbUJBQW1CLENBQUMsS0FBSyxLQUFLLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hFLE9BQU8sSUFBSSxnQkFBZ0IsQ0FDekIsRUFBRSxFQUNGLGNBQWMsRUFDZCxZQUFZLEVBQ1osZUFBZSxFQUNmLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsYUFBYSxDQUNkLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UnencryptedFunctionL2Logs, type UnencryptedL2Log } from '@aztec/circuit-types';
|
|
2
2
|
import { type FunctionSelector, type GlobalVariables, type Header } from '@aztec/circuits.js';
|
|
3
3
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
6
|
import { type ContractInstance } from '@aztec/types/contracts';
|
|
7
7
|
import { TypedOracle } from '../acvm/index.js';
|
|
8
|
-
import { type
|
|
8
|
+
import { type PackedValuesCache, type SideEffectCounter } from '../common/index.js';
|
|
9
9
|
import { type CommitmentsDB, type PublicContractsDB, type PublicStateDB } from './db.js';
|
|
10
10
|
import { type PublicExecution, type PublicExecutionResult } from './execution.js';
|
|
11
11
|
/**
|
|
@@ -16,13 +16,13 @@ export declare class PublicExecutionContext extends TypedOracle {
|
|
|
16
16
|
* Data for this execution.
|
|
17
17
|
*/
|
|
18
18
|
readonly execution: PublicExecution;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
private readonly
|
|
19
|
+
readonly header: Header;
|
|
20
|
+
readonly globalVariables: GlobalVariables;
|
|
21
|
+
private readonly packedValuesCache;
|
|
22
22
|
private readonly sideEffectCounter;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
readonly stateDb: PublicStateDB;
|
|
24
|
+
readonly contractsDb: PublicContractsDB;
|
|
25
|
+
readonly commitmentsDb: CommitmentsDB;
|
|
26
26
|
private log;
|
|
27
27
|
private storageActions;
|
|
28
28
|
private nestedExecutions;
|
|
@@ -31,7 +31,7 @@ export declare class PublicExecutionContext extends TypedOracle {
|
|
|
31
31
|
/**
|
|
32
32
|
* Data for this execution.
|
|
33
33
|
*/
|
|
34
|
-
execution: PublicExecution, header: Header, globalVariables: GlobalVariables,
|
|
34
|
+
execution: PublicExecution, header: Header, globalVariables: GlobalVariables, packedValuesCache: PackedValuesCache, sideEffectCounter: SideEffectCounter, stateDb: PublicStateDB, contractsDb: PublicContractsDB, commitmentsDb: CommitmentsDB, log?: import("@aztec/foundation/log").Logger);
|
|
35
35
|
/**
|
|
36
36
|
* Generates the initial witness for a public function.
|
|
37
37
|
* @param args - The arguments to the function.
|
|
@@ -62,6 +62,16 @@ export declare class PublicExecutionContext extends TypedOracle {
|
|
|
62
62
|
* @param args - Arguments to pack
|
|
63
63
|
*/
|
|
64
64
|
packArguments(args: Fr[]): Promise<Fr>;
|
|
65
|
+
/**
|
|
66
|
+
* Pack the given returns.
|
|
67
|
+
* @param returns - Returns to pack
|
|
68
|
+
*/
|
|
69
|
+
packReturns(returns: Fr[]): Promise<Fr>;
|
|
70
|
+
/**
|
|
71
|
+
* Unpack the given returns.
|
|
72
|
+
* @param returnsHash - Returns hash to unpack
|
|
73
|
+
*/
|
|
74
|
+
unpackReturns(returnsHash: Fr): Promise<Fr[]>;
|
|
65
75
|
/**
|
|
66
76
|
* Fetches a message from the db, given its key.
|
|
67
77
|
* @param contractAddress - Address of a contract by which the message was emitted.
|
|
@@ -103,7 +113,7 @@ export declare class PublicExecutionContext extends TypedOracle {
|
|
|
103
113
|
* @returns The return values of the public function.
|
|
104
114
|
*/
|
|
105
115
|
callPublicFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<Fr[]>;
|
|
106
|
-
|
|
116
|
+
checkNullifierExists(nullifier: Fr): Promise<boolean>;
|
|
107
117
|
getContractInstance(address: AztecAddress): Promise<ContractInstance>;
|
|
108
118
|
}
|
|
109
119
|
//# sourceMappingURL=public_execution_context.d.ts.map
|