@aztec/simulator 0.0.1-commit.d1f2d6c → 0.0.1-commit.d20b825a7
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/README.md +4 -4
- package/dest/private/acvm/acvm.d.ts +4 -2
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +4 -3
- package/dest/private/acvm_native.d.ts +5 -3
- package/dest/private/acvm_native.d.ts.map +1 -1
- package/dest/private/acvm_native.js +8 -6
- package/dest/private/acvm_wasm.d.ts +4 -3
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm.js +4 -4
- package/dest/private/circuit_recording/circuit_recorder.d.ts +4 -3
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +7 -5
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
- package/dest/private/factory.d.ts +3 -3
- package/dest/private/factory.d.ts.map +1 -1
- package/dest/private/factory.js +7 -4
- package/dest/public/avm/avm_context.d.ts +3 -3
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +3 -3
- package/dest/public/avm/avm_execution_environment.d.ts +6 -5
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +3 -3
- package/dest/public/avm/avm_machine_state.d.ts +6 -5
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +3 -2
- package/dest/public/avm/avm_simulator.d.ts +3 -2
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +6 -5
- package/dest/public/avm/calldata.d.ts +51 -0
- package/dest/public/avm/calldata.d.ts.map +1 -0
- package/dest/public/avm/calldata.js +64 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +3 -2
- package/dest/public/avm/fixtures/initializers.d.ts +1 -1
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
- package/dest/public/avm/fixtures/initializers.js +2 -1
- package/dest/public/avm/opcodes/accrued_substate.d.ts +4 -5
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +15 -16
- package/dest/public/avm/opcodes/external_calls.d.ts +1 -1
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +7 -7
- package/dest/public/avm/opcodes/memory.js +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +3 -3
- package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +1 -1
- package/dest/public/contracts_db_checkpoint.d.ts +2 -2
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
- package/dest/public/contracts_db_checkpoint.js +1 -1
- package/dest/public/debug_fn_name.d.ts +4 -4
- package/dest/public/debug_fn_name.d.ts.map +1 -1
- package/dest/public/debug_fn_name.js +7 -5
- package/dest/public/executor_metrics.d.ts +1 -1
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +7 -2
- package/dest/public/fixtures/amm_test.js +2 -2
- package/dest/public/fixtures/bulk_test.d.ts +1 -1
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/bulk_test.js +4 -4
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +3 -1
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tests.js +61 -1
- package/dest/public/fixtures/opcode_spammer.d.ts +3 -4
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -1
- package/dest/public/fixtures/opcode_spammer.js +16 -56
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +6 -5
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +37 -10
- package/dest/public/fixtures/utils.d.ts +2 -2
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +10 -10
- package/dest/public/hinting_db_sources.d.ts +5 -5
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +7 -6
- package/dest/public/public_db_sources.d.ts +6 -5
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +14 -14
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +5 -5
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +5 -5
- package/dest/public/public_processor/public_processor.d.ts +8 -4
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +75 -50
- package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +28 -4
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +3 -2
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +4 -3
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +5 -5
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +10 -11
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +4 -4
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +7 -7
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +4 -4
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +6 -6
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +3 -2
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +2 -2
- package/dest/public/public_tx_simulator/factories.d.ts +3 -2
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/factories.js +4 -4
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +10 -5
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +16 -18
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +9 -4
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +23 -15
- package/dest/public/side_effect_trace.d.ts +4 -4
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +3 -3
- package/dest/public/state_manager/state_manager.d.ts +10 -4
- package/dest/public/state_manager/state_manager.d.ts.map +1 -1
- package/dest/public/state_manager/state_manager.js +12 -5
- package/dest/public/test_executor_metrics.d.ts +8 -2
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +24 -2
- package/package.json +15 -16
- package/src/private/acvm/acvm.ts +4 -3
- package/src/private/acvm_native.ts +11 -5
- package/src/private/acvm_wasm.ts +7 -3
- package/src/private/circuit_recording/circuit_recorder.ts +7 -5
- package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
- package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
- package/src/private/factory.ts +7 -4
- package/src/public/avm/avm_context.ts +2 -2
- package/src/public/avm/avm_contract_call_result.ts +8 -6
- package/src/public/avm/avm_execution_environment.ts +9 -4
- package/src/public/avm/avm_gas.ts +2 -2
- package/src/public/avm/avm_machine_state.ts +6 -5
- package/src/public/avm/avm_simulator.ts +9 -6
- package/src/public/avm/calldata.ts +101 -0
- package/src/public/avm/fixtures/account_proof.json +553 -0
- package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
- package/src/public/avm/fixtures/avm_simulation_tester.ts +8 -2
- package/src/public/avm/fixtures/initializers.ts +2 -1
- package/src/public/avm/opcodes/accrued_substate.ts +16 -19
- package/src/public/avm/opcodes/external_calls.ts +9 -8
- package/src/public/avm/opcodes/memory.ts +1 -1
- package/src/public/avm/serialization/bytecode_serialization.ts +2 -2
- package/src/public/avm/serialization/instruction_serialization.ts +1 -1
- package/src/public/contracts_db_checkpoint.ts +1 -1
- package/src/public/debug_fn_name.ts +10 -8
- package/src/public/executor_metrics.ts +4 -1
- package/src/public/fixtures/amm_test.ts +2 -2
- package/src/public/fixtures/bulk_test.ts +2 -4
- package/src/public/fixtures/custom_bytecode_tests.ts +139 -1
- package/src/public/fixtures/opcode_spammer.ts +18 -55
- package/src/public/fixtures/public_tx_simulation_tester.ts +47 -6
- package/src/public/fixtures/utils.ts +17 -12
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +1 -1
- package/src/public/hinting_db_sources.ts +9 -7
- package/src/public/public_db_sources.ts +27 -19
- package/src/public/public_processor/guarded_merkle_tree.ts +6 -6
- package/src/public/public_processor/public_processor.ts +112 -67
- package/src/public/public_processor/public_processor_metrics.ts +22 -4
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +8 -4
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +10 -8
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +7 -5
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +7 -5
- package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +3 -1
- package/src/public/public_tx_simulator/factories.ts +6 -3
- package/src/public/public_tx_simulator/public_tx_context.ts +21 -16
- package/src/public/public_tx_simulator/public_tx_simulator.ts +28 -15
- package/src/public/side_effect_trace.ts +5 -2
- package/src/public/state_manager/state_manager.ts +27 -4
- package/src/public/test_executor_metrics.ts +27 -3
|
@@ -19,29 +19,29 @@ import { L1ToL2MessageIndexOutOfRangeError, NoteHashIndexOutOfRangeError } from
|
|
|
19
19
|
dataSource;
|
|
20
20
|
contractStateStack;
|
|
21
21
|
log;
|
|
22
|
-
constructor(dataSource){
|
|
22
|
+
constructor(dataSource, bindings){
|
|
23
23
|
this.dataSource = dataSource;
|
|
24
24
|
this.contractStateStack = [
|
|
25
25
|
new ContractsDbCheckpoint()
|
|
26
26
|
];
|
|
27
|
-
this.log = createLogger('simulator:contracts-data-source');
|
|
27
|
+
this.log = createLogger('simulator:contracts-data-source', bindings);
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
addContracts(contractDeploymentData) {
|
|
30
30
|
const currentState = this.getCurrentState();
|
|
31
|
-
|
|
31
|
+
this.addContractClassesFromEvents(ContractClassPublishedEvent.extractContractClassEvents(contractDeploymentData.getContractClassLogs()), currentState);
|
|
32
32
|
this.addContractInstancesFromEvents(ContractInstancePublishedEvent.extractContractInstanceEvents(contractDeploymentData.getPrivateLogs()), currentState);
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
addNewContracts(tx) {
|
|
35
35
|
const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
this.addContracts(contractDeploymentData.getNonRevertibleContractDeploymentData());
|
|
37
|
+
this.addContracts(contractDeploymentData.getRevertibleContractDeploymentData());
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Creates a new checkpoint, copying the current state for upcoming modifications,
|
|
41
41
|
* and enabling rollbacks to current state in case of a revert.
|
|
42
42
|
*/ createCheckpoint() {
|
|
43
43
|
const currentState = this.getCurrentState();
|
|
44
|
-
const newState = currentState.
|
|
44
|
+
const newState = currentState.fork();
|
|
45
45
|
this.contractStateStack.push(newState);
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
@@ -115,12 +115,12 @@ import { L1ToL2MessageIndexOutOfRangeError, NoteHashIndexOutOfRangeError } from
|
|
|
115
115
|
async getDebugFunctionName(address, selector) {
|
|
116
116
|
return await this.dataSource.getDebugFunctionName(address, selector);
|
|
117
117
|
}
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
addContractClassesFromEvents(contractClassEvents, state) {
|
|
119
|
+
for (const event of contractClassEvents){
|
|
120
120
|
this.log.debug(`Adding class ${event.contractClassId.toString()} to contract state`);
|
|
121
|
-
const contractClass =
|
|
121
|
+
const contractClass = event.toContractClassPublic();
|
|
122
122
|
state.addClass(event.contractClassId, contractClass);
|
|
123
|
-
}
|
|
123
|
+
}
|
|
124
124
|
}
|
|
125
125
|
addContractInstancesFromEvents(contractInstanceEvents, state) {
|
|
126
126
|
contractInstanceEvents.forEach((e)=>{
|
|
@@ -143,9 +143,9 @@ import { L1ToL2MessageIndexOutOfRangeError, NoteHashIndexOutOfRangeError } from
|
|
|
143
143
|
*/ export class PublicTreesDB {
|
|
144
144
|
db;
|
|
145
145
|
logger;
|
|
146
|
-
constructor(db){
|
|
146
|
+
constructor(db, bindings){
|
|
147
147
|
this.db = db;
|
|
148
|
-
this.logger = createLogger('simulator:public-trees-db');
|
|
148
|
+
this.logger = createLogger('simulator:public-trees-db', bindings);
|
|
149
149
|
}
|
|
150
150
|
async storageRead(contract, slot) {
|
|
151
151
|
const timer = new Timer();
|
|
@@ -23,7 +23,7 @@ export declare class GuardedMerkleTreeOperations implements MerkleTreeWriteOpera
|
|
|
23
23
|
batchInsert<TreeHeight extends number, SubtreeSiblingPathHeight extends number, ID extends IndexedTreeId>(treeId: ID, leaves: Buffer[], subtreeHeight: number): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>>;
|
|
24
24
|
sequentialInsert<TreeHeight extends number, ID extends IndexedTreeId>(treeId: ID, leaves: Buffer[]): Promise<SequentialInsertionResult<TreeHeight>>;
|
|
25
25
|
close(): Promise<void>;
|
|
26
|
-
[Symbol.
|
|
26
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
27
27
|
getTreeInfo(treeId: MerkleTreeId): Promise<TreeInfo>;
|
|
28
28
|
getStateReference(): Promise<StateReference>;
|
|
29
29
|
getInitialHeader(): BlockHeader;
|
|
@@ -38,14 +38,14 @@ export declare class GuardedMerkleTreeOperations implements MerkleTreeWriteOpera
|
|
|
38
38
|
findLeafIndicesAfter<ID extends MerkleTreeId>(treeId: ID, values: MerkleTreeLeafType<ID>[], startIndex: bigint): Promise<(bigint | undefined)[]>;
|
|
39
39
|
getLeafValue<ID extends MerkleTreeId>(treeId: ID, index: bigint): Promise<MerkleTreeLeafType<typeof treeId> | undefined>;
|
|
40
40
|
getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(treeId: ID, leafIndices: bigint[]): Promise<(BlockNumber | undefined)[]>;
|
|
41
|
-
createCheckpoint(): Promise<
|
|
41
|
+
createCheckpoint(): Promise<number>;
|
|
42
42
|
commitCheckpoint(): Promise<void>;
|
|
43
43
|
revertCheckpoint(): Promise<void>;
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
commitAllCheckpointsTo(depth: number): Promise<void>;
|
|
45
|
+
revertAllCheckpointsTo(depth: number): Promise<void>;
|
|
46
46
|
findSiblingPaths<ID extends MerkleTreeId>(treeId: ID, values: MerkleTreeLeafType<ID>[]): Promise<({
|
|
47
47
|
path: SiblingPath<TreeHeights[ID]>;
|
|
48
48
|
index: bigint;
|
|
49
49
|
} | undefined)[]>;
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRlZF9tZXJrbGVfdHJlZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfcHJvY2Vzc29yL2d1YXJkZWRfbWVya2xlX3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQ1Ysb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsV0FBVyxFQUNYLFFBQVEsRUFDVCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWxHOzs7OztHQUtHO0FBRUgscUJBQWEsMkJBQTRCLFlBQVcseUJBQXlCO0lBSS9ELE9BQU8sQ0FBQyxNQUFNO0lBSDFCLE9BQU8sQ0FBQyxTQUFTLENBQVM7SUFDMUIsT0FBTyxDQUFDLFdBQVcsQ0FBcUI7SUFFeEMsWUFBb0IsTUFBTSxFQUFFLHlCQUF5QixFQUVwRDtJQUVELE9BQU8sQ0FBQyxLQUFLO0lBT2IsT0FBTyxDQUFDLFlBQVk7SUFRYixpQkFBaUIsSUFBSSx5QkFBeUIsQ0FFcEQ7SUFHSyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU0xQjtJQUdELFlBQVksQ0FBQyxFQUFFLFNBQVMsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guarded_merkle_tree.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/guarded_merkle_tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,WAAW,EACX,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAElG;;;;;GAKG;AAEH,qBAAa,2BAA4B,YAAW,yBAAyB;IAI/D,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAqB;IAExC,YAAoB,MAAM,EAAE,yBAAyB,EAEpD;IAED,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,YAAY;IAQb,iBAAiB,IAAI,yBAAyB,CAEpD;IAGK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1B;IAGD,YAAY,CAAC,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjG;IAED,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhD;IACD,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EACtG,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAErE;IACD,gBAAgB,CAAC,UAAU,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EAClE,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAEhD;IACD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;IAEK,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"guarded_merkle_tree.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/guarded_merkle_tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var _computedKey;
|
|
2
2
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
3
|
-
_computedKey = Symbol.
|
|
3
|
+
_computedKey = Symbol.asyncDispose;
|
|
4
4
|
/**
|
|
5
5
|
* Wraps an instance of `MerkleTreeWriteOperations` to allow the sequencer to gate access.
|
|
6
6
|
* If transactions execution goes past the deadline, the simulator will continue to execute and update the world state
|
|
@@ -101,11 +101,11 @@ _computedKey = Symbol.dispose;
|
|
|
101
101
|
revertCheckpoint() {
|
|
102
102
|
return this.guardAndPush(()=>this.target.revertCheckpoint());
|
|
103
103
|
}
|
|
104
|
-
|
|
105
|
-
return this.guardAndPush(()=>this.target.
|
|
104
|
+
commitAllCheckpointsTo(depth) {
|
|
105
|
+
return this.guardAndPush(()=>this.target.commitAllCheckpointsTo(depth));
|
|
106
106
|
}
|
|
107
|
-
|
|
108
|
-
return this.guardAndPush(()=>this.target.
|
|
107
|
+
revertAllCheckpointsTo(depth) {
|
|
108
|
+
return this.guardAndPush(()=>this.target.revertAllCheckpointsTo(depth));
|
|
109
109
|
}
|
|
110
110
|
findSiblingPaths(treeId, values) {
|
|
111
111
|
return this.guardAndPush(()=>this.target.findSiblingPaths(treeId, values));
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type Logger, type LoggerBindings } from '@aztec/foundation/log';
|
|
1
2
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
2
3
|
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
3
4
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
4
5
|
import type { MerkleTreeWriteOperations, PublicProcessorLimits, PublicProcessorValidator, SequencerConfig } from '@aztec/stdlib/interfaces/server';
|
|
6
|
+
import { type DebugLog, type DebugLogStore } from '@aztec/stdlib/logs';
|
|
5
7
|
import { type FailedTx, GlobalVariables, NestedProcessReturnValues, type ProcessedTx, Tx } from '@aztec/stdlib/tx';
|
|
6
8
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
7
9
|
import { PublicContractsDB } from '../public_db_sources.js';
|
|
@@ -14,7 +16,8 @@ export declare class PublicProcessorFactory {
|
|
|
14
16
|
private contractDataSource;
|
|
15
17
|
private dateProvider;
|
|
16
18
|
protected telemetryClient: TelemetryClient;
|
|
17
|
-
|
|
19
|
+
private log;
|
|
20
|
+
constructor(contractDataSource: ContractDataSource, dateProvider?: DateProvider, telemetryClient?: TelemetryClient, bindings?: LoggerBindings);
|
|
18
21
|
/**
|
|
19
22
|
* Creates a new instance of a PublicProcessor.
|
|
20
23
|
* @param globalVariables - The global variables for the block being processed.
|
|
@@ -36,8 +39,9 @@ export declare class PublicProcessor implements Traceable {
|
|
|
36
39
|
private dateProvider;
|
|
37
40
|
private log;
|
|
38
41
|
private opts;
|
|
42
|
+
private debugLogStore;
|
|
39
43
|
private metrics;
|
|
40
|
-
constructor(globalVariables: GlobalVariables, guardedMerkleTree: GuardedMerkleTreeOperations, contractsDB: PublicContractsDB, publicTxSimulator: PublicTxSimulatorInterface, dateProvider: DateProvider, telemetryClient
|
|
44
|
+
constructor(globalVariables: GlobalVariables, guardedMerkleTree: GuardedMerkleTreeOperations, contractsDB: PublicContractsDB, publicTxSimulator: PublicTxSimulatorInterface, dateProvider: DateProvider, telemetryClient: TelemetryClient | undefined, log: Logger, opts?: Pick<SequencerConfig, 'fakeProcessingDelayPerTxMs' | 'fakeThrowAfterProcessingTxCount'>, debugLogStore?: DebugLogStore);
|
|
41
45
|
get tracer(): Tracer;
|
|
42
46
|
/**
|
|
43
47
|
* Run each tx through the public circuit and the public kernel circuit if needed.
|
|
@@ -46,7 +50,7 @@ export declare class PublicProcessor implements Traceable {
|
|
|
46
50
|
* @param validator - Pre-process validator and nullifier cache to use for processing the txs.
|
|
47
51
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
48
52
|
*/
|
|
49
|
-
process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?: PublicProcessorLimits, validator?: PublicProcessorValidator): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[],
|
|
53
|
+
process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?: PublicProcessorLimits, validator?: PublicProcessorValidator): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[], DebugLog[]]>;
|
|
50
54
|
private checkWorldStateUnchanged;
|
|
51
55
|
private processTx;
|
|
52
56
|
private doTreeInsertionsForPrivateOnlyTx;
|
|
@@ -59,4 +63,4 @@ export declare class PublicProcessor implements Traceable {
|
|
|
59
63
|
*/
|
|
60
64
|
private static generateProvingRequest;
|
|
61
65
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfcHJvY2Vzc29yL3B1YmxpY19wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxZQUFZLEVBQWtDLE1BQU0seUJBQXlCLENBQUM7QUFJdkYsT0FBTyxFQU1MLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHakUsT0FBTyxLQUFLLEVBQ1YseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsZUFBZSxFQUNoQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLGFBQWEsRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUcxRixPQUFPLEVBQ0wsS0FBSyxRQUFRLEVBQ2IsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixLQUFLLFdBQVcsRUFFaEIsRUFBRSxFQUdILE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUNwQixLQUFLLFNBQVMsRUFDZCxLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBS2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSywwQkFBMEIsRUFFaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RTs7R0FFRztBQUNILHFCQUFhLHNCQUFzQjtJQUcvQixPQUFPLENBQUMsa0JBQWtCO0lBQzFCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZTtJQUo1QyxPQUFPLENBQUMsR0FBRyxDQUFTO0lBQ3BCLFlBQ1Usa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLFlBQVksR0FBRSxZQUFpQyxFQUM3QyxlQUFlLEdBQUUsZUFBc0MsRUFDakUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUcxQjtJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUNYLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxFQUFFLHFCQUFxQixHQUM1QixlQUFlLENBZ0JqQjtJQUVELFNBQVMsQ0FBQyx1QkFBdUIsQ0FDL0IsVUFBVSxFQUFFLHlCQUF5QixFQUNyQyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxHQUN4QywwQkFBMEIsQ0FTNUI7Q0FDRjtBQVNEOzs7R0FHRztBQUNILHFCQUFhLGVBQWdCLFlBQVcsU0FBUztJQUc3QyxTQUFTLENBQUMsZUFBZSxFQUFFLGVBQWU7SUFDMUMsT0FBTyxDQUFDLGlCQUFpQjtJQUN6QixTQUFTLENBQUMsV0FBVyxFQUFFLGlCQUFpQjtJQUN4QyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQ3ZELE9BQU8sQ0FBQyxZQUFZO0lBRXBCLE9BQU8sQ0FBQyxHQUFHO0lBQ1gsT0FBTyxDQUFDLElBQUk7SUFDWixPQUFPLENBQUMsYUFBYTtJQVZ2QixPQUFPLENBQUMsT0FBTyxDQUF5QjtJQUN4QyxZQUNZLGVBQWUsRUFBRSxlQUFlLEVBQ2xDLGlCQUFpQixFQUFFLDJCQUEyQixFQUM1QyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGlCQUFpQixFQUFFLDBCQUEwQixFQUMvQyxZQUFZLEVBQUUsWUFBWSxFQUNsQyxlQUFlLDZCQUF3QyxFQUMvQyxHQUFHLEVBQUUsTUFBTSxFQUNYLElBQUksR0FBRSxJQUFJLENBQUMsZUFBZSxFQUFFLDRCQUE0QixHQUFHLGlDQUFpQyxDQUFNLEVBQ2xHLGFBQWEsR0FBRSxhQUF1QyxFQUcvRDtJQUVELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FFbkI7SUFFRDs7Ozs7O09BTUc7SUFDVSxPQUFPLENBQ2xCLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUNyQyxNQUFNLEdBQUUscUJBQTBCLEVBQ2xDLFNBQVMsR0FBRSx3QkFBNkIsR0FDdkMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUseUJBQXlCLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBd09yRjtZQUVhLHdCQUF3QjtZQWlCeEIsU0FBUztZQWdDVCxnQ0FBZ0M7WUE0QmhDLHVCQUF1QjtZQStDdkIsZ0NBQWdDO1lBMEJoQyxvQkFBb0I7WUErQnBCLHdCQUF3QjtJQXlDdEM7O09BRUc7SUFDSCxPQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQjtDQVN0QyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -383,6 +383,7 @@ import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } fro
|
|
|
383
383
|
import { AvmCircuitInputs, AvmExecutionHints, PublicDataWrite } from '@aztec/stdlib/avm';
|
|
384
384
|
import { computeTransactionFee } from '@aztec/stdlib/fees';
|
|
385
385
|
import { Gas } from '@aztec/stdlib/gas';
|
|
386
|
+
import { NullDebugLogStore } from '@aztec/stdlib/logs';
|
|
386
387
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
387
388
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
388
389
|
import { NestedProcessReturnValues, makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls } from '@aztec/stdlib/tx';
|
|
@@ -399,10 +400,12 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
|
399
400
|
contractDataSource;
|
|
400
401
|
dateProvider;
|
|
401
402
|
telemetryClient;
|
|
402
|
-
|
|
403
|
+
log;
|
|
404
|
+
constructor(contractDataSource, dateProvider = new DateProvider(), telemetryClient = getTelemetryClient(), bindings){
|
|
403
405
|
this.contractDataSource = contractDataSource;
|
|
404
406
|
this.dateProvider = dateProvider;
|
|
405
407
|
this.telemetryClient = telemetryClient;
|
|
408
|
+
this.log = createLogger('simulator:public-processor-factory', bindings);
|
|
406
409
|
}
|
|
407
410
|
/**
|
|
408
411
|
* Creates a new instance of a PublicProcessor.
|
|
@@ -410,13 +413,14 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
|
410
413
|
* @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
|
|
411
414
|
* @returns A new instance of a PublicProcessor.
|
|
412
415
|
*/ create(merkleTree, globalVariables, config) {
|
|
413
|
-
const
|
|
416
|
+
const bindings = this.log.getBindings();
|
|
417
|
+
const contractsDB = new PublicContractsDB(this.contractDataSource, bindings);
|
|
414
418
|
const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
|
|
415
419
|
const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, config);
|
|
416
|
-
return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient);
|
|
420
|
+
return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor', bindings));
|
|
417
421
|
}
|
|
418
422
|
createPublicTxSimulator(merkleTree, contractsDB, globalVariables, config) {
|
|
419
|
-
return new TelemetryCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, this.telemetryClient, config);
|
|
423
|
+
return new TelemetryCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, this.telemetryClient, config, this.log.getBindings());
|
|
420
424
|
}
|
|
421
425
|
}
|
|
422
426
|
class PublicProcessorTimeoutError extends Error {
|
|
@@ -443,6 +447,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
443
447
|
dateProvider;
|
|
444
448
|
log;
|
|
445
449
|
opts;
|
|
450
|
+
debugLogStore;
|
|
446
451
|
static{
|
|
447
452
|
({ e: [_initProto] } = _apply_decs_2203_r(this, [
|
|
448
453
|
[
|
|
@@ -463,7 +468,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
463
468
|
], []));
|
|
464
469
|
}
|
|
465
470
|
metrics;
|
|
466
|
-
constructor(globalVariables, guardedMerkleTree, contractsDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log =
|
|
471
|
+
constructor(globalVariables, guardedMerkleTree, contractsDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log, opts = {}, debugLogStore = new NullDebugLogStore()){
|
|
467
472
|
this.globalVariables = globalVariables;
|
|
468
473
|
this.guardedMerkleTree = guardedMerkleTree;
|
|
469
474
|
this.contractsDB = contractsDB;
|
|
@@ -471,6 +476,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
471
476
|
this.dateProvider = dateProvider;
|
|
472
477
|
this.log = log;
|
|
473
478
|
this.opts = opts;
|
|
479
|
+
this.debugLogStore = debugLogStore;
|
|
474
480
|
_initProto(this);
|
|
475
481
|
this.metrics = new PublicProcessorMetrics(telemetryClient, 'PublicProcessor');
|
|
476
482
|
}
|
|
@@ -484,17 +490,20 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
484
490
|
* @param validator - Pre-process validator and nullifier cache to use for processing the txs.
|
|
485
491
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
486
492
|
*/ async process(txs, limits = {}, validator = {}) {
|
|
487
|
-
const { maxTransactions,
|
|
493
|
+
const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal } = limits;
|
|
488
494
|
const { preprocessValidator, nullifierCache } = validator;
|
|
489
495
|
const result = [];
|
|
490
496
|
const usedTxs = [];
|
|
491
497
|
const failed = [];
|
|
498
|
+
const debugLogs = [];
|
|
492
499
|
const timer = new Timer();
|
|
493
500
|
let totalSizeInBytes = 0;
|
|
494
501
|
let returns = [];
|
|
495
502
|
let totalPublicGas = new Gas(0, 0);
|
|
496
503
|
let totalBlockGas = new Gas(0, 0);
|
|
497
504
|
let totalBlobFields = 0;
|
|
505
|
+
let silentlySkippedCount = 0;
|
|
506
|
+
let totalSilentlySkippedDurationMs = 0;
|
|
498
507
|
for await (const tx of txs){
|
|
499
508
|
// Only process up to the max tx limit
|
|
500
509
|
if (maxTransactions !== undefined && result.length >= maxTransactions) {
|
|
@@ -506,21 +515,23 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
506
515
|
this.log.warn(`Stopping tx processing due to timeout.`);
|
|
507
516
|
break;
|
|
508
517
|
}
|
|
509
|
-
// Skip this tx if it'd exceed max block size
|
|
510
518
|
const txHash = tx.getTxHash().toString();
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
519
|
+
// Skip this tx if its estimated blob fields would exceed the limit.
|
|
520
|
+
// Only done during proposal building: during re-execution we must process the exact txs from the proposal.
|
|
521
|
+
const txBlobFields = tx.getPrivateTxEffectsSizeInFields();
|
|
522
|
+
if (isBuildingProposal && maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
|
|
523
|
+
this.log.warn(`Skipping tx ${txHash} with ${txBlobFields} fields from private side effects due to blob fields limit`, {
|
|
514
524
|
txHash,
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
525
|
+
txBlobFields,
|
|
526
|
+
totalBlobFields,
|
|
527
|
+
maxBlobFields
|
|
518
528
|
});
|
|
519
529
|
continue;
|
|
520
530
|
}
|
|
521
|
-
// Skip this tx if its gas limit would exceed the block gas limit
|
|
531
|
+
// Skip this tx if its gas limit would exceed the block gas limit (either da or l2).
|
|
532
|
+
// Only done during proposal building: during re-execution we must process the exact txs from the proposal.
|
|
522
533
|
const txGasLimit = tx.data.constants.txContext.gasSettings.gasLimits;
|
|
523
|
-
if (maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
|
|
534
|
+
if (isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
|
|
524
535
|
this.log.warn(`Skipping processing of tx ${txHash} due to block gas limit`, {
|
|
525
536
|
txHash,
|
|
526
537
|
txGasLimit,
|
|
@@ -560,51 +571,60 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
560
571
|
const startStateReference = await this.guardedMerkleTree.getUnderlyingFork().getStateReference();
|
|
561
572
|
this.contractsDB.createCheckpoint();
|
|
562
573
|
try {
|
|
563
|
-
const [processedTx, returnValues] = await this.processTx(tx, deadline);
|
|
574
|
+
const [txProcessingTimeMs, [processedTx, returnValues, txDebugLogs]] = await elapsed(()=>this.processTx(tx, deadline));
|
|
564
575
|
// Inject a fake processing failure after N txs if requested
|
|
565
576
|
const fakeThrowAfter = this.opts.fakeThrowAfterProcessingTxCount;
|
|
566
577
|
if (fakeThrowAfter !== undefined && result.length + failed.length + 1 >= fakeThrowAfter) {
|
|
567
578
|
throw new Error(`Fake error after processing ${fakeThrowAfter} txs`);
|
|
568
579
|
}
|
|
569
580
|
const txBlobFields = processedTx.txEffect.getNumBlobFields();
|
|
570
|
-
// If the actual size of this tx would exceed block size, skip it
|
|
571
581
|
const txSize = txBlobFields * Fr.SIZE_IN_BYTES;
|
|
572
|
-
|
|
573
|
-
this.log.debug(`Skipping processed tx ${txHash} sized ${txSize} due to max block size.`, {
|
|
574
|
-
txHash,
|
|
575
|
-
sizeInBytes: txSize,
|
|
576
|
-
totalSizeInBytes,
|
|
577
|
-
maxBlockSize
|
|
578
|
-
});
|
|
579
|
-
// Need to revert the checkpoint here and don't go any further
|
|
580
|
-
await checkpoint.revert();
|
|
581
|
-
this.contractsDB.revertCheckpoint();
|
|
582
|
-
continue;
|
|
583
|
-
}
|
|
584
|
-
// If the actual blob fields of this tx would exceed the limit, skip it
|
|
582
|
+
// If the actual blob fields of this tx would exceed the limit, skip it.
|
|
585
583
|
// Note: maxBlobFields already accounts for block end blob fields and previous blocks in checkpoint.
|
|
586
584
|
if (maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
|
|
587
585
|
this.log.debug(`Skipping processed tx ${txHash} with ${txBlobFields} blob fields due to max blob fields limit.`, {
|
|
588
586
|
txHash,
|
|
589
587
|
txBlobFields,
|
|
590
588
|
totalBlobFields,
|
|
591
|
-
maxBlobFields
|
|
589
|
+
maxBlobFields,
|
|
590
|
+
txProcessingTimeMs
|
|
592
591
|
});
|
|
592
|
+
silentlySkippedCount += 1;
|
|
593
|
+
totalSilentlySkippedDurationMs += txProcessingTimeMs;
|
|
594
|
+
this.metrics.recordSilentlySkipped(txProcessingTimeMs);
|
|
593
595
|
// Need to revert the checkpoint here and don't go any further
|
|
594
596
|
await checkpoint.revert();
|
|
595
597
|
this.contractsDB.revertCheckpoint();
|
|
596
598
|
continue;
|
|
597
599
|
}
|
|
600
|
+
// During re-execution, check if the actual gas used by this tx would push the block over the gas limit.
|
|
601
|
+
// Unlike the proposal-building check (which uses declared gas limits pessimistically before processing),
|
|
602
|
+
// this uses actual gas and stops processing when the limit is exceeded.
|
|
603
|
+
if (!isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(processedTx.gasUsed.totalGas).gtAny(maxBlockGas)) {
|
|
604
|
+
this.log.warn(`Stopping re-execution since tx ${txHash} would push block gas over limit`, {
|
|
605
|
+
txHash,
|
|
606
|
+
txGas: processedTx.gasUsed.totalGas,
|
|
607
|
+
totalBlockGas,
|
|
608
|
+
maxBlockGas
|
|
609
|
+
});
|
|
610
|
+
await checkpoint.revert();
|
|
611
|
+
this.contractsDB.revertCheckpoint();
|
|
612
|
+
break;
|
|
613
|
+
}
|
|
598
614
|
// FIXME(fcarreiro): it's ugly to have to notify the validator of nullifiers.
|
|
599
615
|
// I'd rather pass the validators the processedTx as well and let them deal with it.
|
|
600
616
|
nullifierCache?.addNullifiers(processedTx.txEffect.nullifiers.map((n)=>n.toBuffer()));
|
|
601
617
|
result.push(processedTx);
|
|
602
618
|
usedTxs.push(tx);
|
|
603
619
|
returns = returns.concat(returnValues);
|
|
620
|
+
debugLogs.push(...txDebugLogs);
|
|
621
|
+
this.debugLogStore.storeLogs(processedTx.hash.toString(), txDebugLogs);
|
|
604
622
|
totalPublicGas = totalPublicGas.add(processedTx.gasUsed.publicGas);
|
|
605
623
|
totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
|
|
606
624
|
totalSizeInBytes += txSize;
|
|
607
625
|
totalBlobFields += txBlobFields;
|
|
626
|
+
// Commit the tx-level contracts checkpoint on success
|
|
627
|
+
this.contractsDB.commitCheckpoint();
|
|
608
628
|
} catch (err) {
|
|
609
629
|
if (err?.name === 'PublicProcessorTimeoutError') {
|
|
610
630
|
this.log.warn(`Stopping tx processing due to timeout.`);
|
|
@@ -621,22 +641,19 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
621
641
|
// We now know there can't be any further access to world state. The fork is in a state where there is:
|
|
622
642
|
// 1. At least one outstanding checkpoint that has not been committed (the one created before we processed the tx).
|
|
623
643
|
// 2. Possible state updates on that checkpoint or any others created during execution.
|
|
624
|
-
//
|
|
625
|
-
//
|
|
626
|
-
//
|
|
627
|
-
await checkpoint.
|
|
628
|
-
// Now we want to revert any/all remaining checkpoints, destroying any outstanding state updates.
|
|
629
|
-
// This needs to be done directly on the underlying fork as the guarded fork has been stopped.
|
|
630
|
-
await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
|
|
644
|
+
// Revert all checkpoints at or above this checkpoint's depth (inclusive), destroying any outstanding state
|
|
645
|
+
// updates from this tx and any nested checkpoints created during execution. This preserves any checkpoints
|
|
646
|
+
// created by callers below our depth.
|
|
647
|
+
await checkpoint.revertToCheckpoint();
|
|
631
648
|
// Revert any contracts added to the DB for the tx.
|
|
632
649
|
this.contractsDB.revertCheckpoint();
|
|
633
650
|
// Ensure we're at the same state as when we started processing this tx.
|
|
634
651
|
await this.checkWorldStateUnchanged(startStateReference, txHash, err);
|
|
635
652
|
break;
|
|
636
653
|
}
|
|
637
|
-
// Roll back state to start of TX before proceeding to next TX
|
|
638
|
-
|
|
639
|
-
await
|
|
654
|
+
// Roll back state to start of TX before proceeding to next TX.
|
|
655
|
+
// Reverts all checkpoints at or above this checkpoint's depth, preserving any caller checkpoints below.
|
|
656
|
+
await checkpoint.revertToCheckpoint();
|
|
640
657
|
this.contractsDB.revertCheckpoint();
|
|
641
658
|
const errorMessage = err instanceof Error || err instanceof AssertionError ? err.message : 'Unknown error';
|
|
642
659
|
this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
|
|
@@ -650,25 +667,30 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
650
667
|
} finally{
|
|
651
668
|
// Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was previously reverted
|
|
652
669
|
await checkpoint.commit();
|
|
653
|
-
this.contractsDB.commitCheckpointOkIfNone();
|
|
654
670
|
}
|
|
655
671
|
}
|
|
656
672
|
const duration = timer.s();
|
|
657
673
|
const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
|
|
658
674
|
this.metrics.recordAllTxs(totalPublicGas, rate);
|
|
659
|
-
|
|
675
|
+
const silentlySkippedDurationMs = Math.round(totalSilentlySkippedDurationMs);
|
|
676
|
+
this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs ` + `(${silentlySkippedCount} silently skipped, ${silentlySkippedDurationMs}ms wasted) ` + `in ${duration}s`, {
|
|
677
|
+
blockNumber: this.globalVariables.blockNumber,
|
|
678
|
+
successfulCount: result.length,
|
|
679
|
+
failedCount: failed.length,
|
|
660
680
|
duration,
|
|
661
681
|
rate,
|
|
662
682
|
totalPublicGas,
|
|
663
683
|
totalBlockGas,
|
|
664
|
-
totalSizeInBytes
|
|
684
|
+
totalSizeInBytes,
|
|
685
|
+
silentlySkippedCount,
|
|
686
|
+
silentlySkippedDurationMs
|
|
665
687
|
});
|
|
666
688
|
return [
|
|
667
689
|
result,
|
|
668
690
|
failed,
|
|
669
691
|
usedTxs,
|
|
670
692
|
returns,
|
|
671
|
-
|
|
693
|
+
debugLogs
|
|
672
694
|
];
|
|
673
695
|
}
|
|
674
696
|
async checkWorldStateUnchanged(startStateReference, txHash, cause) {
|
|
@@ -685,7 +707,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
685
707
|
}
|
|
686
708
|
}
|
|
687
709
|
async processTx(tx, deadline) {
|
|
688
|
-
const [time, [processedTx, returnValues]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
|
|
710
|
+
const [time, [processedTx, returnValues, debugLogs]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
|
|
689
711
|
this.log.verbose(!tx.hasPublicCalls() ? `Processed tx ${processedTx.hash} with no public calls in ${time}ms` : `Processed tx ${processedTx.hash} with ${tx.numberOfPublicCalls()} public calls in ${time}ms`, {
|
|
690
712
|
txHash: processedTx.hash,
|
|
691
713
|
txFee: processedTx.txEffect.transactionFee.toBigInt(),
|
|
@@ -703,7 +725,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
703
725
|
});
|
|
704
726
|
return [
|
|
705
727
|
processedTx,
|
|
706
|
-
returnValues ?? []
|
|
728
|
+
returnValues ?? [],
|
|
729
|
+
debugLogs
|
|
707
730
|
];
|
|
708
731
|
}
|
|
709
732
|
async doTreeInsertionsForPrivateOnlyTx(processedTx) {
|
|
@@ -777,10 +800,11 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
777
800
|
this.metrics.recordClassPublication(...tx.getContractClassLogs().filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log)));
|
|
778
801
|
// Fee payment insertion has already been done. Do the rest.
|
|
779
802
|
await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
|
|
780
|
-
|
|
803
|
+
this.contractsDB.addNewContracts(tx);
|
|
781
804
|
return [
|
|
782
805
|
processedTx,
|
|
783
|
-
undefined
|
|
806
|
+
undefined,
|
|
807
|
+
[]
|
|
784
808
|
];
|
|
785
809
|
}
|
|
786
810
|
async processTxWithPublicCalls(tx) {
|
|
@@ -802,7 +826,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
802
826
|
const processedTx = makeProcessedTxFromTxWithPublicCalls(tx, this.globalVariables, avmProvingRequest, publicTxEffect, gasUsed, revertCode, revertReason);
|
|
803
827
|
return [
|
|
804
828
|
processedTx,
|
|
805
|
-
appLogicReturnValues
|
|
829
|
+
appLogicReturnValues,
|
|
830
|
+
result.logs ?? []
|
|
806
831
|
];
|
|
807
832
|
}
|
|
808
833
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
|
|
2
2
|
import type { Gas } from '@aztec/stdlib/gas';
|
|
3
|
-
import
|
|
3
|
+
import { TxExecutionPhase } from '@aztec/stdlib/tx';
|
|
4
4
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
5
5
|
export declare class PublicProcessorMetrics {
|
|
6
6
|
readonly tracer: Tracer;
|
|
@@ -15,6 +15,8 @@ export declare class PublicProcessorMetrics {
|
|
|
15
15
|
private gasRate;
|
|
16
16
|
private txGas;
|
|
17
17
|
private treeInsertionDuration;
|
|
18
|
+
private silentlySkippedCount;
|
|
19
|
+
private silentlySkippedDuration;
|
|
18
20
|
constructor(client: TelemetryClient, name?: string);
|
|
19
21
|
recordPhaseDuration(phaseName: TxExecutionPhase, durationMs: number): void;
|
|
20
22
|
recordTx(phaseCount: number, durationMs: number, gasUsed: Gas): void;
|
|
@@ -23,5 +25,6 @@ export declare class PublicProcessorMetrics {
|
|
|
23
25
|
recordRevertedPhase(phaseName: TxExecutionPhase): void;
|
|
24
26
|
recordClassPublication(...events: ContractClassPublishedEvent[]): void;
|
|
25
27
|
recordTreeInsertions(durationUs: number): void;
|
|
28
|
+
recordSilentlySkipped(durationMs: number): void;
|
|
26
29
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL3B1YmxpY19wcm9jZXNzb3IvcHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUYsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUtMLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLHFCQUFhLHNCQUFzQjtJQUNqQyxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLE9BQU8sQ0FBQyxVQUFVLENBQVk7SUFDOUIsT0FBTyxDQUFDLE9BQU8sQ0FBZ0I7SUFDL0IsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFFcEMsT0FBTyxDQUFDLGFBQWEsQ0FBWTtJQUNqQyxPQUFPLENBQUMsVUFBVSxDQUFnQjtJQUVsQyxPQUFPLENBQUMsZ0JBQWdCLENBQVk7SUFDcEMsT0FBTyxDQUFDLFFBQVEsQ0FBUTtJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQVk7SUFDckMsT0FBTyxDQUFDLE9BQU8sQ0FBWTtJQUMzQixPQUFPLENBQUMsS0FBSyxDQUFZO0lBRXpCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBWTtJQUV6QyxPQUFPLENBQUMsb0JBQW9CLENBQWdCO0lBQzVDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBWTtJQUUzQyxZQUFZLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxTQUFvQixFQWtDNUQ7SUFFRCxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFHbEU7SUFFRCxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFFBWTVEO0lBRUQsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFnQjFDO0lBRUQsY0FBYyxTQUliO0lBRUQsbUJBQW1CLENBQUMsU0FBUyxFQUFFLGdCQUFnQixRQUU5QztJQUVELHNCQUFzQixDQUFDLEdBQUcsTUFBTSxFQUFFLDJCQUEyQixFQUFFLFFBUzlEO0lBRUQsb0JBQW9CLENBQUMsVUFBVSxFQUFFLE1BQU0sUUFFdEM7SUFFRCxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQUd2QztDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor_metrics.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"public_processor_metrics.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,sBAAsB;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,KAAK,CAAY;IAEzB,OAAO,CAAC,qBAAqB,CAAY;IAEzC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,uBAAuB,CAAY;IAE3C,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB,EAkC5D;IAED,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,QAGlE;IAED,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAY5D;IAED,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,QAgB1C;IAED,cAAc,SAIb;IAED,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,QAE9C;IAED,sBAAsB,CAAC,GAAG,MAAM,EAAE,2BAA2B,EAAE,QAS9D;IAED,oBAAoB,CAAC,UAAU,EAAE,MAAM,QAEtC;IAED,qBAAqB,CAAC,UAAU,EAAE,MAAM,QAGvC;CACF"}
|