@aztec/simulator 0.37.0 → 0.39.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 +1 -1
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm.js +2 -2
- package/dest/acvm/oracle/oracle.d.ts +6 -5
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +26 -30
- package/dest/acvm/oracle/typed_oracle.d.ts +5 -5
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +9 -9
- 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 +17 -11
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +4 -1
- package/dest/avm/avm_machine_state.d.ts +5 -8
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +10 -22
- package/dest/avm/avm_memory_types.d.ts +1 -1
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_message_call_result.d.ts +5 -8
- package/dest/avm/avm_message_call_result.d.ts.map +1 -1
- package/dest/avm/avm_message_call_result.js +1 -4
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +19 -13
- package/dest/avm/errors.d.ts +43 -2
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/errors.js +86 -4
- package/dest/avm/journal/journal.d.ts +20 -1
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +70 -9
- package/dest/avm/journal/nullifiers.d.ts +3 -1
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/nullifiers.js +14 -6
- package/dest/avm/journal/public_storage.d.ts +10 -1
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.js +17 -2
- package/dest/avm/journal/trace.d.ts +1 -4
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +4 -5
- 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/bitwise.d.ts +4 -1
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +14 -2
- package/dest/avm/opcodes/conversion.d.ts +16 -0
- package/dest/avm/opcodes/conversion.d.ts.map +1 -0
- package/dest/avm/opcodes/conversion.js +48 -0
- package/dest/avm/opcodes/environment_getters.d.ts +16 -12
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +19 -48
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +24 -13
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +6 -2
- package/dest/avm/serialization/instruction_serialization.d.ts +40 -38
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +42 -39
- package/dest/client/client_execution_context.d.ts +59 -19
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +97 -45
- package/dest/client/db_oracle.d.ts +4 -11
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/execution_result.d.ts +22 -15
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +59 -13
- package/dest/client/logs_cache.d.ts +33 -0
- package/dest/client/logs_cache.d.ts.map +1 -0
- package/dest/client/logs_cache.js +59 -0
- package/dest/client/private_execution.d.ts +2 -2
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +5 -7
- package/dest/client/simulator.d.ts +4 -34
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +5 -43
- package/dest/client/unconstrained_execution.d.ts +2 -2
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +1 -1
- package/dest/client/view_data_oracle.d.ts +0 -7
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +1 -10
- package/dest/common/errors.d.ts +5 -0
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +6 -1
- 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.map +1 -1
- package/dest/mocks/fixtures.js +3 -1
- package/dest/public/abstract_phase_manager.d.ts +10 -4
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +50 -19
- package/dest/public/app_logic_phase_manager.d.ts +1 -0
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/public/app_logic_phase_manager.js +3 -3
- package/dest/public/execution.d.ts +9 -0
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +2 -2
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +34 -17
- package/dest/public/hints_builder.d.ts +3 -3
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +3 -3
- package/dest/public/public_execution_context.d.ts +10 -4
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +19 -6
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +5 -3
- package/dest/public/setup_phase_manager.d.ts +1 -0
- package/dest/public/setup_phase_manager.d.ts.map +1 -1
- package/dest/public/setup_phase_manager.js +3 -2
- package/dest/public/tail_phase_manager.d.ts +1 -1
- package/dest/public/tail_phase_manager.d.ts.map +1 -1
- package/dest/public/tail_phase_manager.js +4 -26
- package/dest/public/teardown_phase_manager.d.ts +1 -0
- package/dest/public/teardown_phase_manager.d.ts.map +1 -1
- package/dest/public/teardown_phase_manager.js +3 -2
- package/dest/public/transitional_adaptors.d.ts +4 -17
- package/dest/public/transitional_adaptors.d.ts.map +1 -1
- package/dest/public/transitional_adaptors.js +27 -119
- package/dest/rollup/index.d.ts +2 -0
- package/dest/rollup/index.d.ts.map +1 -0
- package/dest/rollup/index.js +2 -0
- package/dest/rollup/rollup.d.ts +77 -0
- package/dest/rollup/rollup.d.ts.map +1 -0
- package/dest/rollup/rollup.js +78 -0
- package/dest/stats/index.d.ts +2 -0
- package/dest/stats/index.d.ts.map +1 -0
- package/dest/stats/index.js +2 -0
- package/dest/stats/stats.d.ts +4 -0
- package/dest/stats/stats.d.ts.map +1 -0
- package/dest/stats/stats.js +11 -0
- package/package.json +8 -8
- package/src/acvm/acvm.ts +2 -2
- package/src/acvm/oracle/oracle.ts +62 -36
- package/src/acvm/oracle/typed_oracle.ts +19 -11
- package/src/avm/avm_execution_environment.ts +34 -42
- package/src/avm/avm_gas.ts +3 -0
- package/src/avm/avm_machine_state.ts +14 -25
- package/src/avm/avm_memory_types.ts +1 -1
- package/src/avm/avm_message_call_result.ts +3 -14
- package/src/avm/avm_simulator.ts +24 -12
- package/src/avm/errors.ts +94 -4
- package/src/avm/journal/journal.ts +134 -9
- package/src/avm/journal/nullifiers.ts +19 -8
- package/src/avm/journal/public_storage.ts +23 -2
- package/src/avm/journal/trace.ts +3 -4
- package/src/avm/journal/trace_types.ts +1 -0
- package/src/avm/opcodes/bitwise.ts +18 -7
- package/src/avm/opcodes/conversion.ts +59 -0
- package/src/avm/opcodes/environment_getters.ts +21 -65
- package/src/avm/opcodes/external_calls.ts +32 -16
- package/src/avm/serialization/bytecode_serialization.ts +5 -0
- package/src/avm/serialization/instruction_serialization.ts +3 -0
- package/src/client/client_execution_context.ts +142 -46
- package/src/client/db_oracle.ts +4 -18
- package/src/client/execution_result.ts +75 -25
- package/src/client/logs_cache.ts +65 -0
- package/src/client/private_execution.ts +6 -10
- package/src/client/simulator.ts +8 -84
- package/src/client/unconstrained_execution.ts +2 -2
- package/src/client/view_data_oracle.ts +0 -10
- package/src/common/errors.ts +5 -0
- package/src/index.ts +1 -0
- package/src/mocks/fixtures.ts +2 -0
- package/src/public/abstract_phase_manager.ts +59 -23
- package/src/public/app_logic_phase_manager.ts +2 -1
- package/src/public/execution.ts +9 -0
- package/src/public/executor.ts +47 -14
- package/src/public/hints_builder.ts +5 -5
- package/src/public/public_execution_context.ts +18 -4
- package/src/public/public_processor.ts +8 -2
- package/src/public/setup_phase_manager.ts +16 -8
- package/src/public/tail_phase_manager.ts +8 -35
- package/src/public/teardown_phase_manager.ts +16 -8
- package/src/public/transitional_adaptors.ts +39 -177
- package/src/rollup/index.ts +1 -0
- package/src/rollup/rollup.ts +160 -0
- package/src/stats/index.ts +1 -0
- package/src/stats/stats.ts +20 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PublicKernelType
|
|
1
|
+
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
2
|
import { Fr, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PublicKernelTailCircuitPrivateInputs, SideEffect, makeEmptyProof, mergeAccumulatedData, sortByCounter, } from '@aztec/circuits.js';
|
|
3
3
|
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
4
4
|
export class TailPhaseManager extends AbstractPhaseManager {
|
|
@@ -15,8 +15,6 @@ export class TailPhaseManager extends AbstractPhaseManager {
|
|
|
15
15
|
await this.publicStateDB.rollbackToCommit();
|
|
16
16
|
throw err;
|
|
17
17
|
});
|
|
18
|
-
// Temporary hack. Should sort them in the tail circuit.
|
|
19
|
-
this.patchLogsOrdering(tx, previousPublicKernelOutput);
|
|
20
18
|
// commit the state updates from this transaction
|
|
21
19
|
await this.publicStateDB.commit();
|
|
22
20
|
// Return a tail proving request
|
|
@@ -31,6 +29,7 @@ export class TailPhaseManager extends AbstractPhaseManager {
|
|
|
31
29
|
publicKernelProof: makeEmptyProof(),
|
|
32
30
|
revertReason: undefined,
|
|
33
31
|
returnValues: undefined,
|
|
32
|
+
gasUsed: undefined,
|
|
34
33
|
};
|
|
35
34
|
}
|
|
36
35
|
async runTailKernelCircuit(previousOutput, previousProof) {
|
|
@@ -63,29 +62,8 @@ export class TailPhaseManager extends AbstractPhaseManager {
|
|
|
63
62
|
return sortByCounter(noteHashes).map(n => n.value);
|
|
64
63
|
}
|
|
65
64
|
sortLogsHashes(unencryptedLogsHashes) {
|
|
65
|
+
// TODO(6052): logs here may have duplicate counters from nested calls
|
|
66
66
|
return sortByCounter(unencryptedLogsHashes.map(n => ({ ...n, counter: n.counter.toNumber(), isEmpty: () => n.isEmpty() }))).map(h => new SideEffect(h.value, new Fr(h.counter)));
|
|
67
67
|
}
|
|
68
|
-
// As above, this is a hack for unencrypted logs ordering, now they are sorted. Since the public kernel
|
|
69
|
-
// cannot keep track of side effects that happen after or before a nested call, we override the gathered logs.
|
|
70
|
-
// As a sanity check, we at least verify that the elements are the same, so we are only tweaking their ordering.
|
|
71
|
-
// See same fn in pxe_service.ts
|
|
72
|
-
// Added as part of resolving #5017
|
|
73
|
-
patchLogsOrdering(tx, publicInputs) {
|
|
74
|
-
const unencLogs = tx.unencryptedLogs.unrollLogs();
|
|
75
|
-
const sortedUnencLogs = publicInputs.end.unencryptedLogsHashes;
|
|
76
|
-
const finalUnencLogs = [];
|
|
77
|
-
sortedUnencLogs.forEach((sideEffect) => {
|
|
78
|
-
if (!sideEffect.isEmpty()) {
|
|
79
|
-
const isLog = (log) => Fr.fromBuffer(log.hash()).equals(sideEffect.value);
|
|
80
|
-
const thisLogIndex = unencLogs.findIndex(isLog);
|
|
81
|
-
finalUnencLogs.push(unencLogs[thisLogIndex]);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
const unencryptedLogs = new UnencryptedFunctionL2Logs(finalUnencLogs);
|
|
85
|
-
tx.unencryptedLogs.functionLogs[0] = unencryptedLogs;
|
|
86
|
-
for (let i = 1; i < tx.unencryptedLogs.functionLogs.length; i++) {
|
|
87
|
-
tx.unencryptedLogs.functionLogs[i] = UnencryptedFunctionL2Logs.empty();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
68
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbF9waGFzZV9tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy90YWlsX3BoYXNlX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixnQkFBZ0IsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQzNGLE9BQU8sRUFDTCxFQUFFLEVBSUYsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixzQ0FBc0MsRUFLdEMsb0NBQW9DLEVBQ3BDLFVBQVUsRUFDVixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGFBQWEsR0FDZCxNQUFNLG9CQUFvQixDQUFDO0FBSzVCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSXRGLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxvQkFBb0I7SUFDeEQsWUFDRSxFQUF3QixFQUN4QixjQUE4QixFQUM5QixZQUEwQyxFQUMxQyxlQUFnQyxFQUNoQyxnQkFBd0IsRUFDZCxpQkFBOEMsRUFDOUMsYUFBNEIsRUFDdEMsUUFBMkIsaUJBQWlCLENBQUMsSUFBSTtRQUVqRCxLQUFLLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBSnhFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFJeEMsQ0FBQztJQUVRLEtBQUssQ0FBQyxNQUFNLENBQ25CLEVBQU0sRUFDTiwwQkFBMkQsRUFDM0QseUJBQWdDO1FBRWhDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FDakUsMEJBQTBCLEVBQzFC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
|
|
@@ -19,6 +19,7 @@ export declare class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
19
19
|
publicKernelProof: Proof;
|
|
20
20
|
revertReason: import("@aztec/circuit-types").SimulationError | undefined;
|
|
21
21
|
returnValues: undefined;
|
|
22
|
+
gasUsed: Gas;
|
|
22
23
|
}>;
|
|
23
24
|
protected getTransactionFee(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Fr;
|
|
24
25
|
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,EAA8C,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EACL,KAAK,EAAE,EACP,KAAK,GAAG,EACR,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,KAAK,EACV,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,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,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,CACnB,EAAE,EAAE,EAAE,EACN,0BAA0B,EAAE,+BAA+B,EAC3D,yBAAyB,EAAE,KAAK
|
|
1
|
+
{"version":3,"file":"teardown_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/teardown_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EACL,KAAK,EAAE,EACP,KAAK,GAAG,EACR,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,KAAK,EACV,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,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,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,CACnB,EAAE,EAAE,EAAE,EACN,0BAA0B,EAAE,+BAA+B,EAC3D,yBAAyB,EAAE,KAAK;;;;;;;;;cAwCf,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"}
|
|
@@ -12,7 +12,7 @@ export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
12
12
|
}
|
|
13
13
|
async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
|
|
14
14
|
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
15
|
-
const [kernelInputs, publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs, revertReason] = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput, previousPublicKernelProof).catch(
|
|
15
|
+
const [kernelInputs, publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs, revertReason, _returnValues, gasUsed,] = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput, previousPublicKernelProof).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();
|
|
@@ -35,6 +35,7 @@ export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
35
35
|
publicKernelProof,
|
|
36
36
|
revertReason,
|
|
37
37
|
returnValues: undefined,
|
|
38
|
+
gasUsed,
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
41
|
getTransactionFee(tx, previousPublicKernelOutput) {
|
|
@@ -50,4 +51,4 @@ export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
50
51
|
return tx.data.constants.txContext.gasSettings.getTeardownLimits();
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd25fcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvdGVhcmRvd25fcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLGdCQUFnQixFQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFZM0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUl0Rjs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFDNUQsWUFDRSxFQUF3QixFQUN4QixjQUE4QixFQUM5QixZQUEwQyxFQUMxQyxlQUFnQyxFQUNoQyxnQkFBd0IsRUFDZCxpQkFBOEMsRUFDOUMsYUFBNEIsRUFDdEMsUUFBMkIsaUJBQWlCLENBQUMsUUFBUTtRQUVyRCxLQUFLLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBSnhFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFJeEMsQ0FBQztJQUVRLEtBQUssQ0FBQyxNQUFNLENBQ25CLEVBQU0sRUFDTiwwQkFBMkQsRUFDM0QseUJBQWdDO1FBRWhDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FDSixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQiwwQkFBMEIsRUFDMUIsWUFBWSxFQUNaLGFBQWEsRUFDYixPQUFPLEVBQ1IsR0FBRyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxLQUFLO1FBQ3hHLHdGQUF3RjtRQUN4RixLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUU7WUFDVixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QyxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUMsQ0FDRixDQUFDO1FBQ0YsRUFBRSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUMvRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFdEMsNkNBQTZDO1FBQzdDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQXdCO2dCQUNuQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsUUFBUTtnQkFDL0IsTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDO1lBQ0YsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0wsY0FBYztZQUNkLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixZQUFZLEVBQUUsU0FBUztZQUN2QixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFa0IsaUJBQWlCLENBQUMsRUFBTSxFQUFFLDBCQUEyRDtRQUN0RyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQzdDLGdGQUFnRjtRQUNoRixNQUFNLE9BQU8sR0FBRywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwSCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFa0IsZUFBZSxDQUFDLEVBQU0sRUFBRSwyQkFBNEQ7UUFDckcsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDckUsQ0FBQztDQUNGIn0=
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { type GasSettings, type GlobalVariables, type Header } from '@aztec/circuits.js';
|
|
2
|
+
import { type Gas, type GasSettings, type GlobalVariables, type Header } from '@aztec/circuits.js';
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { type AvmContext } from '../avm/avm_context.js';
|
|
5
5
|
import { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
6
|
-
import { type
|
|
7
|
-
import { AvmContractCallResults } from '../avm/avm_message_call_result.js';
|
|
8
|
-
import { type JournalData } from '../avm/journal/journal.js';
|
|
6
|
+
import { type AvmContractCallResults } from '../avm/avm_message_call_result.js';
|
|
9
7
|
import { type PublicExecution, type PublicExecutionResult } from './execution.js';
|
|
10
|
-
import { PublicExecutionContext } from './public_execution_context.js';
|
|
11
8
|
/**
|
|
12
9
|
* Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
|
|
13
10
|
*
|
|
@@ -16,18 +13,8 @@ import { PublicExecutionContext } from './public_execution_context.js';
|
|
|
16
13
|
* @returns
|
|
17
14
|
*/
|
|
18
15
|
export declare function createAvmExecutionEnvironment(current: PublicExecution, header: Header, globalVariables: GlobalVariables, gasSettings: GasSettings, transactionFee: Fr): AvmExecutionEnvironment;
|
|
19
|
-
export declare function
|
|
20
|
-
|
|
21
|
-
* Convert the result of an AVM contract call to a PublicExecutionResult for the public kernel
|
|
22
|
-
*
|
|
23
|
-
* @param execution
|
|
24
|
-
* @param newWorldState
|
|
25
|
-
* @param result
|
|
26
|
-
* @returns
|
|
27
|
-
*/
|
|
28
|
-
export declare function convertAvmResults(executionContext: PublicExecutionContext, newWorldState: JournalData, result: AvmContractCallResults, endMachineState: AvmMachineState): Promise<PublicExecutionResult>;
|
|
29
|
-
export declare function convertPublicExecutionResult(res: PublicExecutionResult): AvmContractCallResults;
|
|
30
|
-
export declare function updateAvmContextFromPublicExecutionResult(ctx: AvmContext, result: PublicExecutionResult): void;
|
|
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;
|
|
31
18
|
export declare function markBytecodeAsAvm(bytecode: Buffer): Buffer;
|
|
32
19
|
export declare function isAvmBytecode(bytecode: Buffer): boolean;
|
|
33
20
|
//# 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,EAGL,KAAK,GAAG,EACR,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,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,CAiBjB;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,sBAAsB,EACjC,sBAAsB,EAAE,MAAM,EAC9B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,GAAG,EACb,aAAa,EAAE,UAAU,GACxB,qBAAqB,CAoBvB;AASD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvD"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
// All code in this file needs to die once the public executor is phased out in favor of the AVM.
|
|
2
|
-
import { UnencryptedFunctionL2Logs
|
|
3
|
-
import { CallContext,
|
|
2
|
+
import { UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
|
|
3
|
+
import { CallContext, FunctionData, } from '@aztec/circuits.js';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
5
|
import { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
6
|
-
import { AvmContractCallResults } from '../avm/avm_message_call_result.js';
|
|
7
6
|
import { Mov } from '../avm/opcodes/memory.js';
|
|
8
7
|
import { createSimulationError } from '../common/errors.js';
|
|
9
|
-
import { PackedValuesCache, SideEffectCounter } from '../index.js';
|
|
10
|
-
import { PublicExecutionContext } from './public_execution_context.js';
|
|
11
8
|
/**
|
|
12
9
|
* Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
|
|
13
10
|
*
|
|
@@ -19,131 +16,42 @@ export function createAvmExecutionEnvironment(current, header, globalVariables,
|
|
|
19
16
|
return new AvmExecutionEnvironment(current.contractAddress, current.callContext.storageContractAddress, current.callContext.msgSender, globalVariables.gasFees.feePerL2Gas, globalVariables.gasFees.feePerDaGas,
|
|
20
17
|
/*contractCallDepth=*/ Fr.zero(), header, globalVariables, current.callContext.isStaticCall, current.callContext.isDelegateCall, current.args, gasSettings, transactionFee, current.functionData.selector);
|
|
21
18
|
}
|
|
22
|
-
export function
|
|
23
|
-
const sideEffectCounter = avmContext.persistableState.trace.accessCounter;
|
|
19
|
+
export function createPublicExecution(startSideEffectCounter, avmEnvironment, calldata) {
|
|
24
20
|
const callContext = CallContext.from({
|
|
25
|
-
msgSender:
|
|
26
|
-
storageContractAddress:
|
|
27
|
-
functionSelector:
|
|
28
|
-
isDelegateCall:
|
|
29
|
-
isStaticCall:
|
|
30
|
-
sideEffectCounter:
|
|
21
|
+
msgSender: avmEnvironment.sender,
|
|
22
|
+
storageContractAddress: avmEnvironment.storageAddress,
|
|
23
|
+
functionSelector: avmEnvironment.temporaryFunctionSelector,
|
|
24
|
+
isDelegateCall: avmEnvironment.isDelegateCall,
|
|
25
|
+
isStaticCall: avmEnvironment.isStaticCall,
|
|
26
|
+
sideEffectCounter: startSideEffectCounter,
|
|
31
27
|
});
|
|
32
|
-
const functionData = new FunctionData(
|
|
28
|
+
const functionData = new FunctionData(avmEnvironment.temporaryFunctionSelector, /*isPrivate=*/ false);
|
|
33
29
|
const execution = {
|
|
34
|
-
contractAddress:
|
|
30
|
+
contractAddress: avmEnvironment.address,
|
|
35
31
|
callContext,
|
|
36
32
|
args: calldata,
|
|
37
33
|
functionData,
|
|
38
34
|
};
|
|
39
|
-
|
|
40
|
-
const context = new PublicExecutionContext(execution, avmContext.environment.header, avmContext.environment.globals, packedArgs, new SideEffectCounter(sideEffectCounter), avmContext.persistableState.hostStorage.publicStateDb, avmContext.persistableState.hostStorage.contractsDb, avmContext.persistableState.hostStorage.commitmentsDb, Gas.from(avmContext.machineState.gasLeft), avmContext.environment.transactionFee, avmContext.environment.gasSettings);
|
|
41
|
-
return context;
|
|
35
|
+
return execution;
|
|
42
36
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
* @param execution
|
|
47
|
-
* @param newWorldState
|
|
48
|
-
* @param result
|
|
49
|
-
* @returns
|
|
50
|
-
*/
|
|
51
|
-
export async function convertAvmResults(executionContext, newWorldState, result, endMachineState) {
|
|
52
|
-
const execution = executionContext.execution;
|
|
53
|
-
const contractStorageReads = newWorldState.storageReads.map(read => new ContractStorageRead(read.slot, read.value, read.counter.toNumber(), read.storageAddress));
|
|
54
|
-
const contractStorageUpdateRequests = newWorldState.storageWrites.map(write => new ContractStorageUpdateRequest(write.slot, write.value, write.counter.toNumber(), write.storageAddress));
|
|
55
|
-
// We need to write the storage updates to the DB, because that's what the ACVM expects.
|
|
56
|
-
// Assumes the updates are in the right order.
|
|
57
|
-
for (const write of newWorldState.storageWrites) {
|
|
58
|
-
await executionContext.stateDb.storageWrite(write.storageAddress, write.slot, write.value);
|
|
59
|
-
}
|
|
60
|
-
const newNoteHashes = newWorldState.newNoteHashes.map(noteHash => new NoteHash(noteHash.noteHash, noteHash.counter.toNumber()));
|
|
61
|
-
const nullifierReadRequests = newWorldState.nullifierChecks
|
|
62
|
-
.filter(nullifierCheck => nullifierCheck.exists)
|
|
63
|
-
.map(nullifierCheck => new ReadRequest(nullifierCheck.nullifier, nullifierCheck.counter.toNumber()));
|
|
64
|
-
const nullifierNonExistentReadRequests = newWorldState.nullifierChecks
|
|
65
|
-
.filter(nullifierCheck => !nullifierCheck.exists)
|
|
66
|
-
.map(nullifierCheck => new ReadRequest(nullifierCheck.nullifier, nullifierCheck.counter.toNumber()));
|
|
67
|
-
const newNullifiers = newWorldState.newNullifiers.map(tracedNullifier => new Nullifier(
|
|
68
|
-
/*value=*/ tracedNullifier.nullifier, tracedNullifier.counter.toNumber(),
|
|
69
|
-
/*noteHash=*/ Fr.ZERO));
|
|
70
|
-
const unencryptedLogs = new UnencryptedFunctionL2Logs(newWorldState.newLogs.map(log => new UnencryptedL2Log(log.contractAddress, log.selector, log.data)));
|
|
71
|
-
const unencryptedLogsHashes = newWorldState.newLogsHashes.map(logHash => new SideEffect(logHash.logHash, logHash.counter));
|
|
72
|
-
const newL2ToL1Messages = newWorldState.newL1Messages.map(m => new L2ToL1Message(m.recipient, m.content));
|
|
73
|
-
const returnValues = result.output;
|
|
74
|
-
// TODO: Support nested executions.
|
|
75
|
-
const nestedExecutions = [];
|
|
76
|
-
// TODO keep track of side effect counters
|
|
77
|
-
const startSideEffectCounter = Fr.ZERO;
|
|
78
|
-
const endSideEffectCounter = Fr.ZERO;
|
|
37
|
+
export function convertAvmResultsToPxResult(avmResult, startSideEffectCounter, fromPx, startGas, endAvmContext) {
|
|
38
|
+
const endPersistableState = endAvmContext.persistableState;
|
|
39
|
+
const endMachineState = endAvmContext.machineState;
|
|
79
40
|
return {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
returnValues,
|
|
91
|
-
nestedExecutions,
|
|
92
|
-
unencryptedLogsHashes,
|
|
93
|
-
unencryptedLogs,
|
|
94
|
-
reverted: result.reverted,
|
|
95
|
-
revertReason: result.revertReason ? createSimulationError(result.revertReason) : undefined,
|
|
96
|
-
startGasLeft: executionContext.availableGas,
|
|
41
|
+
...endPersistableState.transitionalExecutionResult, // includes nestedExecutions
|
|
42
|
+
execution: fromPx,
|
|
43
|
+
returnValues: avmResult.output,
|
|
44
|
+
startSideEffectCounter: new Fr(startSideEffectCounter),
|
|
45
|
+
endSideEffectCounter: new Fr(endPersistableState.trace.accessCounter),
|
|
46
|
+
unencryptedLogs: new UnencryptedFunctionL2Logs(endPersistableState.transitionalExecutionResult.unencryptedLogs),
|
|
47
|
+
allUnencryptedLogs: new UnencryptedFunctionL2Logs(endPersistableState.transitionalExecutionResult.allUnencryptedLogs),
|
|
48
|
+
reverted: avmResult.reverted,
|
|
49
|
+
revertReason: avmResult.revertReason ? createSimulationError(avmResult.revertReason) : undefined,
|
|
50
|
+
startGasLeft: startGas,
|
|
97
51
|
endGasLeft: endMachineState.gasLeft,
|
|
98
|
-
transactionFee:
|
|
52
|
+
transactionFee: endAvmContext.environment.transactionFee,
|
|
99
53
|
};
|
|
100
54
|
}
|
|
101
|
-
export function convertPublicExecutionResult(res) {
|
|
102
|
-
return new AvmContractCallResults(res.reverted, res.returnValues, res.revertReason);
|
|
103
|
-
}
|
|
104
|
-
export function updateAvmContextFromPublicExecutionResult(ctx, result) {
|
|
105
|
-
// We have to push these manually and not use the trace* functions
|
|
106
|
-
// so that we respect the side effect counters.
|
|
107
|
-
for (const readRequest of result.contractStorageReads) {
|
|
108
|
-
ctx.persistableState.trace.publicStorageReads.push({
|
|
109
|
-
storageAddress: ctx.environment.storageAddress,
|
|
110
|
-
exists: true, // FIXME
|
|
111
|
-
slot: readRequest.storageSlot,
|
|
112
|
-
value: readRequest.currentValue,
|
|
113
|
-
counter: new Fr(readRequest.sideEffectCounter ?? Fr.ZERO),
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
for (const updateRequest of result.contractStorageUpdateRequests) {
|
|
117
|
-
ctx.persistableState.trace.publicStorageWrites.push({
|
|
118
|
-
storageAddress: ctx.environment.storageAddress,
|
|
119
|
-
slot: updateRequest.storageSlot,
|
|
120
|
-
value: updateRequest.newValue,
|
|
121
|
-
counter: new Fr(updateRequest.sideEffectCounter ?? Fr.ZERO),
|
|
122
|
-
});
|
|
123
|
-
// We need to manually populate the cache.
|
|
124
|
-
ctx.persistableState.publicStorage.write(ctx.environment.storageAddress, updateRequest.storageSlot, updateRequest.newValue);
|
|
125
|
-
}
|
|
126
|
-
for (const nullifier of result.newNullifiers) {
|
|
127
|
-
ctx.persistableState.trace.newNullifiers.push({
|
|
128
|
-
storageAddress: ctx.environment.storageAddress,
|
|
129
|
-
nullifier: nullifier.value,
|
|
130
|
-
counter: new Fr(nullifier.counter),
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
for (const noteHash of result.newNoteHashes) {
|
|
134
|
-
ctx.persistableState.trace.newNoteHashes.push({
|
|
135
|
-
storageAddress: ctx.environment.storageAddress,
|
|
136
|
-
noteHash: noteHash.value,
|
|
137
|
-
counter: new Fr(noteHash.counter),
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
for (const message of result.newL2ToL1Messages) {
|
|
141
|
-
ctx.persistableState.newL1Messages.push(message);
|
|
142
|
-
}
|
|
143
|
-
for (const log of result.unencryptedLogs.logs) {
|
|
144
|
-
ctx.persistableState.newLogs.push(new UnencryptedL2Log(log.contractAddress, log.selector, log.data));
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
55
|
const AVM_MAGIC_SUFFIX = Buffer.from([
|
|
148
56
|
Mov.opcode, // opcode
|
|
149
57
|
0x00, // indirect
|
|
@@ -157,4 +65,4 @@ export function isAvmBytecode(bytecode) {
|
|
|
157
65
|
const magicSize = AVM_MAGIC_SUFFIX.length;
|
|
158
66
|
return bytecode.subarray(-magicSize).equals(AVM_MAGIC_SUFFIX);
|
|
159
67
|
}
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdGlvbmFsX2FkYXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy90cmFuc2l0aW9uYWxfYWRhcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUdBQWlHO0FBQ2pHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxHQUtiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc1RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQzNDLE9BQXdCLEVBQ3hCLE1BQWMsRUFDZCxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixjQUFrQjtJQUVsQixPQUFPLElBQUksdUJBQXVCLENBQ2hDLE9BQU8sQ0FBQyxlQUFlLEVBQ3ZCLE9BQU8sQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQzFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUM3QixlQUFlLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFDbkMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXO0lBQ25DLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFDaEMsTUFBTSxFQUNOLGVBQWUsRUFDZixPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksRUFDaEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQ2xDLE9BQU8sQ0FBQyxJQUFJLEVBQ1osV0FBVyxFQUNYLGNBQWMsRUFDZCxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDOUIsQ0FBQztBQUNK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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rollup/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type BaseOrMergeRollupPublicInputs, type BaseParityInputs, type BaseRollupInputs, type MergeRollupInputs, type ParityPublicInputs, type RootParityInputs, type RootRollupInputs, type RootRollupPublicInputs } from '@aztec/circuits.js';
|
|
2
|
+
import { type SimulationProvider } from '@aztec/simulator';
|
|
3
|
+
/**
|
|
4
|
+
* Circuit simulator for the rollup circuits.
|
|
5
|
+
*/
|
|
6
|
+
export interface RollupSimulator {
|
|
7
|
+
/**
|
|
8
|
+
* Simulates the base parity circuit from its inputs.
|
|
9
|
+
* @param inputs - Inputs to the circuit.
|
|
10
|
+
* @returns The public inputs of the parity circuit.
|
|
11
|
+
*/
|
|
12
|
+
baseParityCircuit(inputs: BaseParityInputs): Promise<ParityPublicInputs>;
|
|
13
|
+
/**
|
|
14
|
+
* Simulates the root parity circuit from its inputs.
|
|
15
|
+
* @param inputs - Inputs to the circuit.
|
|
16
|
+
* @returns The public inputs of the parity circuit.
|
|
17
|
+
*/
|
|
18
|
+
rootParityCircuit(inputs: RootParityInputs): Promise<ParityPublicInputs>;
|
|
19
|
+
/**
|
|
20
|
+
* Simulates the base rollup circuit from its inputs.
|
|
21
|
+
* @param input - Inputs to the circuit.
|
|
22
|
+
* @returns The public inputs as outputs of the simulation.
|
|
23
|
+
*/
|
|
24
|
+
baseRollupCircuit(input: BaseRollupInputs): Promise<BaseOrMergeRollupPublicInputs>;
|
|
25
|
+
/**
|
|
26
|
+
* Simulates the merge rollup circuit from its inputs.
|
|
27
|
+
* @param input - Inputs to the circuit.
|
|
28
|
+
* @returns The public inputs as outputs of the simulation.
|
|
29
|
+
*/
|
|
30
|
+
mergeRollupCircuit(input: MergeRollupInputs): Promise<BaseOrMergeRollupPublicInputs>;
|
|
31
|
+
/**
|
|
32
|
+
* Simulates the root rollup circuit from its inputs.
|
|
33
|
+
* @param input - Inputs to the circuit.
|
|
34
|
+
* @returns The public inputs as outputs of the simulation.
|
|
35
|
+
*/
|
|
36
|
+
rootRollupCircuit(input: RootRollupInputs): Promise<RootRollupPublicInputs>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Implements the rollup circuit simulator.
|
|
40
|
+
*/
|
|
41
|
+
export declare class RealRollupCircuitSimulator implements RollupSimulator {
|
|
42
|
+
private simulationProvider;
|
|
43
|
+
private log;
|
|
44
|
+
private wasmSimulator;
|
|
45
|
+
constructor(simulationProvider: SimulationProvider);
|
|
46
|
+
/**
|
|
47
|
+
* Simulates the base parity circuit from its inputs.
|
|
48
|
+
* @param inputs - Inputs to the circuit.
|
|
49
|
+
* @returns The public inputs of the parity circuit.
|
|
50
|
+
*/
|
|
51
|
+
baseParityCircuit(inputs: BaseParityInputs): Promise<ParityPublicInputs>;
|
|
52
|
+
/**
|
|
53
|
+
* Simulates the root parity circuit from its inputs.
|
|
54
|
+
* @param inputs - Inputs to the circuit.
|
|
55
|
+
* @returns The public inputs of the parity circuit.
|
|
56
|
+
*/
|
|
57
|
+
rootParityCircuit(inputs: RootParityInputs): Promise<ParityPublicInputs>;
|
|
58
|
+
/**
|
|
59
|
+
* Simulates the base rollup circuit from its inputs.
|
|
60
|
+
* @param input - Inputs to the circuit.
|
|
61
|
+
* @returns The public inputs as outputs of the simulation.
|
|
62
|
+
*/
|
|
63
|
+
baseRollupCircuit(input: BaseRollupInputs): Promise<BaseOrMergeRollupPublicInputs>;
|
|
64
|
+
/**
|
|
65
|
+
* Simulates the merge rollup circuit from its inputs.
|
|
66
|
+
* @param input - Inputs to the circuit.
|
|
67
|
+
* @returns The public inputs as outputs of the simulation.
|
|
68
|
+
*/
|
|
69
|
+
mergeRollupCircuit(input: MergeRollupInputs): Promise<BaseOrMergeRollupPublicInputs>;
|
|
70
|
+
/**
|
|
71
|
+
* Simulates the root rollup circuit from its inputs.
|
|
72
|
+
* @param input - Inputs to the circuit.
|
|
73
|
+
* @returns The public inputs as outputs of the simulation.
|
|
74
|
+
*/
|
|
75
|
+
rootRollupCircuit(input: RootRollupInputs): Promise<RootRollupPublicInputs>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=rollup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/rollup/rollup.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAoB5B,OAAO,EAAE,KAAK,kBAAkB,EAAiB,MAAM,kBAAkB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE;;;;OAIG;IACH,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACnF;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACrF;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IAMpD,OAAO,CAAC,kBAAkB;IALtC,OAAO,CAAC,GAAG,CAA+C;IAG1D,OAAO,CAAC,aAAa,CAAsC;gBAEvC,kBAAkB,EAAE,kBAAkB;IAE1D;;;;OAIG;IACU,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAUrF;;;;OAIG;IACU,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAUrF;;;;OAIG;IACU,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAS/F;;;;OAIG;IACU,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAUjG;;;;OAIG;IACU,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAgBzF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { elapsed } from '@aztec/foundation/timer';
|
|
3
|
+
import { BaseParityArtifact, MergeRollupArtifact, RootParityArtifact, RootRollupArtifact, SimulatedBaseRollupArtifact, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, convertSimulatedBaseRollupInputsToWitnessMap, convertSimulatedBaseRollupOutputsFromWitnessMap, } from '@aztec/noir-protocol-circuits-types';
|
|
4
|
+
import { WASMSimulator } from '@aztec/simulator';
|
|
5
|
+
/**
|
|
6
|
+
* Implements the rollup circuit simulator.
|
|
7
|
+
*/
|
|
8
|
+
export class RealRollupCircuitSimulator {
|
|
9
|
+
constructor(simulationProvider) {
|
|
10
|
+
this.simulationProvider = simulationProvider;
|
|
11
|
+
this.log = createDebugLogger('aztec:rollup-simulator');
|
|
12
|
+
// Some circuits are so small it is faster to use WASM
|
|
13
|
+
this.wasmSimulator = new WASMSimulator();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Simulates the base parity circuit from its inputs.
|
|
17
|
+
* @param inputs - Inputs to the circuit.
|
|
18
|
+
* @returns The public inputs of the parity circuit.
|
|
19
|
+
*/
|
|
20
|
+
async baseParityCircuit(inputs) {
|
|
21
|
+
const witnessMap = convertBaseParityInputsToWitnessMap(inputs);
|
|
22
|
+
const witness = await this.simulationProvider.simulateCircuit(witnessMap, BaseParityArtifact);
|
|
23
|
+
const result = convertBaseParityOutputsFromWitnessMap(witness);
|
|
24
|
+
return Promise.resolve(result);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Simulates the root parity circuit from its inputs.
|
|
28
|
+
* @param inputs - Inputs to the circuit.
|
|
29
|
+
* @returns The public inputs of the parity circuit.
|
|
30
|
+
*/
|
|
31
|
+
async rootParityCircuit(inputs) {
|
|
32
|
+
const witnessMap = convertRootParityInputsToWitnessMap(inputs);
|
|
33
|
+
const witness = await this.simulationProvider.simulateCircuit(witnessMap, RootParityArtifact);
|
|
34
|
+
const result = convertRootParityOutputsFromWitnessMap(witness);
|
|
35
|
+
return Promise.resolve(result);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Simulates the base rollup circuit from its inputs.
|
|
39
|
+
* @param input - Inputs to the circuit.
|
|
40
|
+
* @returns The public inputs as outputs of the simulation.
|
|
41
|
+
*/
|
|
42
|
+
async baseRollupCircuit(input) {
|
|
43
|
+
const witnessMap = convertSimulatedBaseRollupInputsToWitnessMap(input);
|
|
44
|
+
const witness = await this.simulationProvider.simulateCircuit(witnessMap, SimulatedBaseRollupArtifact);
|
|
45
|
+
const result = convertSimulatedBaseRollupOutputsFromWitnessMap(witness);
|
|
46
|
+
return Promise.resolve(result);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Simulates the merge rollup circuit from its inputs.
|
|
50
|
+
* @param input - Inputs to the circuit.
|
|
51
|
+
* @returns The public inputs as outputs of the simulation.
|
|
52
|
+
*/
|
|
53
|
+
async mergeRollupCircuit(input) {
|
|
54
|
+
const witnessMap = convertMergeRollupInputsToWitnessMap(input);
|
|
55
|
+
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, MergeRollupArtifact);
|
|
56
|
+
const result = convertMergeRollupOutputsFromWitnessMap(witness);
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Simulates the root rollup circuit from its inputs.
|
|
61
|
+
* @param input - Inputs to the circuit.
|
|
62
|
+
* @returns The public inputs as outputs of the simulation.
|
|
63
|
+
*/
|
|
64
|
+
async rootRollupCircuit(input) {
|
|
65
|
+
const witnessMap = convertRootRollupInputsToWitnessMap(input);
|
|
66
|
+
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(witnessMap, RootRollupArtifact));
|
|
67
|
+
const result = convertRootRollupOutputsFromWitnessMap(witness);
|
|
68
|
+
this.log.debug(`Simulated root rollup circuit`, {
|
|
69
|
+
eventName: 'circuit-simulation',
|
|
70
|
+
circuitName: 'root-rollup',
|
|
71
|
+
duration,
|
|
72
|
+
inputSize: input.toBuffer().length,
|
|
73
|
+
outputSize: result.toBuffer().length,
|
|
74
|
+
});
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvbGx1cC9yb2xsdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMsb0NBQW9DLEVBQ3BDLHVDQUF1QyxFQUN2QyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMsNENBQTRDLEVBQzVDLCtDQUErQyxHQUNoRCxNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBMkIsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFzQzFFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDBCQUEwQjtJQU1yQyxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUxsRCxRQUFHLEdBQUcsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUUxRCxzREFBc0Q7UUFDOUMsa0JBQWEsR0FBa0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUVFLENBQUM7SUFFOUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUF3QjtRQUNyRCxNQUFNLFVBQVUsR0FBRyxtQ0FBbUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFOUYsTUFBTSxNQUFNLEdBQUcsc0NBQXNDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQXdCO1FBQ3JELE1BQU0sVUFBVSxHQUFHLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9ELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUU5RixNQUFNLE1BQU0sR0FBRyxzQ0FBc0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBdUI7UUFDcEQsTUFBTSxVQUFVLEdBQUcsNENBQTRDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkUsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO1FBRXZHLE1BQU0sTUFBTSxHQUFHLCtDQUErQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUF3QjtRQUN0RCxNQUFNLFVBQVUsR0FBRyxvQ0FBb0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRTFGLE1BQU0sTUFBTSxHQUFHLHVDQUF1QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQXVCO1FBQ3BELE1BQU0sVUFBVSxHQUFHLG1DQUFtQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlELE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUVwSCxNQUFNLE1BQU0sR0FBRyxzQ0FBc0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRTtZQUM5QyxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFFBQVE7WUFDUixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ0osQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stats/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type CircuitName } from '@aztec/circuit-types/stats';
|
|
2
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
3
|
+
export declare function emitCircuitSimulationStats(circuitName: CircuitName, duration: number, inputSize: number, outputSize: number, logger: Logger): void;
|
|
4
|
+
//# sourceMappingURL=stats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/stats/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAA+B,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,QAWf"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function emitCircuitSimulationStats(circuitName, duration, inputSize, outputSize, logger) {
|
|
2
|
+
const stats = {
|
|
3
|
+
eventName: 'circuit-simulation',
|
|
4
|
+
circuitName,
|
|
5
|
+
inputSize,
|
|
6
|
+
outputSize,
|
|
7
|
+
duration,
|
|
8
|
+
};
|
|
9
|
+
logger.debug('Circuit simulation stats', stats);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHMvc3RhdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLDBCQUEwQixDQUN4QyxXQUF3QixFQUN4QixRQUFnQixFQUNoQixTQUFpQixFQUNqQixVQUFrQixFQUNsQixNQUFjO0lBRWQsTUFBTSxLQUFLLEdBQTJCO1FBQ3BDLFNBQVMsRUFBRSxvQkFBb0I7UUFDL0IsV0FBVztRQUNYLFNBQVM7UUFDVCxVQUFVO1FBQ1YsUUFBUTtLQUNULENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xELENBQUMifQ==
|