@aztec/simulator 0.40.1 → 0.42.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 +2 -2
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm.js +3 -3
- package/dest/acvm/oracle/oracle.d.ts +6 -2
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +31 -19
- package/dest/acvm/oracle/typed_oracle.d.ts +8 -11
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +17 -5
- package/dest/acvm/serialize.js +2 -2
- package/dest/avm/avm_execution_environment.d.ts +4 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +7 -5
- package/dest/avm/avm_gas.d.ts +1 -5
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +67 -73
- package/dest/avm/avm_simulator.d.ts +5 -0
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +12 -4
- package/dest/avm/errors.d.ts +6 -0
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/errors.js +10 -1
- 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 +15 -3
- package/dest/avm/index.d.ts +2 -0
- package/dest/avm/index.d.ts.map +1 -0
- package/dest/avm/index.js +2 -0
- package/dest/avm/journal/host_storage.d.ts +1 -1
- package/dest/avm/journal/host_storage.d.ts.map +1 -1
- package/dest/avm/journal/journal.d.ts +4 -3
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +10 -11
- package/dest/avm/journal/nullifiers.d.ts +17 -5
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/nullifiers.js +27 -10
- package/dest/avm/journal/public_storage.d.ts +19 -6
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.js +30 -12
- package/dest/avm/journal/trace.d.ts +2 -0
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +7 -1
- package/dest/avm/journal/trace_types.d.ts +1 -0
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/journal/trace_types.js +1 -1
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +6 -7
- package/dest/avm/opcodes/arithmetic.d.ts +1 -7
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +1 -12
- package/dest/avm/opcodes/conversion.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 +25 -13
- package/dest/avm/opcodes/instruction.d.ts +1 -1
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction.js +6 -4
- package/dest/avm/opcodes/memory.d.ts +0 -4
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +1 -7
- package/dest/avm/opcodes/storage.d.ts +0 -12
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +3 -18
- package/dest/avm/serialization/bytecode_serialization.js +2 -2
- package/dest/client/client_execution_context.d.ts +30 -20
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +59 -39
- package/dest/client/db_oracle.d.ts +17 -12
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/execution_note_cache.js +2 -2
- package/dest/client/execution_result.d.ts +17 -2
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +32 -4
- package/dest/client/private_execution.d.ts +2 -3
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +22 -8
- package/dest/client/simulator.d.ts +0 -16
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +13 -30
- package/dest/client/unconstrained_execution.d.ts +2 -3
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +5 -7
- package/dest/client/view_data_oracle.d.ts +12 -10
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +17 -11
- package/dest/common/index.d.ts +1 -0
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +2 -1
- package/dest/common/return_values.d.ts +11 -0
- package/dest/common/return_values.d.ts.map +1 -0
- package/dest/common/return_values.js +13 -0
- package/dest/index.d.ts +3 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +4 -2
- package/dest/mocks/fixtures.d.ts +15 -10
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +22 -17
- package/dest/{simulator → providers}/acvm_native.d.ts.map +1 -1
- package/dest/{simulator → providers}/acvm_native.js +13 -14
- package/dest/providers/acvm_wasm.d.ts.map +1 -0
- package/dest/providers/acvm_wasm.js +15 -0
- package/dest/providers/index.d.ts.map +1 -0
- package/dest/{simulator → providers}/index.js +1 -1
- package/dest/{simulator → providers}/simulation_provider.d.ts.map +1 -1
- package/dest/{simulator → providers}/simulation_provider.js +1 -1
- package/dest/public/abstract_phase_manager.d.ts +43 -42
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +81 -103
- package/dest/public/app_logic_phase_manager.d.ts +7 -8
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/public/app_logic_phase_manager.js +14 -14
- package/dest/public/{db.d.ts → db_interfaces.d.ts} +3 -3
- package/dest/public/db_interfaces.d.ts.map +1 -0
- package/dest/public/db_interfaces.js +2 -0
- package/dest/public/execution.d.ts +17 -14
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +3 -30
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +32 -279
- package/dest/public/fee_payment.d.ts +11 -0
- package/dest/public/fee_payment.d.ts.map +1 -0
- package/dest/public/fee_payment.js +24 -0
- package/dest/public/hints_builder.d.ts +3 -2
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +8 -4
- package/dest/public/index.d.ts +4 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +5 -3
- package/dest/public/phase_manager_factory.d.ts +1 -1
- package/dest/public/phase_manager_factory.d.ts.map +1 -1
- package/dest/public/{public_executor.d.ts → public_db_sources.d.ts} +3 -2
- package/dest/public/public_db_sources.d.ts.map +1 -0
- package/dest/public/public_db_sources.js +198 -0
- package/dest/public/public_kernel.js +14 -14
- package/dest/public/public_processor.d.ts +8 -6
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +48 -29
- package/dest/public/setup_phase_manager.d.ts +7 -9
- package/dest/public/setup_phase_manager.d.ts.map +1 -1
- package/dest/public/setup_phase_manager.js +11 -20
- package/dest/public/tail_phase_manager.d.ts +5 -11
- package/dest/public/tail_phase_manager.d.ts.map +1 -1
- package/dest/public/tail_phase_manager.js +16 -36
- package/dest/public/teardown_phase_manager.d.ts +7 -9
- package/dest/public/teardown_phase_manager.d.ts.map +1 -1
- package/dest/public/teardown_phase_manager.js +15 -21
- package/dest/public/transitional_adaptors.d.ts +3 -2
- package/dest/public/transitional_adaptors.d.ts.map +1 -1
- package/dest/public/transitional_adaptors.js +24 -8
- package/dest/public/utils.d.ts +2 -2
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +21 -14
- package/package.json +12 -9
- package/src/acvm/acvm.ts +0 -3
- package/src/acvm/oracle/oracle.ts +53 -27
- package/src/acvm/oracle/typed_oracle.ts +25 -16
- package/src/acvm/serialize.ts +1 -1
- package/src/avm/avm_execution_environment.ts +9 -5
- package/src/avm/avm_gas.ts +66 -73
- package/src/avm/avm_simulator.ts +14 -3
- package/src/avm/errors.ts +10 -0
- package/src/avm/fixtures/index.ts +22 -2
- package/src/avm/index.ts +1 -0
- package/src/avm/journal/host_storage.ts +1 -1
- package/src/avm/journal/journal.ts +15 -14
- package/src/avm/journal/nullifiers.ts +27 -14
- package/src/avm/journal/public_storage.ts +30 -16
- package/src/avm/journal/trace.ts +12 -0
- package/src/avm/journal/trace_types.ts +1 -0
- package/src/avm/opcodes/accrued_substate.ts +5 -6
- package/src/avm/opcodes/arithmetic.ts +1 -14
- package/src/avm/opcodes/conversion.ts +1 -1
- package/src/avm/opcodes/external_calls.ts +26 -10
- package/src/avm/opcodes/instruction.ts +5 -3
- package/src/avm/opcodes/memory.ts +1 -8
- package/src/avm/opcodes/storage.ts +3 -20
- package/src/avm/serialization/bytecode_serialization.ts +1 -1
- package/src/client/client_execution_context.ts +70 -44
- package/src/client/db_oracle.ts +18 -12
- package/src/client/execution_note_cache.ts +1 -1
- package/src/client/execution_result.ts +41 -3
- package/src/client/private_execution.ts +38 -20
- package/src/client/simulator.ts +11 -32
- package/src/client/unconstrained_execution.ts +9 -12
- package/src/client/view_data_oracle.ts +20 -12
- package/src/common/index.ts +1 -0
- package/src/common/return_values.ts +18 -0
- package/src/index.ts +3 -1
- package/src/mocks/fixtures.ts +31 -33
- package/src/{simulator → providers}/acvm_native.ts +21 -19
- package/src/{simulator → providers}/acvm_wasm.ts +2 -16
- package/src/public/abstract_phase_manager.ts +146 -207
- package/src/public/app_logic_phase_manager.ts +23 -39
- package/src/public/{db.ts → db_interfaces.ts} +2 -2
- package/src/public/execution.ts +17 -14
- package/src/public/executor.ts +51 -391
- package/src/public/fee_payment.ts +26 -0
- package/src/public/hints_builder.ts +17 -3
- package/src/public/index.ts +4 -2
- package/src/public/phase_manager_factory.ts +1 -1
- package/src/public/{public_executor.ts → public_db_sources.ts} +3 -2
- package/src/public/public_kernel.ts +24 -24
- package/src/public/public_processor.ts +82 -38
- package/src/public/setup_phase_manager.ts +20 -45
- package/src/public/tail_phase_manager.ts +18 -68
- package/src/public/teardown_phase_manager.ts +22 -41
- package/src/public/transitional_adaptors.ts +24 -13
- package/src/public/utils.ts +20 -14
- package/dest/client/logs_cache.d.ts +0 -33
- package/dest/client/logs_cache.d.ts.map +0 -1
- package/dest/client/logs_cache.js +0 -59
- package/dest/public/db.d.ts.map +0 -1
- package/dest/public/db.js +0 -2
- package/dest/public/public_execution_context.d.ts +0 -121
- package/dest/public/public_execution_context.d.ts.map +0 -1
- package/dest/public/public_execution_context.js +0 -214
- package/dest/public/public_executor.d.ts.map +0 -1
- package/dest/public/public_executor.js +0 -197
- package/dest/public/state_actions.d.ts +0 -39
- package/dest/public/state_actions.d.ts.map +0 -1
- package/dest/public/state_actions.js +0 -80
- package/dest/simulator/acvm_wasm.d.ts.map +0 -1
- package/dest/simulator/acvm_wasm.js +0 -22
- package/dest/simulator/index.d.ts.map +0 -1
- package/src/client/logs_cache.ts +0 -65
- package/src/public/public_execution_context.ts +0 -289
- package/src/public/state_actions.ts +0 -102
- /package/dest/{simulator → providers}/acvm_native.d.ts +0 -0
- /package/dest/{simulator → providers}/acvm_wasm.d.ts +0 -0
- /package/dest/{simulator → providers}/index.d.ts +0 -0
- /package/dest/{simulator → providers}/simulation_provider.d.ts +0 -0
- /package/src/{simulator → providers}/index.ts +0 -0
- /package/src/{simulator → providers}/simulation_provider.ts +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
|
-
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
2
|
+
import { AbstractPhaseManager, PublicKernelPhase, makeAvmProvingRequest } from './abstract_phase_manager.js';
|
|
3
3
|
/**
|
|
4
4
|
* The phase manager responsible for performing the fee preparation phase.
|
|
5
5
|
*/
|
|
@@ -9,33 +9,24 @@ export class SetupPhaseManager extends AbstractPhaseManager {
|
|
|
9
9
|
this.publicContractsDB = publicContractsDB;
|
|
10
10
|
this.publicStateDB = publicStateDB;
|
|
11
11
|
}
|
|
12
|
-
async handle(tx, previousPublicKernelOutput
|
|
12
|
+
async handle(tx, previousPublicKernelOutput) {
|
|
13
13
|
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
14
|
-
|
|
14
|
+
// TODO(#6464): Should we allow emitting contracts in the private setup phase?
|
|
15
|
+
// if so, this should only add contracts that were deployed during private app logic.
|
|
16
|
+
await this.publicContractsDB.addNewContracts(tx);
|
|
17
|
+
const { publicProvingInformation, kernelOutput, newUnencryptedLogs, revertReason, gasUsed } = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput).catch(
|
|
15
18
|
// the abstract phase manager throws if simulation gives error in a non-revertible phase
|
|
16
19
|
async (err) => {
|
|
17
20
|
await this.publicStateDB.rollbackToCommit();
|
|
18
21
|
throw err;
|
|
19
22
|
});
|
|
20
|
-
tx.unencryptedLogs.addFunctionLogs(
|
|
23
|
+
tx.unencryptedLogs.addFunctionLogs(newUnencryptedLogs);
|
|
21
24
|
await this.publicStateDB.checkpoint();
|
|
22
25
|
// Return a list of setup proving requests
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
type: PublicKernelType.SETUP,
|
|
26
|
-
inputs: input,
|
|
27
|
-
};
|
|
28
|
-
return request;
|
|
26
|
+
const publicProvingRequests = publicProvingInformation.map(info => {
|
|
27
|
+
return makeAvmProvingRequest(info, PublicKernelType.SETUP);
|
|
29
28
|
});
|
|
30
|
-
return {
|
|
31
|
-
kernelRequests,
|
|
32
|
-
kernelInputs,
|
|
33
|
-
publicKernelOutput,
|
|
34
|
-
publicKernelProof,
|
|
35
|
-
revertReason,
|
|
36
|
-
returnValues: undefined,
|
|
37
|
-
gasUsed,
|
|
38
|
-
};
|
|
29
|
+
return { publicProvingRequests, publicKernelOutput: kernelOutput, revertReason, returnValues: [], gasUsed };
|
|
39
30
|
}
|
|
40
31
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvc2V0dXBfcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQXNDLE1BQU0sc0JBQXNCLENBQUM7QUFLNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJN0c7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsb0JBQW9CO0lBQ3pELFlBQ0UsRUFBd0IsRUFDeEIsY0FBOEIsRUFDOUIsWUFBMEMsRUFDMUMsZUFBZ0MsRUFDaEMsZ0JBQXdCLEVBQ2QsaUJBQThDLEVBQzlDLGFBQTRCLEVBQ3RDLFFBQTJCLGlCQUFpQixDQUFDLEtBQUs7UUFFbEQsS0FBSyxDQUFDLEVBQUUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUp4RSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBSXhDLENBQUM7SUFFUSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQU0sRUFBRSwwQkFBMkQ7UUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEQsOEVBQThFO1FBQzlFLHFGQUFxRjtRQUNyRixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakQsTUFBTSxFQUFFLHdCQUF3QixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEdBQ3pGLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLEtBQUs7UUFDekUsd0ZBQXdGO1FBQ3hGLEtBQUssRUFBQyxHQUFHLEVBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVDLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUNGLENBQUM7UUFDSixFQUFFLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV0QywwQ0FBMEM7UUFDMUMsTUFBTSxxQkFBcUIsR0FBMkIsd0JBQXdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hGLE9BQU8scUJBQXFCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM5RyxDQUFDO0NBQ0YifQ==
|
|
@@ -1,27 +1,21 @@
|
|
|
1
1
|
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
-
import { type GlobalVariables, type Header, type KernelCircuitPublicInputs, type
|
|
2
|
+
import { type GlobalVariables, type Header, type KernelCircuitPublicInputs, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
3
|
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
4
|
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
5
|
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
-
import { type ContractsDataSourcePublicDB } from './
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_db_sources.js';
|
|
7
7
|
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
8
|
export declare class TailPhaseManager extends AbstractPhaseManager {
|
|
9
9
|
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
10
10
|
protected publicStateDB: PublicStateDB;
|
|
11
11
|
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
12
|
-
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs
|
|
13
|
-
|
|
12
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Promise<{
|
|
13
|
+
publicProvingRequests: import("@aztec/circuit-types").PublicKernelTailRequest[];
|
|
14
14
|
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
15
15
|
finalKernelOutput: KernelCircuitPublicInputs;
|
|
16
|
-
|
|
17
|
-
revertReason: undefined;
|
|
18
|
-
returnValues: undefined;
|
|
19
|
-
gasUsed: undefined;
|
|
16
|
+
returnValues: never[];
|
|
20
17
|
}>;
|
|
21
|
-
private runTailKernelCircuit;
|
|
22
18
|
private simulate;
|
|
23
19
|
private buildPrivateInputs;
|
|
24
|
-
private sortNoteHashes;
|
|
25
|
-
private sortLogsHashes;
|
|
26
20
|
}
|
|
27
21
|
//# sourceMappingURL=tail_phase_manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tail_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/tail_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,yBAAyB,
|
|
1
|
+
{"version":3,"file":"tail_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/tail_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,yBAAyB,EAG9B,KAAK,+BAA+B,EAGrC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF,qBAAa,gBAAiB,SAAQ,oBAAoB;IAOtD,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;gBANtC,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACd,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EACtC,KAAK,GAAE,iBAA0C;IAKpC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B;;;;;;YAwB3E,QAAQ;YAQR,kBAAkB;CAoDjC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
|
-
import {
|
|
2
|
+
import { CombineHints, MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PublicKernelTailCircuitPrivateInputs, mergeAccumulatedData, } from '@aztec/circuits.js';
|
|
3
3
|
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
4
4
|
export class TailPhaseManager extends AbstractPhaseManager {
|
|
5
5
|
constructor(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB, phase = PublicKernelPhase.TAIL) {
|
|
@@ -7,63 +7,43 @@ export class TailPhaseManager extends AbstractPhaseManager {
|
|
|
7
7
|
this.publicContractsDB = publicContractsDB;
|
|
8
8
|
this.publicStateDB = publicStateDB;
|
|
9
9
|
}
|
|
10
|
-
async handle(tx, previousPublicKernelOutput
|
|
10
|
+
async handle(tx, previousPublicKernelOutput) {
|
|
11
11
|
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
12
|
-
const [inputs, finalKernelOutput] = await this.
|
|
12
|
+
const [inputs, finalKernelOutput] = await this.simulate(previousPublicKernelOutput).catch(
|
|
13
13
|
// the abstract phase manager throws if simulation gives error in non-revertible phase
|
|
14
14
|
async (err) => {
|
|
15
15
|
await this.publicStateDB.rollbackToCommit();
|
|
16
16
|
throw err;
|
|
17
17
|
});
|
|
18
|
-
// commit the state updates from this transaction
|
|
19
|
-
await this.publicStateDB.commit();
|
|
20
18
|
// Return a tail proving request
|
|
21
|
-
const
|
|
19
|
+
const kernelRequest = {
|
|
22
20
|
type: PublicKernelType.TAIL,
|
|
23
21
|
inputs: inputs,
|
|
24
22
|
};
|
|
25
23
|
return {
|
|
26
|
-
|
|
24
|
+
publicProvingRequests: [kernelRequest],
|
|
27
25
|
publicKernelOutput: previousPublicKernelOutput,
|
|
28
26
|
finalKernelOutput,
|
|
29
|
-
|
|
30
|
-
revertReason: undefined,
|
|
31
|
-
returnValues: undefined,
|
|
32
|
-
gasUsed: undefined,
|
|
27
|
+
returnValues: [],
|
|
33
28
|
};
|
|
34
29
|
}
|
|
35
|
-
async
|
|
36
|
-
|
|
37
|
-
previousOutput.end.unencryptedLogsHashes = this.sortLogsHashes(previousOutput.end.unencryptedLogsHashes);
|
|
38
|
-
const [inputs, output] = await this.simulate(previousOutput, previousProof);
|
|
39
|
-
// Temporary hack. Should sort them in the tail circuit.
|
|
40
|
-
const noteHashes = mergeAccumulatedData(previousOutput.endNonRevertibleData.newNoteHashes, previousOutput.end.newNoteHashes, MAX_NEW_NOTE_HASHES_PER_TX);
|
|
41
|
-
output.end.newNoteHashes = this.sortNoteHashes(noteHashes);
|
|
42
|
-
return [inputs, output];
|
|
43
|
-
}
|
|
44
|
-
async simulate(previousOutput, previousProof) {
|
|
45
|
-
const inputs = await this.buildPrivateInputs(previousOutput, previousProof);
|
|
30
|
+
async simulate(previousOutput) {
|
|
31
|
+
const inputs = await this.buildPrivateInputs(previousOutput);
|
|
46
32
|
// We take a deep copy (clone) of these to pass to the prover
|
|
47
33
|
return [inputs.clone(), await this.publicKernel.publicKernelCircuitTail(inputs)];
|
|
48
34
|
}
|
|
49
|
-
async buildPrivateInputs(previousOutput
|
|
50
|
-
const previousKernel = this.getPreviousKernelData(previousOutput
|
|
51
|
-
const { validationRequests, endNonRevertibleData, end } = previousOutput;
|
|
52
|
-
const pendingNullifiers = mergeAccumulatedData(
|
|
35
|
+
async buildPrivateInputs(previousOutput) {
|
|
36
|
+
const previousKernel = this.getPreviousKernelData(previousOutput);
|
|
37
|
+
const { validationRequests, endNonRevertibleData: nonRevertibleData, end: revertibleData } = previousOutput;
|
|
38
|
+
const pendingNullifiers = mergeAccumulatedData(nonRevertibleData.newNullifiers, revertibleData.newNullifiers, MAX_NEW_NULLIFIERS_PER_TX);
|
|
53
39
|
const nullifierReadRequestHints = await this.hintsBuilder.getNullifierReadRequestHints(validationRequests.nullifierReadRequests, pendingNullifiers);
|
|
54
40
|
const nullifierNonExistentReadRequestHints = await this.hintsBuilder.getNullifierNonExistentReadRequestHints(validationRequests.nullifierNonExistentReadRequests, pendingNullifiers);
|
|
55
|
-
const pendingPublicDataWrites = mergeAccumulatedData(
|
|
41
|
+
const pendingPublicDataWrites = mergeAccumulatedData(nonRevertibleData.publicDataUpdateRequests, revertibleData.publicDataUpdateRequests, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
56
42
|
const publicDataHints = await this.hintsBuilder.getPublicDataHints(validationRequests.publicDataReads, pendingPublicDataWrites);
|
|
57
43
|
const publicDataReadRequestHints = this.hintsBuilder.getPublicDataReadRequestHints(validationRequests.publicDataReads, pendingPublicDataWrites, publicDataHints);
|
|
58
44
|
const currentState = await this.db.getStateReference();
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
sortNoteHashes(noteHashes) {
|
|
62
|
-
return sortByCounter(noteHashes).map(n => n.value);
|
|
63
|
-
}
|
|
64
|
-
sortLogsHashes(unencryptedLogsHashes) {
|
|
65
|
-
// TODO(6052): logs here may have duplicate counters from nested calls
|
|
66
|
-
return sortByCounter(unencryptedLogsHashes.map(n => ({ ...n, counter: n.counter.toNumber(), isEmpty: () => n.isEmpty() }))).map(h => new SideEffect(h.value, new Fr(h.counter)));
|
|
45
|
+
const hints = CombineHints.fromPublicData({ nonRevertibleData, revertibleData });
|
|
46
|
+
return new PublicKernelTailCircuitPrivateInputs(previousKernel, nullifierReadRequestHints, nullifierNonExistentReadRequestHints, publicDataHints, publicDataReadRequestHints, currentState.partial, hints);
|
|
67
47
|
}
|
|
68
48
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbF9waGFzZV9tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy90YWlsX3BoYXNlX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixnQkFBZ0IsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQzNGLE9BQU8sRUFDTCxZQUFZLEVBSVoseUJBQXlCLEVBQ3pCLHNDQUFzQyxFQUV0QyxvQ0FBb0MsRUFDcEMsb0JBQW9CLEdBQ3JCLE1BQU0sb0JBQW9CLENBQUM7QUFJNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJdEYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG9CQUFvQjtJQUN4RCxZQUNFLEVBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLFlBQTBDLEVBQzFDLGVBQWdDLEVBQ2hDLGdCQUF3QixFQUNkLGlCQUE4QyxFQUM5QyxhQUE0QixFQUN0QyxRQUEyQixpQkFBaUIsQ0FBQyxJQUFJO1FBRWpELEtBQUssQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFKeEUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE2QjtRQUM5QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUl4QyxDQUFDO0lBRVEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFNLEVBQUUsMEJBQTJEO1FBQ3ZGLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxLQUFLO1FBQ3ZGLHNGQUFzRjtRQUN0RixLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUU7WUFDVixN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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
-
import { type Fr, type Gas, type GlobalVariables, type Header, type
|
|
1
|
+
import { type PublicProvingRequest, type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type Fr, type Gas, type GlobalVariables, type Header, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
3
|
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
4
|
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
5
|
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
-
import { type ContractsDataSourcePublicDB } from './
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_db_sources.js';
|
|
7
7
|
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
8
|
/**
|
|
9
9
|
* The phase manager responsible for performing the fee preparation phase.
|
|
@@ -12,14 +12,12 @@ export declare class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
12
12
|
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
13
13
|
protected publicStateDB: PublicStateDB;
|
|
14
14
|
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
15
|
-
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs
|
|
16
|
-
|
|
17
|
-
kernelInputs: import("@aztec/circuits.js").PublicKernelCircuitPrivateInputs[];
|
|
15
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Promise<{
|
|
16
|
+
publicProvingRequests: PublicProvingRequest[];
|
|
18
17
|
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
19
|
-
publicKernelProof: Proof;
|
|
20
18
|
revertReason: import("@aztec/circuit-types").SimulationError | undefined;
|
|
21
|
-
returnValues:
|
|
22
|
-
gasUsed: Gas;
|
|
19
|
+
returnValues: never[];
|
|
20
|
+
gasUsed: Gas | undefined;
|
|
23
21
|
}>;
|
|
24
22
|
protected getTransactionFee(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Fr;
|
|
25
23
|
protected getAvailableGas(tx: Tx, _previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Gas;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teardown_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/teardown_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"teardown_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/teardown_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,oBAAoB,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EACL,KAAK,EAAE,EACP,KAAK,GAAG,EACR,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,+BAA+B,EACrC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAyB,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB;IAO1D,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;gBANtC,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACd,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EACtC,KAAK,GAAE,iBAA8C;IAKxC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B;;;;;;;cAyBtE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B,GAAG,EAAE;cAU1F,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,2BAA2B,EAAE,+BAA+B,GAAG,GAAG;CAG9G"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
2
|
import { inspect } from 'util';
|
|
3
|
-
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
3
|
+
import { AbstractPhaseManager, PublicKernelPhase, makeAvmProvingRequest } from './abstract_phase_manager.js';
|
|
4
4
|
/**
|
|
5
5
|
* The phase manager responsible for performing the fee preparation phase.
|
|
6
6
|
*/
|
|
@@ -10,33 +10,27 @@ export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
10
10
|
this.publicContractsDB = publicContractsDB;
|
|
11
11
|
this.publicStateDB = publicStateDB;
|
|
12
12
|
}
|
|
13
|
-
async handle(tx, previousPublicKernelOutput
|
|
13
|
+
async handle(tx, previousPublicKernelOutput) {
|
|
14
14
|
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
15
|
-
const
|
|
15
|
+
const { publicProvingInformation, kernelOutput, newUnencryptedLogs, revertReason, gasUsed } = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput).catch(
|
|
16
16
|
// the abstract phase manager throws if simulation gives error in a non-revertible phase
|
|
17
17
|
async (err) => {
|
|
18
18
|
await this.publicStateDB.rollbackToCommit();
|
|
19
19
|
throw err;
|
|
20
20
|
});
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
if (revertReason) {
|
|
22
|
+
await this.publicStateDB.rollbackToCheckpoint();
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// TODO(#6464): Should we allow emitting contracts in the public teardown phase?
|
|
26
|
+
// if so, we should insert them here
|
|
27
|
+
tx.unencryptedLogs.addFunctionLogs(newUnencryptedLogs);
|
|
28
|
+
}
|
|
23
29
|
// Return a list of teardown proving requests
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
type: PublicKernelType.TEARDOWN,
|
|
27
|
-
inputs: input,
|
|
28
|
-
};
|
|
29
|
-
return request;
|
|
30
|
+
const publicProvingRequests = publicProvingInformation.map(info => {
|
|
31
|
+
return makeAvmProvingRequest(info, PublicKernelType.TEARDOWN);
|
|
30
32
|
});
|
|
31
|
-
return {
|
|
32
|
-
kernelRequests,
|
|
33
|
-
kernelInputs,
|
|
34
|
-
publicKernelOutput,
|
|
35
|
-
publicKernelProof,
|
|
36
|
-
revertReason,
|
|
37
|
-
returnValues: undefined,
|
|
38
|
-
gasUsed,
|
|
39
|
-
};
|
|
33
|
+
return { publicProvingRequests, publicKernelOutput: kernelOutput, revertReason, returnValues: [], gasUsed };
|
|
40
34
|
}
|
|
41
35
|
getTransactionFee(tx, previousPublicKernelOutput) {
|
|
42
36
|
const gasSettings = tx.data.constants.txContext.gasSettings;
|
|
@@ -51,4 +45,4 @@ export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
51
45
|
return tx.data.constants.txContext.gasSettings.getTeardownLimits();
|
|
52
46
|
}
|
|
53
47
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd25fcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvdGVhcmRvd25fcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQXNDLE1BQU0sc0JBQXNCLENBQUM7QUFXNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUk3Rzs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFDNUQsWUFDRSxFQUF3QixFQUN4QixjQUE4QixFQUM5QixZQUEwQyxFQUMxQyxlQUFnQyxFQUNoQyxnQkFBd0IsRUFDZCxpQkFBOEMsRUFDOUMsYUFBNEIsRUFDdEMsUUFBMkIsaUJBQWlCLENBQUMsUUFBUTtRQUVyRCxLQUFLLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBSnhFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFJeEMsQ0FBQztJQUVRLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBTSxFQUFFLDBCQUEyRDtRQUN2RixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRCxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FDekYsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFBRSxFQUFFLDBCQUEwQixDQUFDLENBQUMsS0FBSztRQUN6RSx3RkFBd0Y7UUFDeEYsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQ0YsQ0FBQztRQUNKLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDbEQsQ0FBQzthQUFNLENBQUM7WUFDTixnRkFBZ0Y7WUFDaEYsb0NBQW9DO1lBQ3BDLEVBQUUsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELDZDQUE2QztRQUM3QyxNQUFNLHFCQUFxQixHQUEyQix3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEYsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzlHLENBQUM7SUFFa0IsaUJBQWlCLENBQUMsRUFBTSxFQUFFLDBCQUEyRDtRQUN0RyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQzdDLGdGQUFnRjtRQUNoRixNQUFNLE9BQU8sR0FBRywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwSCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFa0IsZUFBZSxDQUFDLEVBQU0sRUFBRSwyQkFBNEQ7UUFDckcsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDckUsQ0FBQztDQUNGIn0=
|
|
@@ -14,7 +14,8 @@ import { type PublicExecution, type PublicExecutionResult } from './execution.js
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function createAvmExecutionEnvironment(current: PublicExecution, header: Header, globalVariables: GlobalVariables, gasSettings: GasSettings, transactionFee: Fr): AvmExecutionEnvironment;
|
|
16
16
|
export declare function createPublicExecution(startSideEffectCounter: number, avmEnvironment: AvmExecutionEnvironment, calldata: Fr[]): PublicExecution;
|
|
17
|
-
export declare function convertAvmResultsToPxResult(avmResult: AvmContractCallResults, startSideEffectCounter: number, fromPx: PublicExecution, startGas: Gas, endAvmContext: AvmContext): PublicExecutionResult;
|
|
17
|
+
export declare function convertAvmResultsToPxResult(avmResult: AvmContractCallResults, startSideEffectCounter: number, fromPx: PublicExecution, startGas: Gas, endAvmContext: AvmContext, bytecode: Buffer | undefined): PublicExecutionResult;
|
|
18
18
|
export declare function markBytecodeAsAvm(bytecode: Buffer): Buffer;
|
|
19
|
-
export declare function
|
|
19
|
+
export declare function decompressBytecodeIfCompressed(bytecode: Buffer): Promise<Buffer>;
|
|
20
|
+
export declare function isAvmBytecode(bytecode: Buffer): Promise<boolean>;
|
|
20
21
|
//# sourceMappingURL=transitional_adaptors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitional_adaptors.d.ts","sourceRoot":"","sources":["../../src/public/transitional_adaptors.ts"],"names":[],"mappings":";AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"transitional_adaptors.d.ts","sourceRoot":"","sources":["../../src/public/transitional_adaptors.ts"],"names":[],"mappings":";AAEA,OAAO,EAAe,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAK9C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAGhF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,EAAE,GACjB,uBAAuB,CAiBzB;AAED,wBAAgB,qBAAqB,CACnC,sBAAsB,EAAE,MAAM,EAC9B,cAAc,EAAE,uBAAuB,EACvC,QAAQ,EAAE,EAAE,EAAE,GACb,eAAe,CAgBjB;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,sBAAsB,EACjC,sBAAsB,EAAE,MAAM,EAC9B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,GAAG,EACb,aAAa,EAAE,UAAU,EACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,qBAAqB,CAuBvB;AASD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAGD,wBAAsB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQtF;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAItE"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
// All code in this file needs to die once the public executor is phased out in favor of the AVM.
|
|
2
2
|
import { UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
|
|
3
|
-
import { CallContext
|
|
3
|
+
import { CallContext } from '@aztec/circuits.js';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
|
+
import { promisify } from 'util';
|
|
6
|
+
import { gunzip } from 'zlib';
|
|
5
7
|
import { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
6
8
|
import { Mov } from '../avm/opcodes/memory.js';
|
|
7
9
|
import { createSimulationError } from '../common/errors.js';
|
|
@@ -14,7 +16,7 @@ import { createSimulationError } from '../common/errors.js';
|
|
|
14
16
|
*/
|
|
15
17
|
export function createAvmExecutionEnvironment(current, header, globalVariables, gasSettings, transactionFee) {
|
|
16
18
|
return new AvmExecutionEnvironment(current.contractAddress, current.callContext.storageContractAddress, current.callContext.msgSender, globalVariables.gasFees.feePerL2Gas, globalVariables.gasFees.feePerDaGas,
|
|
17
|
-
/*contractCallDepth=*/ Fr.zero(), header, globalVariables, current.callContext.isStaticCall, current.callContext.isDelegateCall, current.args, gasSettings, transactionFee, current.
|
|
19
|
+
/*contractCallDepth=*/ Fr.zero(), header, globalVariables, current.callContext.isStaticCall, current.callContext.isDelegateCall, current.args, gasSettings, transactionFee, current.functionSelector);
|
|
18
20
|
}
|
|
19
21
|
export function createPublicExecution(startSideEffectCounter, avmEnvironment, calldata) {
|
|
20
22
|
const callContext = CallContext.from({
|
|
@@ -25,16 +27,15 @@ export function createPublicExecution(startSideEffectCounter, avmEnvironment, ca
|
|
|
25
27
|
isStaticCall: avmEnvironment.isStaticCall,
|
|
26
28
|
sideEffectCounter: startSideEffectCounter,
|
|
27
29
|
});
|
|
28
|
-
const functionData = new FunctionData(avmEnvironment.temporaryFunctionSelector, /*isPrivate=*/ false);
|
|
29
30
|
const execution = {
|
|
30
31
|
contractAddress: avmEnvironment.address,
|
|
31
32
|
callContext,
|
|
32
33
|
args: calldata,
|
|
33
|
-
|
|
34
|
+
functionSelector: avmEnvironment.temporaryFunctionSelector,
|
|
34
35
|
};
|
|
35
36
|
return execution;
|
|
36
37
|
}
|
|
37
|
-
export function convertAvmResultsToPxResult(avmResult, startSideEffectCounter, fromPx, startGas, endAvmContext) {
|
|
38
|
+
export function convertAvmResultsToPxResult(avmResult, startSideEffectCounter, fromPx, startGas, endAvmContext, bytecode) {
|
|
38
39
|
const endPersistableState = endAvmContext.persistableState;
|
|
39
40
|
const endMachineState = endAvmContext.machineState;
|
|
40
41
|
return {
|
|
@@ -50,6 +51,9 @@ export function convertAvmResultsToPxResult(avmResult, startSideEffectCounter, f
|
|
|
50
51
|
startGasLeft: startGas,
|
|
51
52
|
endGasLeft: endMachineState.gasLeft,
|
|
52
53
|
transactionFee: endAvmContext.environment.transactionFee,
|
|
54
|
+
bytecode: bytecode,
|
|
55
|
+
calldata: endAvmContext.environment.calldata,
|
|
56
|
+
avmHints: endPersistableState.trace.toHints(),
|
|
53
57
|
};
|
|
54
58
|
}
|
|
55
59
|
const AVM_MAGIC_SUFFIX = Buffer.from([
|
|
@@ -61,8 +65,20 @@ const AVM_MAGIC_SUFFIX = Buffer.from([
|
|
|
61
65
|
export function markBytecodeAsAvm(bytecode) {
|
|
62
66
|
return Buffer.concat([bytecode, AVM_MAGIC_SUFFIX]);
|
|
63
67
|
}
|
|
64
|
-
|
|
68
|
+
// This is just a helper function for the AVM circuit.
|
|
69
|
+
export async function decompressBytecodeIfCompressed(bytecode) {
|
|
70
|
+
try {
|
|
71
|
+
return await promisify(gunzip)(bytecode);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// If the bytecode is not compressed, the gunzip call will throw an error
|
|
75
|
+
// In this case, we assume the bytecode is not compressed and continue.
|
|
76
|
+
return Promise.resolve(bytecode);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export async function isAvmBytecode(bytecode) {
|
|
80
|
+
const decompressedBytecode = await decompressBytecodeIfCompressed(bytecode);
|
|
65
81
|
const magicSize = AVM_MAGIC_SUFFIX.length;
|
|
66
|
-
return
|
|
82
|
+
return decompressedBytecode.subarray(-magicSize).equals(AVM_MAGIC_SUFFIX);
|
|
67
83
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdGlvbmFsX2FkYXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy90cmFuc2l0aW9uYWxfYWRhcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUdBQWlHO0FBQ2pHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQWlFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEgsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHNUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUMzQyxPQUF3QixFQUN4QixNQUFjLEVBQ2QsZUFBZ0MsRUFDaEMsV0FBd0IsRUFDeEIsY0FBa0I7SUFFbEIsT0FBTyxJQUFJLHVCQUF1QixDQUNoQyxPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUMxQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFDN0IsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQ25DLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVztJQUNuQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQ2hDLE1BQU0sRUFDTixlQUFlLEVBQ2YsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQ2hDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUNsQyxPQUFPLENB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
|
package/dest/public/utils.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
2
2
|
/**
|
|
3
3
|
* Looks at the side effects of a transaction and returns the highest counter
|
|
4
4
|
* @param tx - A transaction
|
|
5
5
|
* @returns The highest side effect counter in the transaction so far
|
|
6
6
|
*/
|
|
7
|
-
export declare function lastSideEffectCounter(
|
|
7
|
+
export declare function lastSideEffectCounter(inputs: PublicKernelCircuitPublicInputs): number;
|
|
8
8
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/public/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/public/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,+BAA+B,GAAG,MAAM,CA+BrF"}
|
package/dest/public/utils.js
CHANGED
|
@@ -1,31 +1,38 @@
|
|
|
1
|
-
import { CallRequest } from '@aztec/circuits.js';
|
|
2
1
|
/**
|
|
3
2
|
* Looks at the side effects of a transaction and returns the highest counter
|
|
4
3
|
* @param tx - A transaction
|
|
5
4
|
* @returns The highest side effect counter in the transaction so far
|
|
6
5
|
*/
|
|
7
|
-
export function lastSideEffectCounter(
|
|
8
|
-
const data = tx.data.forPublic;
|
|
6
|
+
export function lastSideEffectCounter(inputs) {
|
|
9
7
|
const sideEffectCounters = [
|
|
10
|
-
...
|
|
11
|
-
...
|
|
12
|
-
...
|
|
13
|
-
...
|
|
14
|
-
...
|
|
15
|
-
...
|
|
16
|
-
...
|
|
8
|
+
...inputs.endNonRevertibleData.newNoteHashes,
|
|
9
|
+
...inputs.endNonRevertibleData.newNullifiers,
|
|
10
|
+
...inputs.endNonRevertibleData.noteEncryptedLogsHashes,
|
|
11
|
+
...inputs.endNonRevertibleData.encryptedLogsHashes,
|
|
12
|
+
...inputs.endNonRevertibleData.unencryptedLogsHashes,
|
|
13
|
+
...inputs.endNonRevertibleData.publicCallStack,
|
|
14
|
+
...inputs.endNonRevertibleData.publicDataUpdateRequests,
|
|
15
|
+
...inputs.end.newNoteHashes,
|
|
16
|
+
...inputs.end.newNullifiers,
|
|
17
|
+
...inputs.end.noteEncryptedLogsHashes,
|
|
18
|
+
...inputs.end.encryptedLogsHashes,
|
|
19
|
+
...inputs.end.unencryptedLogsHashes,
|
|
20
|
+
...inputs.end.publicCallStack,
|
|
21
|
+
...inputs.end.publicDataUpdateRequests,
|
|
17
22
|
];
|
|
18
23
|
let max = 0;
|
|
19
24
|
for (const sideEffect of sideEffectCounters) {
|
|
20
|
-
if (
|
|
25
|
+
if ('startSideEffectCounter' in sideEffect) {
|
|
21
26
|
// look at both start and end counters because for enqueued public calls start > 0 while end === 0
|
|
22
27
|
max = Math.max(max, sideEffect.startSideEffectCounter.toNumber(), sideEffect.endSideEffectCounter.toNumber());
|
|
23
28
|
}
|
|
29
|
+
else if ('counter' in sideEffect) {
|
|
30
|
+
max = Math.max(max, sideEffect.counter);
|
|
31
|
+
}
|
|
24
32
|
else {
|
|
25
|
-
|
|
26
|
-
max = Math.max(max, counter);
|
|
33
|
+
throw new Error('Unknown side effect type');
|
|
27
34
|
}
|
|
28
35
|
}
|
|
29
36
|
return max;
|
|
30
37
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsTUFBdUM7SUFDM0UsTUFBTSxrQkFBa0IsR0FBRztRQUN6QixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhO1FBQzVDLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLGFBQWE7UUFDNUMsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCO1FBQ3RELEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQjtRQUNsRCxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUI7UUFDcEQsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsZUFBZTtRQUM5QyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0I7UUFDdkQsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWE7UUFDM0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWE7UUFDM0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHVCQUF1QjtRQUNyQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CO1FBQ2pDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUI7UUFDbkMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWU7UUFDN0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHdCQUF3QjtLQUN2QyxDQUFDO0lBRUYsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osS0FBSyxNQUFNLFVBQVUsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLElBQUksd0JBQXdCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDM0Msa0dBQWtHO1lBQ2xHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDaEgsQ0FBQzthQUFNLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"exports":
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./dest/index.js",
|
|
7
|
+
"./avm/fixtures": "./dest/avm/fixtures/index.js"
|
|
8
|
+
},
|
|
6
9
|
"typedocOptions": {
|
|
7
10
|
"entryPoints": [
|
|
8
11
|
"./src/index.ts"
|
|
@@ -45,13 +48,13 @@
|
|
|
45
48
|
]
|
|
46
49
|
},
|
|
47
50
|
"dependencies": {
|
|
48
|
-
"@aztec/circuit-types": "0.
|
|
49
|
-
"@aztec/circuits.js": "0.
|
|
50
|
-
"@aztec/foundation": "0.
|
|
51
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
52
|
-
"@aztec/protocol-contracts": "0.
|
|
53
|
-
"@aztec/types": "0.
|
|
54
|
-
"@aztec/world-state": "0.
|
|
51
|
+
"@aztec/circuit-types": "0.42.0",
|
|
52
|
+
"@aztec/circuits.js": "0.42.0",
|
|
53
|
+
"@aztec/foundation": "0.42.0",
|
|
54
|
+
"@aztec/noir-protocol-circuits-types": "0.42.0",
|
|
55
|
+
"@aztec/protocol-contracts": "0.42.0",
|
|
56
|
+
"@aztec/types": "0.42.0",
|
|
57
|
+
"@aztec/world-state": "0.42.0",
|
|
55
58
|
"@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
|
|
56
59
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
|
57
60
|
"levelup": "^5.1.1",
|
package/src/acvm/acvm.ts
CHANGED
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
type ExecutionError,
|
|
7
7
|
type ForeignCallInput,
|
|
8
8
|
type ForeignCallOutput,
|
|
9
|
-
type WasmBlackBoxFunctionSolver,
|
|
10
9
|
executeCircuitWithReturnWitness,
|
|
11
10
|
} from '@noir-lang/acvm_js';
|
|
12
11
|
|
|
@@ -85,7 +84,6 @@ export function resolveOpcodeLocations(
|
|
|
85
84
|
* The function call that executes an ACIR.
|
|
86
85
|
*/
|
|
87
86
|
export async function acvm(
|
|
88
|
-
solver: WasmBlackBoxFunctionSolver,
|
|
89
87
|
acir: Buffer,
|
|
90
88
|
initialWitness: ACVMWitness,
|
|
91
89
|
callback: ACIRCallback,
|
|
@@ -93,7 +91,6 @@ export async function acvm(
|
|
|
93
91
|
const logger = createDebugLogger('aztec:simulator:acvm');
|
|
94
92
|
|
|
95
93
|
const solvedAndReturnWitness = await executeCircuitWithReturnWitness(
|
|
96
|
-
solver,
|
|
97
94
|
acir,
|
|
98
95
|
initialWitness,
|
|
99
96
|
async (name: string, args: ForeignCallInput[]) => {
|