@aztec/simulator 0.0.1-commit.001888fc → 0.0.1-commit.017a351
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/private/acvm_wasm.d.ts +1 -1
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm.js +3 -1
- package/dest/public/avm/avm_simulator.js +1 -1
- package/dest/public/avm/calldata.d.ts +1 -1
- package/dest/public/avm/calldata.d.ts.map +1 -1
- package/dest/public/avm/calldata.js +3 -2
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +17 -2
- package/dest/public/avm/fixtures/utils.d.ts +1 -1
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
- package/dest/public/avm/fixtures/utils.js +3 -0
- package/dest/public/avm/opcodes/contract.d.ts +3 -2
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +5 -1
- package/dest/public/avm/opcodes/ec_add.d.ts +2 -4
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +13 -27
- 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/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 +31 -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 +1 -1
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -1
- package/dest/public/fixtures/opcode_spammer.js +2 -10
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +3 -3
- package/dest/public/fixtures/utils.d.ts +1 -1
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +14 -15
- package/dest/public/hinting_db_sources.d.ts +2 -1
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +4 -1
- package/dest/public/public_db_sources.d.ts +6 -3
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +16 -10
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
- package/dest/public/public_processor/public_processor.d.ts +4 -3
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +60 -34
- package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +8 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +1 -1
- 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 +3 -2
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +1 -1
- 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 +3 -8
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +1 -1
- 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 +3 -7
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +7 -3
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +8 -10
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +6 -2
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +12 -7
- package/package.json +16 -15
- package/src/private/acvm_wasm.ts +4 -1
- package/src/public/avm/avm_simulator.ts +1 -1
- package/src/public/avm/calldata.ts +3 -2
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +22 -2
- package/src/public/avm/fixtures/utils.ts +3 -0
- package/src/public/avm/opcodes/contract.ts +5 -1
- package/src/public/avm/opcodes/ec_add.ts +12 -31
- package/src/public/avm/opcodes/external_calls.ts +1 -1
- package/src/public/contracts_db_checkpoint.ts +1 -1
- package/src/public/fixtures/bulk_test.ts +29 -4
- package/src/public/fixtures/custom_bytecode_tests.ts +139 -1
- package/src/public/fixtures/opcode_spammer.ts +4 -8
- package/src/public/fixtures/public_tx_simulation_tester.ts +4 -9
- package/src/public/fixtures/utils.ts +21 -18
- package/src/public/hinting_db_sources.ts +5 -0
- package/src/public/public_db_sources.ts +21 -14
- package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
- package/src/public/public_processor/public_processor.ts +79 -41
- package/src/public/public_processor/public_processor_metrics.ts +12 -0
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +3 -2
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +3 -12
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +3 -10
- package/src/public/public_tx_simulator/public_tx_context.ts +8 -10
- package/src/public/public_tx_simulator/public_tx_simulator.ts +11 -7
|
@@ -21,10 +21,10 @@ export declare class PublicProcessorFactory {
|
|
|
21
21
|
/**
|
|
22
22
|
* Creates a new instance of a PublicProcessor.
|
|
23
23
|
* @param globalVariables - The global variables for the block being processed.
|
|
24
|
-
* @param
|
|
24
|
+
* @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
|
|
25
25
|
* @returns A new instance of a PublicProcessor.
|
|
26
26
|
*/
|
|
27
|
-
create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: PublicSimulatorConfig): PublicProcessor;
|
|
27
|
+
create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: PublicSimulatorConfig, contractsDB?: PublicContractsDB): PublicProcessor;
|
|
28
28
|
protected createPublicTxSimulator(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, config?: Partial<PublicTxSimulatorConfig>): PublicTxSimulatorInterface;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
@@ -55,6 +55,7 @@ export declare class PublicProcessor implements Traceable {
|
|
|
55
55
|
private processTx;
|
|
56
56
|
private doTreeInsertionsForPrivateOnlyTx;
|
|
57
57
|
private processTxWithinDeadline;
|
|
58
|
+
private getProcessingSignal;
|
|
58
59
|
private performFeePaymentPublicDataWrite;
|
|
59
60
|
private processPrivateOnlyTx;
|
|
60
61
|
private processTxWithPublicCalls;
|
|
@@ -63,4 +64,4 @@ export declare class PublicProcessor implements Traceable {
|
|
|
63
64
|
*/
|
|
64
65
|
private static generateProvingRequest;
|
|
65
66
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfcHJvY2Vzc29yL3B1YmxpY19wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxZQUFZLEVBQWtDLE1BQU0seUJBQXlCLENBQUM7QUFJdkYsT0FBTyxFQU1MLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHakUsT0FBTyxLQUFLLEVBQ1YseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsZUFBZSxFQUNoQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLGFBQWEsRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUcxRixPQUFPLEVBQ0wsS0FBSyxRQUFRLEVBQ2IsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixLQUFLLFdBQVcsRUFFaEIsRUFBRSxFQUdILE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUNwQixLQUFLLFNBQVMsRUFDZCxLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBS2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSywwQkFBMEIsRUFFaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RTs7R0FFRztBQUNILHFCQUFhLHNCQUFzQjtJQUcvQixPQUFPLENBQUMsa0JBQWtCO0lBQzFCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZTtJQUo1QyxPQUFPLENBQUMsR0FBRyxDQUFTO0lBQ3BCLFlBQ1Usa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLFlBQVksR0FBRSxZQUFpQyxFQUM3QyxlQUFlLEdBQUUsZUFBc0MsRUFDakUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUcxQjtJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUNYLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxFQUFFLHFCQUFxQixFQUM3QixXQUFXLEdBQUUsaUJBQTBGLEdBQ3RHLGVBQWUsQ0FhakI7SUFFRCxTQUFTLENBQUMsdUJBQXVCLENBQy9CLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsV0FBVyxFQUFFLGlCQUFpQixFQUM5QixlQUFlLEVBQUUsZUFBZSxFQUNoQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUMsR0FDeEMsMEJBQTBCLENBUzVCO0NBQ0Y7QUFvQkQ7OztHQUdHO0FBQ0gscUJBQWEsZUFBZ0IsWUFBVyxTQUFTO0lBRzdDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZTtJQUMxQyxPQUFPLENBQUMsaUJBQWlCO0lBQ3pCLFNBQVMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCO0lBQ3hDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSwwQkFBMEI7SUFDdkQsT0FBTyxDQUFDLFlBQVk7SUFFcEIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsSUFBSTtJQUNaLE9BQU8sQ0FBQyxhQUFhO0lBVnZCLE9BQU8sQ0FBQyxPQUFPLENBQXlCO0lBQ3hDLFlBQ1ksZUFBZSxFQUFFLGVBQWUsRUFDbEMsaUJBQWlCLEVBQUUsMkJBQTJCLEVBQzVDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQy9DLFlBQVksRUFBRSxZQUFZLEVBQ2xDLGVBQWUsNkJBQXdDLEVBQy9DLEdBQUcsRUFBRSxNQUFNLEVBQ1gsSUFBSSxHQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsNEJBQTRCLEdBQUcsaUNBQWlDLENBQU0sRUFDbEcsYUFBYSxHQUFFLGFBQXVDLEVBRy9EO0lBRUQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUVuQjtJQUVEOzs7Ozs7T0FNRztJQUNVLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQ3JDLE1BQU0sR0FBRSxxQkFBMEIsRUFDbEMsU0FBUyxHQUFFLHdCQUE2QixHQUN2QyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FtT3JGO1lBRWEsd0JBQXdCO1lBaUJ4QixTQUFTO1lBaUNULGdDQUFnQztZQTRCaEMsdUJBQXVCO0lBaUNyQyxPQUFPLENBQUMsbUJBQW1CO1lBMEJiLGdDQUFnQztZQTBCaEMsb0JBQW9CO1lBK0JwQix3QkFBd0I7SUF5Q3RDOztPQUVHO0lBQ0gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0I7Q0FTdEMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAIvF,OAAO,EAML,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAG1F,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAEhB,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAEhC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAGvE;;GAEG;AACH,qBAAa,sBAAsB;IAG/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,SAAS,CAAC,eAAe,EAAE,eAAe;IAJ5C,OAAO,CAAC,GAAG,CAAS;IACpB,YACU,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,GAAE,YAAiC,EAC7C,eAAe,GAAE,eAAsC,EACjE,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED;;;;;OAKG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -376,7 +376,7 @@ import { padArrayEnd } from '@aztec/foundation/collection';
|
|
|
376
376
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
377
377
|
import { createLogger } from '@aztec/foundation/log';
|
|
378
378
|
import { sleep } from '@aztec/foundation/sleep';
|
|
379
|
-
import { DateProvider, Timer, elapsed,
|
|
379
|
+
import { DateProvider, Timer, elapsed, execWithSignal } from '@aztec/foundation/timer';
|
|
380
380
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
381
381
|
import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
|
|
382
382
|
import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
|
|
@@ -410,14 +410,12 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
|
410
410
|
/**
|
|
411
411
|
* Creates a new instance of a PublicProcessor.
|
|
412
412
|
* @param globalVariables - The global variables for the block being processed.
|
|
413
|
-
* @param
|
|
413
|
+
* @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
|
|
414
414
|
* @returns A new instance of a PublicProcessor.
|
|
415
|
-
*/ create(merkleTree, globalVariables, config) {
|
|
416
|
-
const bindings = this.log.getBindings();
|
|
417
|
-
const contractsDB = new PublicContractsDB(this.contractDataSource, bindings);
|
|
415
|
+
*/ create(merkleTree, globalVariables, config, contractsDB = new PublicContractsDB(this.contractDataSource, this.log.getBindings())) {
|
|
418
416
|
const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
|
|
419
417
|
const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, config);
|
|
420
|
-
return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor',
|
|
418
|
+
return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor', this.log.getBindings()));
|
|
421
419
|
}
|
|
422
420
|
createPublicTxSimulator(merkleTree, contractsDB, globalVariables, config) {
|
|
423
421
|
return new TelemetryCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, this.telemetryClient, config, this.log.getBindings());
|
|
@@ -429,6 +427,15 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
429
427
|
this.name = 'PublicProcessorTimeoutError';
|
|
430
428
|
}
|
|
431
429
|
}
|
|
430
|
+
class PublicProcessorAbortError extends Error {
|
|
431
|
+
constructor(message = 'Aborted while processing tx'){
|
|
432
|
+
super(message);
|
|
433
|
+
this.name = 'PublicProcessorAbortError';
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
function isPublicProcessorInterruptError(err) {
|
|
437
|
+
return err?.name === 'PublicProcessorTimeoutError' || err?.name === 'PublicProcessorAbortError';
|
|
438
|
+
}
|
|
432
439
|
_dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
433
440
|
[Attributes.TX_HASH]: tx.getTxHash().toString()
|
|
434
441
|
})), _dec1 = trackSpan('PublicProcessor.processPrivateOnlyTx', (tx)=>({
|
|
@@ -490,7 +497,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
490
497
|
* @param validator - Pre-process validator and nullifier cache to use for processing the txs.
|
|
491
498
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
492
499
|
*/ async process(txs, limits = {}, validator = {}) {
|
|
493
|
-
const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal } = limits;
|
|
500
|
+
const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal, signal } = limits;
|
|
494
501
|
const { preprocessValidator, nullifierCache } = validator;
|
|
495
502
|
const result = [];
|
|
496
503
|
const usedTxs = [];
|
|
@@ -502,17 +509,23 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
502
509
|
let totalPublicGas = new Gas(0, 0);
|
|
503
510
|
let totalBlockGas = new Gas(0, 0);
|
|
504
511
|
let totalBlobFields = 0;
|
|
512
|
+
let silentlySkippedCount = 0;
|
|
513
|
+
let totalSilentlySkippedDurationMs = 0;
|
|
505
514
|
for await (const tx of txs){
|
|
506
515
|
// Only process up to the max tx limit
|
|
507
516
|
if (maxTransactions !== undefined && result.length >= maxTransactions) {
|
|
508
517
|
this.log.debug(`Stopping tx processing due to reaching the max tx limit.`);
|
|
509
518
|
break;
|
|
510
519
|
}
|
|
511
|
-
// Bail if we've hit the deadline
|
|
520
|
+
// Bail if we've hit the deadline or have been interrupted.
|
|
512
521
|
if (deadline && this.dateProvider.now() > +deadline) {
|
|
513
522
|
this.log.warn(`Stopping tx processing due to timeout.`);
|
|
514
523
|
break;
|
|
515
524
|
}
|
|
525
|
+
if (signal?.aborted) {
|
|
526
|
+
this.log.warn(`Stopping tx processing due to abort signal.`);
|
|
527
|
+
break;
|
|
528
|
+
}
|
|
516
529
|
const txHash = tx.getTxHash().toString();
|
|
517
530
|
// Skip this tx if its estimated blob fields would exceed the limit.
|
|
518
531
|
// Only done during proposal building: during re-execution we must process the exact txs from the proposal.
|
|
@@ -551,11 +564,6 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
551
564
|
});
|
|
552
565
|
returns.push(new NestedProcessReturnValues([]));
|
|
553
566
|
continue;
|
|
554
|
-
} else if (result.result === 'skipped') {
|
|
555
|
-
const reason = result.reason.join(', ');
|
|
556
|
-
this.log.debug(`Skipping tx ${txHash.toString()} due to pre-process validation: ${reason}`);
|
|
557
|
-
returns.push(new NestedProcessReturnValues([]));
|
|
558
|
-
continue;
|
|
559
567
|
} else {
|
|
560
568
|
this.log.trace(`Tx ${txHash.toString()} is valid before processing.`);
|
|
561
569
|
}
|
|
@@ -569,7 +577,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
569
577
|
const startStateReference = await this.guardedMerkleTree.getUnderlyingFork().getStateReference();
|
|
570
578
|
this.contractsDB.createCheckpoint();
|
|
571
579
|
try {
|
|
572
|
-
const [processedTx, returnValues, txDebugLogs] = await this.processTx(tx, deadline);
|
|
580
|
+
const [txProcessingTimeMs, [processedTx, returnValues, txDebugLogs]] = await elapsed(()=>this.processTx(tx, deadline, signal));
|
|
573
581
|
// Inject a fake processing failure after N txs if requested
|
|
574
582
|
const fakeThrowAfter = this.opts.fakeThrowAfterProcessingTxCount;
|
|
575
583
|
if (fakeThrowAfter !== undefined && result.length + failed.length + 1 >= fakeThrowAfter) {
|
|
@@ -584,8 +592,12 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
584
592
|
txHash,
|
|
585
593
|
txBlobFields,
|
|
586
594
|
totalBlobFields,
|
|
587
|
-
maxBlobFields
|
|
595
|
+
maxBlobFields,
|
|
596
|
+
txProcessingTimeMs
|
|
588
597
|
});
|
|
598
|
+
silentlySkippedCount += 1;
|
|
599
|
+
totalSilentlySkippedDurationMs += txProcessingTimeMs;
|
|
600
|
+
this.metrics.recordSilentlySkipped(txProcessingTimeMs);
|
|
589
601
|
// Need to revert the checkpoint here and don't go any further
|
|
590
602
|
await checkpoint.revert();
|
|
591
603
|
this.contractsDB.revertCheckpoint();
|
|
@@ -617,16 +629,14 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
617
629
|
totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
|
|
618
630
|
totalSizeInBytes += txSize;
|
|
619
631
|
totalBlobFields += txBlobFields;
|
|
632
|
+
// Commit the tx-level contracts checkpoint on success
|
|
633
|
+
this.contractsDB.commitCheckpoint();
|
|
620
634
|
} catch (err) {
|
|
621
|
-
if (err
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
//
|
|
625
|
-
// Signal cancellation AND WAIT for the simulation to actually stop.
|
|
626
|
-
// This is critical because C++ might be in the middle of a slow operation (e.g., pad_trees)
|
|
627
|
-
// and won't check the cancellation flag until that operation completes.
|
|
628
|
-
// Without waiting, we'd proceed to revert checkpoints while C++ is still writing to state.
|
|
629
|
-
// Wait for C++ to stop gracefully.
|
|
635
|
+
if (isPublicProcessorInterruptError(err)) {
|
|
636
|
+
const interruptReason = err.name === 'PublicProcessorTimeoutError' ? 'timeout' : 'abort signal';
|
|
637
|
+
this.log.warn(`Stopping tx processing due to ${interruptReason}.`);
|
|
638
|
+
// The tx may still be executing on a worker thread (C++ via NAPI).
|
|
639
|
+
// Signal cancellation AND WAIT for the simulation to actually stop before touching fork checkpoints.
|
|
630
640
|
await this.publicTxSimulator.cancel?.();
|
|
631
641
|
// Now stop the guarded fork to prevent any further TS-side access to the world state.
|
|
632
642
|
await this.guardedMerkleTree.stop();
|
|
@@ -659,18 +669,23 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
659
669
|
} finally{
|
|
660
670
|
// Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was previously reverted
|
|
661
671
|
await checkpoint.commit();
|
|
662
|
-
this.contractsDB.commitCheckpointOkIfNone();
|
|
663
672
|
}
|
|
664
673
|
}
|
|
665
674
|
const duration = timer.s();
|
|
666
675
|
const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
|
|
667
676
|
this.metrics.recordAllTxs(totalPublicGas, rate);
|
|
668
|
-
|
|
677
|
+
const silentlySkippedDurationMs = Math.round(totalSilentlySkippedDurationMs);
|
|
678
|
+
this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs ` + `(${silentlySkippedCount} silently skipped, ${silentlySkippedDurationMs}ms wasted) ` + `in ${duration}s`, {
|
|
679
|
+
blockNumber: this.globalVariables.blockNumber,
|
|
680
|
+
successfulCount: result.length,
|
|
681
|
+
failedCount: failed.length,
|
|
669
682
|
duration,
|
|
670
683
|
rate,
|
|
671
684
|
totalPublicGas,
|
|
672
685
|
totalBlockGas,
|
|
673
|
-
totalSizeInBytes
|
|
686
|
+
totalSizeInBytes,
|
|
687
|
+
silentlySkippedCount,
|
|
688
|
+
silentlySkippedDurationMs
|
|
674
689
|
});
|
|
675
690
|
return [
|
|
676
691
|
result,
|
|
@@ -693,8 +708,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
693
708
|
});
|
|
694
709
|
}
|
|
695
710
|
}
|
|
696
|
-
async processTx(tx, deadline) {
|
|
697
|
-
const [time, [processedTx, returnValues, debugLogs]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
|
|
711
|
+
async processTx(tx, deadline, signal) {
|
|
712
|
+
const [time, [processedTx, returnValues, debugLogs]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline, signal));
|
|
698
713
|
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`, {
|
|
699
714
|
txHash: processedTx.hash,
|
|
700
715
|
txFee: processedTx.txEffect.transactionFee.toBigInt(),
|
|
@@ -735,7 +750,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
735
750
|
const treeInsertionEnd = process.hrtime.bigint();
|
|
736
751
|
this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
|
|
737
752
|
}
|
|
738
|
-
/** Processes the given tx within deadline
|
|
753
|
+
/** Processes the given tx within deadline or until the signal is aborted. */ async processTxWithinDeadline(tx, deadline, signal) {
|
|
739
754
|
const innerProcessFn = tx.hasPublicCalls() ? ()=>this.processTxWithPublicCalls(tx) : ()=>this.processPrivateOnlyTx(tx);
|
|
740
755
|
// Fake a delay per tx if instructed (used for tests)
|
|
741
756
|
const fakeDelayPerTxMs = this.opts.fakeProcessingDelayPerTxMs;
|
|
@@ -745,20 +760,31 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
745
760
|
await sleep(fakeDelayPerTxMs);
|
|
746
761
|
return result;
|
|
747
762
|
} : innerProcessFn;
|
|
748
|
-
|
|
763
|
+
const processingSignal = this.getProcessingSignal(tx, deadline, signal);
|
|
764
|
+
if (!processingSignal) {
|
|
749
765
|
return await processFn();
|
|
750
766
|
}
|
|
751
|
-
|
|
767
|
+
return await execWithSignal(()=>processFn(), processingSignal, (signal)=>signal.reason?.name === 'TimeoutError' ? new PublicProcessorTimeoutError() : new PublicProcessorAbortError());
|
|
768
|
+
}
|
|
769
|
+
getProcessingSignal(tx, deadline, signal) {
|
|
770
|
+
if (!deadline) {
|
|
771
|
+
return signal;
|
|
772
|
+
}
|
|
752
773
|
const timeout = +deadline - this.dateProvider.now();
|
|
753
774
|
if (timeout <= 0) {
|
|
754
775
|
throw new PublicProcessorTimeoutError();
|
|
755
776
|
}
|
|
777
|
+
const txHash = tx.getTxHash();
|
|
756
778
|
this.log.debug(`Processing tx ${txHash.toString()} within ${timeout}ms`, {
|
|
757
779
|
deadline: deadline.toISOString(),
|
|
758
780
|
now: new Date(this.dateProvider.now()).toISOString(),
|
|
759
781
|
txHash
|
|
760
782
|
});
|
|
761
|
-
|
|
783
|
+
const timeoutSignal = AbortSignal.timeout(timeout);
|
|
784
|
+
return signal ? AbortSignal.any([
|
|
785
|
+
signal,
|
|
786
|
+
timeoutSignal
|
|
787
|
+
]) : timeoutSignal;
|
|
762
788
|
}
|
|
763
789
|
/**
|
|
764
790
|
* Creates the public data write for paying the tx fee.
|
|
@@ -787,7 +813,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
787
813
|
this.metrics.recordClassPublication(...tx.getContractClassLogs().filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log)));
|
|
788
814
|
// Fee payment insertion has already been done. Do the rest.
|
|
789
815
|
await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
|
|
790
|
-
|
|
816
|
+
this.contractsDB.addNewContracts(tx);
|
|
791
817
|
return [
|
|
792
818
|
processedTx,
|
|
793
819
|
undefined,
|
|
@@ -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,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,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB,
|
|
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"}
|
|
@@ -13,6 +13,8 @@ export class PublicProcessorMetrics {
|
|
|
13
13
|
gasRate;
|
|
14
14
|
txGas;
|
|
15
15
|
treeInsertionDuration;
|
|
16
|
+
silentlySkippedCount;
|
|
17
|
+
silentlySkippedDuration;
|
|
16
18
|
constructor(client, name = 'PublicProcessor'){
|
|
17
19
|
this.tracer = client.getTracer(name);
|
|
18
20
|
const meter = client.getMeter(name);
|
|
@@ -42,6 +44,8 @@ export class PublicProcessorMetrics {
|
|
|
42
44
|
this.txGas = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_GAS);
|
|
43
45
|
this.gasRate = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_GAS_RATE);
|
|
44
46
|
this.treeInsertionDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TREE_INSERTION);
|
|
47
|
+
this.silentlySkippedCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_COUNT);
|
|
48
|
+
this.silentlySkippedDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_DURATION);
|
|
45
49
|
}
|
|
46
50
|
recordPhaseDuration(phaseName, durationMs) {
|
|
47
51
|
this.phaseCount.add(1, {
|
|
@@ -105,4 +109,8 @@ export class PublicProcessorMetrics {
|
|
|
105
109
|
recordTreeInsertions(durationUs) {
|
|
106
110
|
this.treeInsertionDuration.record(Math.ceil(durationUs));
|
|
107
111
|
}
|
|
112
|
+
recordSilentlySkipped(durationMs) {
|
|
113
|
+
this.silentlySkippedCount.add(1);
|
|
114
|
+
this.silentlySkippedDuration.record(Math.ceil(durationMs));
|
|
115
|
+
}
|
|
108
116
|
}
|
|
@@ -16,4 +16,4 @@ export declare class ContractProviderForCpp implements ContractProvider {
|
|
|
16
16
|
commitCheckpoint: () => Promise<void>;
|
|
17
17
|
revertCheckpoint: () => Promise<void>;
|
|
18
18
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfcHJvdmlkZXJfZm9yX2NwcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfdHhfc2ltdWxhdG9yL2NvbnRyYWN0X3Byb3ZpZGVyX2Zvcl9jcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3RELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUscUJBQWEsc0JBQXVCLFlBQVcsZ0JBQWdCO0lBSTNELE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxlQUFlO0lBSnpCLE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFFcEIsWUFDVSxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQ3hDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFTSxtQkFBbUIsb0VBYXhCO0lBRUssZ0JBQWdCLG9FQWVyQjtJQUdLLFlBQVksMkVBV2pCO0lBRUsscUJBQXFCLG9FQWdCMUI7SUFFSyxvQkFBb0IscUVBc0J6QjtJQUVLLGdCQUFnQixzQkFHckI7SUFFSyxnQkFBZ0Isc0JBR3JCO0lBRUssZ0JBQWdCLHNCQUdyQjtDQUNIIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_provider_for_cpp.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/contract_provider_for_cpp.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,qBAAa,sBAAuB,YAAW,gBAAgB;IAI3D,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,eAAe;IAJzB,OAAO,CAAC,GAAG,CAAS;IAEpB,YACU,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACxC,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEM,mBAAmB,oEAaxB;IAEK,gBAAgB,oEAerB;
|
|
1
|
+
{"version":3,"file":"contract_provider_for_cpp.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/contract_provider_for_cpp.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,qBAAa,sBAAuB,YAAW,gBAAgB;IAI3D,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,eAAe;IAJzB,OAAO,CAAC,GAAG,CAAS;IAEpB,YACU,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACxC,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEM,mBAAmB,oEAaxB;IAEK,gBAAgB,oEAerB;IAGK,YAAY,2EAWjB;IAEK,qBAAqB,oEAgB1B;IAEK,oBAAoB,qEAsBzB;IAEK,gBAAgB,sBAGrB;IAEK,gBAAgB,sBAGrB;IAEK,gBAAgB,sBAGrB;CACH"}
|
|
@@ -39,8 +39,8 @@ export class ContractProviderForCpp {
|
|
|
39
39
|
// Construct ContractDeploymentData from plain object.
|
|
40
40
|
const contractDeploymentData = ContractDeploymentData.fromPlainObject(rawData);
|
|
41
41
|
// Add contracts to the contracts DB
|
|
42
|
-
this.log.trace(`Calling contractsDB.
|
|
43
|
-
|
|
42
|
+
this.log.trace(`Calling contractsDB.addContractsFromLogs`);
|
|
43
|
+
this.contractsDB.addContractsFromLogs(contractDeploymentData);
|
|
44
44
|
};
|
|
45
45
|
this.getBytecodeCommitment = async (classId)=>{
|
|
46
46
|
this.log.trace(`Contract provider callback: getBytecodeCommitment(${classId})`);
|
|
@@ -89,6 +89,7 @@ export class ContractProviderForCpp {
|
|
|
89
89
|
}
|
|
90
90
|
getContractInstance;
|
|
91
91
|
getContractClass;
|
|
92
|
+
// eslint-disable-next-line require-await
|
|
92
93
|
addContracts;
|
|
93
94
|
getBytecodeCommitment;
|
|
94
95
|
getDebugFunctionName;
|
|
@@ -50,4 +50,4 @@ export declare class TelemetryCppPublicTxSimulator extends MeasuredCppPublicTxSi
|
|
|
50
50
|
readonly tracer: Tracer;
|
|
51
51
|
constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, telemetryClient?: TelemetryClient, config?: Partial<PublicSimulatorConfig>, bindings?: LoggerBindings);
|
|
52
52
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwX3B1YmxpY190eF9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci9jcHBfcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFJdkYsT0FBTyxFQUdMLEtBQUsscUJBQXFCLEVBQzFCLGNBQWMsRUFFZixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQ1Ysa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMzQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxxQkFBYSxvQkFBcUIsU0FBUSxpQkFBa0IsWUFBVywwQkFBMEI7SUFDL0YsVUFBbUIsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUMvQiwyREFBMkQ7SUFDM0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQW9CO0lBQzlDLGtGQUFrRjtJQUNsRixPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBa0I7SUFFNUMsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFJMUI7SUFFRDs7Ozs7T0FLRztJQUNtQixRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBd0U5RDtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNVLE1BQU0sQ0FBQyxhQUFhLEdBQUUsTUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FlOUQ7Q0FDRjtBQUVELHFCQUFhLDRCQUE2QixTQUFRLG9CQUFxQixZQUFXLGtDQUFrQztJQUtoSCxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSx3QkFBd0I7SUFKdEQsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDYixPQUFPLEVBQUUsd0JBQXdCLEVBQ3BELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRXFCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sR0FBRSxNQUFzQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FTL0Y7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsNkJBQThCLFNBQVEsNEJBQTRCO0lBRTdFLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsZUFBZSxHQUFFLGVBQXNDLEVBQ3ZELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBSzFCO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpp_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAIvF,OAAO,EAGL,KAAK,qBAAqB,EAC1B,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cpp_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAIvF,OAAO,EAGL,KAAK,qBAAqB,EAC1B,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAsB,MAAM,yBAAyB,CAAC;AAGhG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,iBAAkB,YAAW,0BAA0B;IAC/F,UAAmB,GAAG,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAE5C,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,cAAc,EAI1B;IAED;;;;;OAKG;IACmB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAwE9D;IAED;;;;;;;;;OASG;IACU,MAAM,CAAC,aAAa,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAe9D;CACF;AAED,qBAAa,4BAA6B,SAAQ,oBAAqB,YAAW,kCAAkC;IAKhH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;IAJtD,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACb,OAAO,EAAE,wBAAwB,EACpD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEqB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CAS/F;CACF;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,4BAA4B;IAE7E,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,eAAe,GAAE,eAAsC,EACvD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,cAAc,EAK1B;CACF"}
|
|
@@ -4,9 +4,7 @@ import { avmSimulate, cancelSimulation, createCancellationToken } from '@aztec/n
|
|
|
4
4
|
import { ProtocolContractsList } from '@aztec/protocol-contracts';
|
|
5
5
|
import { AvmFastSimulationInputs, AvmTxHint, PublicTxResult, deserializeFromMessagePack } from '@aztec/stdlib/avm';
|
|
6
6
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
7
|
-
import { WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
|
|
8
7
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
9
|
-
import { strict as assert } from 'assert';
|
|
10
8
|
import { ExecutorMetrics } from '../executor_metrics.js';
|
|
11
9
|
import { ContractProviderForCpp } from './contract_provider_for_cpp.js';
|
|
12
10
|
import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
@@ -32,11 +30,8 @@ import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
|
32
30
|
this.log.debug(`C++ simulation of ${tx.publicFunctionCalldata.length} public calls for tx ${txHash}`, {
|
|
33
31
|
txHash
|
|
34
32
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
assert(wsRevision instanceof WorldStateRevisionWithHandle, 'CppPublicTxSimulator a real NativeWorldStateInstance with a handle to the C++ WorldState object');
|
|
38
|
-
const wsCppHandle = wsRevision.handle;
|
|
39
|
-
wsRevision = wsRevision.toWorldStateRevision(); // for msgpack serialization, we don't include the handle in the type
|
|
33
|
+
const wsRevision = this.merkleTree.getRevision();
|
|
34
|
+
const wsdbSocketPath = this.merkleTree.getSocketPath();
|
|
40
35
|
this.log.trace(`Running C++ simulation with world state revision ${JSON.stringify(wsRevision)}`);
|
|
41
36
|
// Create the fast simulation inputs
|
|
42
37
|
const txHint = AvmTxHint.fromTx(tx, this.globalVariables.gasFees);
|
|
@@ -51,7 +46,7 @@ import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
|
51
46
|
this.cancellationToken = createCancellationToken();
|
|
52
47
|
// Store the promise so cancel() can wait for it
|
|
53
48
|
this.log.debug(`Calling C++ simulator for tx ${txHash}`);
|
|
54
|
-
this.simulationPromise = avmSimulate(inputBuffer, contractProvider,
|
|
49
|
+
this.simulationPromise = avmSimulate(inputBuffer, contractProvider, wsdbSocketPath, this.log.level, undefined, this.cancellationToken);
|
|
55
50
|
let resultBuffer;
|
|
56
51
|
try {
|
|
57
52
|
resultBuffer = await this.simulationPromise;
|
|
@@ -27,4 +27,4 @@ export declare class MeasuredCppVsTsPublicTxSimulator extends CppVsTsPublicTxSim
|
|
|
27
27
|
constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, metrics: ExecutorMetricsInterface, config?: Partial<PublicSimulatorConfig>, bindings?: LoggerBindings);
|
|
28
28
|
simulate(tx: Tx, txLabel?: string): Promise<PublicTxResult>;
|
|
29
29
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwX3ZzX3RzX3B1YmxpY190eF9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci9jcHBfdnNfdHNfcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQTBCLE1BQU0sdUJBQXVCLENBQUM7QUFHakcsT0FBTyxFQUdMLEtBQUsscUJBQXFCLEVBQzFCLGNBQWMsRUFFZixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFrQixFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk1RSxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQ1Ysa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMzQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxxQkFBYSx3QkFBeUIsU0FBUSxpQkFBa0IsWUFBVywwQkFBMEI7SUFDbkcsVUFBbUIsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUUvQixZQUNFLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsV0FBVyxFQUFFLGlCQUFpQixFQUM5QixlQUFlLEVBQUUsZUFBZSxFQUNoQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFDdkMsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUkxQjtJQUVEOzs7OztPQUtHO0lBQ21CLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0F5SjlEO0NBQ0Y7QUFFRCxxQkFBYSxnQ0FDWCxTQUFRLHdCQUNSLFlBQVcsa0NBQWtDO0lBTTNDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLHdCQUF3QjtJQUp0RCxZQUNFLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsV0FBVyxFQUFFLGlCQUFpQixFQUM5QixlQUFlLEVBQUUsZUFBZSxFQUNiLE9BQU8sRUFBRSx3QkFBd0IsRUFDcEQsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFcUIsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxHQUFFLE1BQXNCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQVMvRjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpp_vs_ts_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAA0B,MAAM,uBAAuB,CAAC;AAGjG,OAAO,EAGL,KAAK,qBAAqB,EAC1B,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAkB,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cpp_vs_ts_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAA0B,MAAM,uBAAuB,CAAC;AAGjG,OAAO,EAGL,KAAK,qBAAqB,EAC1B,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAkB,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAI5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,iBAAkB,YAAW,0BAA0B;IACnG,UAAmB,GAAG,EAAE,MAAM,CAAC;IAE/B,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,cAAc,EAI1B;IAED;;;;;OAKG;IACmB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAyJ9D;CACF;AAED,qBAAa,gCACX,SAAQ,wBACR,YAAW,kCAAkC;IAM3C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;IAJtD,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACb,OAAO,EAAE,wBAAwB,EACpD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEqB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CAS/F;CACF"}
|
|
@@ -3,7 +3,6 @@ import { avmSimulate } from '@aztec/native';
|
|
|
3
3
|
import { ProtocolContractsList } from '@aztec/protocol-contracts';
|
|
4
4
|
import { AvmFastSimulationInputs, AvmTxHint, PublicTxResult, deserializeFromMessagePack } from '@aztec/stdlib/avm';
|
|
5
5
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
6
|
-
import { WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
|
|
7
6
|
import { strict as assert } from 'assert';
|
|
8
7
|
import { ContractProviderForCpp } from './contract_provider_for_cpp.js';
|
|
9
8
|
import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
@@ -49,11 +48,8 @@ import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
|
49
48
|
this.contractsDB.revertCheckpoint();
|
|
50
49
|
}
|
|
51
50
|
this.log.debug(`Running C++ simulation for tx ${txHash}`);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
assert(wsRevision instanceof WorldStateRevisionWithHandle, 'CppPublicTxSimulator a real NativeWorldStateInstance with a handle to the C++ WorldState object');
|
|
55
|
-
const wsCppHandle = wsRevision.handle;
|
|
56
|
-
wsRevision = wsRevision.toWorldStateRevision(); // for msgpack serialization, we don't include the handle in the type
|
|
51
|
+
const wsRevision = this.merkleTree.getRevision();
|
|
52
|
+
const wsdbSocketPath = this.merkleTree.getSocketPath();
|
|
57
53
|
this.log.debug(`Running C++ simulation with world state revision ${JSON.stringify(wsRevision)}`);
|
|
58
54
|
// Create the fast simulation inputs
|
|
59
55
|
const txHint = AvmTxHint.fromTx(tx, this.globalVariables.gasFees);
|
|
@@ -67,7 +63,7 @@ import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
|
67
63
|
let resultBuffer;
|
|
68
64
|
try {
|
|
69
65
|
this.log.debug(`Calling C++ simulator for tx ${txHash}`);
|
|
70
|
-
resultBuffer = await avmSimulate(inputBuffer, contractProvider,
|
|
66
|
+
resultBuffer = await avmSimulate(inputBuffer, contractProvider, wsdbSocketPath, logLevel);
|
|
71
67
|
} catch (error) {
|
|
72
68
|
throw new SimulationError(`C++ simulation failed: ${error.message}`, []);
|
|
73
69
|
}
|
|
@@ -75,8 +75,12 @@ export declare class PublicTxContext {
|
|
|
75
75
|
*/
|
|
76
76
|
consumeGas(phase: TxExecutionPhase, gas: Gas): void;
|
|
77
77
|
/**
|
|
78
|
-
* The gasUsed by public and private,
|
|
79
|
-
*
|
|
78
|
+
* The gasUsed by public and private, as if the entire teardown gas limit was consumed.
|
|
79
|
+
*
|
|
80
|
+
* This is intentional: teardown is used for gas accounting and refunds, so the transaction
|
|
81
|
+
* fee must be deterministic _before_ teardown executes. If fees depended on teardown's actual
|
|
82
|
+
* consumption there would be a circular dependency. Billing the full teardown gas limit
|
|
83
|
+
* (set by the user) makes the fee known in advance and available to the teardown function.
|
|
80
84
|
*/
|
|
81
85
|
getTotalGasUsed(): Gas;
|
|
82
86
|
/**
|
|
@@ -128,4 +132,4 @@ declare class PhaseStateManager {
|
|
|
128
132
|
discardForkedState(): Promise<void>;
|
|
129
133
|
}
|
|
130
134
|
export {};
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X2NvbnRleHQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci9wdWJsaWNfdHhfY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ3ZGLE9BQU8sRUFHTCxzQkFBc0IsRUFFdEIsVUFBVSxFQUNYLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUE2QixLQUFLLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEcsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFNUQsT0FBTyxFQUFFLEdBQUcsRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFHTCw4QkFBOEIsRUFJL0IsTUFBTSxzQkFBc0IsQ0FBQztBQUk5QixPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBQ3BCLGlCQUFpQixFQUNqQiw2QkFBNkIsRUFFN0IsS0FBSyxFQUFFLEVBQ1AsZ0JBQWdCLEVBQ2hCLEtBQUssTUFBTSxFQUNaLE1BQU0sa0JBQWtCLENBQUM7QUFLMUIsT0FBTyxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdsRjs7R0FFRztBQUNILHFCQUFhLGVBQWU7YUFlUixNQUFNLEVBQUUsTUFBTTthQUNkLEtBQUssRUFBRSxpQkFBaUI7SUFDeEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0I7SUFDbkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlO0lBQ2hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUTtJQUN6QixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7SUFDNUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7SUFDakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7SUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBQyw0QkFBNEI7SUFDN0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7SUFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7SUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7YUFDckIsbUNBQW1DLEVBQUUsc0JBQXNCO2FBQzNELGdDQUFnQyxFQUFFLHNCQUFzQjthQUN4RCx1Q0FBdUMsRUFBRSw4QkFBOEI7YUFDdkUsb0NBQW9DLEVBQUUsOEJBQThCO2FBQ3BFLFFBQVEsRUFBRSxZQUFZO0lBQ3RDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQWhDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUdwQixPQUFPLENBQUMsZUFBZSxDQUFvQjtJQUVwQyxlQUFlLEVBQUUsR0FBRyxDQUFlO0lBRzFDLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFFdkIsT0FBTyxDQUFDLFVBQVUsQ0FBNkI7SUFFeEMsWUFBWSxFQUFFLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDakQsT0FBTyxlQXVCTjtJQUVELE9BQW9CLE1BQU0sQ0FDeEIsT0FBTyxFQUFFLGFBQWEsRUFDdEIsV0FBVyxFQUFFLDBCQUEwQixFQUN2QyxFQUFFLEVBQUUsRUFBRSxFQUNOLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLGlCQUFpQixFQUFFLGlCQUFpQixFQUNwQyxRQUFRLEVBQUUsRUFBRSxFQUNaLFFBQVEsQ0FBQyxFQUFFLGNBQWMsNEJBZ0QxQjtJQUVEOzs7O09BSUc7SUFDSCxJQUFJLFNBR0g7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEdBQUUsZUFBZSxHQUFHLFNBQXFCLEVBQUUsT0FBTyxTQUFLLFFBYWxHO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLElBQUksVUFBVSxDQUcvQjtJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBU3pDO0lBRUQ7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEdBQUcsNkJBQTZCLEVBQUUsQ0FTaEY7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxHQUFHLENBUTlDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxHQUFHLFFBTTNDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGVBQWUsSUFBSSxHQUFHLENBRXJCO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsSUFBSSxHQUFHLENBS3RCO0lBRUQ7OztPQUdHO0lBQ0gsc0JBQXNCLElBQUksR0FBRyxDQUc1QjtJQUVEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxFQUFFLENBTTdDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLHVCQUF1QjtJQWEvQjs7T0FFRztJQUNVLDhCQUE4QixJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQXVIN0U7Q0FDRjtBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILGNBQU0saUJBQWlCO0lBTW5CLE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYztJQUxqQyxPQUFPLENBQUMsR0FBRyxDQUFTO0lBRXBCLE9BQU8sQ0FBQywyQkFBMkIsQ0FBNEM7SUFFL0UsWUFDbUIsY0FBYyxFQUFFLDZCQUE2QixFQUM5RCxRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRUssSUFBSSxrQkFJVDtJQUVELHFCQUFxQixrQ0FFcEI7SUFFRCxRQUFRLFlBRVA7SUFFSyxnQkFBZ0Isa0JBTXJCO0lBRUssa0JBQWtCLGtCQU12QjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_context.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAGL,sBAAsB,EAEtB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAA6B,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,GAAG,EAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAGL,8BAA8B,EAI/B,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,KAAK,eAAe,EACpB,iBAAiB,EACjB,6BAA6B,EAE7B,KAAK,EAAE,EACP,gBAAgB,EAChB,KAAK,MAAM,EACZ,MAAM,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAGlF;;GAEG;AACH,qBAAa,eAAe;aAeR,MAAM,EAAE,MAAM;aACd,KAAK,EAAE,iBAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;aACrB,mCAAmC,EAAE,sBAAsB;aAC3D,gCAAgC,EAAE,sBAAsB;aACxD,uCAAuC,EAAE,8BAA8B;aACvE,oCAAoC,EAAE,8BAA8B;aACpE,QAAQ,EAAE,YAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAhCxB,OAAO,CAAC,GAAG,CAAS;IAGpB,OAAO,CAAC,eAAe,CAAoB;IAEpC,eAAe,EAAE,GAAG,CAAe;IAG1C,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,UAAU,CAA6B;IAExC,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,OAAO,eAuBN;IAED,OAAoB,MAAM,CACxB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,0BAA0B,EACvC,EAAE,EAAE,EAAE,EACN,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,EAAE,EACZ,QAAQ,CAAC,EAAE,cAAc,4BAgD1B;IAED;;;;OAIG;IACH,IAAI,SAGH;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,YAAY,GAAE,eAAe,GAAG,SAAqB,EAAE,OAAO,SAAK,
|
|
1
|
+
{"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_context.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,14 +106,8 @@ import { getCallRequestsWithCalldataByPhase } from '../utils.js';
|
|
|
106
106
|
}
|
|
107
107
|
if (phase === TxExecutionPhase.SETUP) {
|
|
108
108
|
this.log.warn(`Setup phase reverted! The transaction will be thrown out.`);
|
|
109
|
-
} else if (phase === TxExecutionPhase.APP_LOGIC) {
|
|
110
|
-
this.revertCode = RevertCode.
|
|
111
|
-
} else if (phase === TxExecutionPhase.TEARDOWN) {
|
|
112
|
-
if (this.revertCode.equals(RevertCode.APP_LOGIC_REVERTED)) {
|
|
113
|
-
this.revertCode = RevertCode.BOTH_REVERTED;
|
|
114
|
-
} else {
|
|
115
|
-
this.revertCode = RevertCode.TEARDOWN_REVERTED;
|
|
116
|
-
}
|
|
109
|
+
} else if (phase === TxExecutionPhase.APP_LOGIC || phase === TxExecutionPhase.TEARDOWN) {
|
|
110
|
+
this.revertCode = RevertCode.REVERTED;
|
|
117
111
|
}
|
|
118
112
|
}
|
|
119
113
|
/**
|
|
@@ -168,8 +162,12 @@ import { getCallRequestsWithCalldataByPhase } from '../utils.js';
|
|
|
168
162
|
}
|
|
169
163
|
}
|
|
170
164
|
/**
|
|
171
|
-
* The gasUsed by public and private,
|
|
172
|
-
*
|
|
165
|
+
* The gasUsed by public and private, as if the entire teardown gas limit was consumed.
|
|
166
|
+
*
|
|
167
|
+
* This is intentional: teardown is used for gas accounting and refunds, so the transaction
|
|
168
|
+
* fee must be deterministic _before_ teardown executes. If fees depended on teardown's actual
|
|
169
|
+
* consumption there would be a circular dependency. Billing the full teardown gas limit
|
|
170
|
+
* (set by the user) makes the fee known in advance and available to the teardown function.
|
|
173
171
|
*/ getTotalGasUsed() {
|
|
174
172
|
return this.gasUsedByPrivate.add(this.gasUsedByPublic);
|
|
175
173
|
}
|
|
@@ -71,12 +71,16 @@ export declare class PublicTxSimulator implements PublicTxSimulatorInterface {
|
|
|
71
71
|
* Throws TxSimRevertibleInsertionsRevert if there is some checked error during revertible insertions.
|
|
72
72
|
* This function checks for the following errors:
|
|
73
73
|
* - NullifierLimitReachedError
|
|
74
|
-
* - NullifierCollisionError
|
|
75
74
|
* - NoteHashLimitReachedError
|
|
76
75
|
* - L2ToL1MessageLimitReachedError
|
|
76
|
+
*
|
|
77
|
+
* Note: NullifierCollisionError is intentionally NOT caught here. A nullifier collision
|
|
78
|
+
* during revertible insertions is unprovable (the nullifier originated from private, so
|
|
79
|
+
* a collision indicates the tx should never have been proposed). It propagates as-is to
|
|
80
|
+
* make the transaction unrecoverable, matching the AVM circuit behavior.
|
|
77
81
|
*/
|
|
78
82
|
protected insertRevertiblesFromPrivate(context: PublicTxContext): Promise<void>;
|
|
79
83
|
private payFee;
|
|
80
84
|
}
|
|
81
85
|
export {};
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfdHhfc2ltdWxhdG9yL3B1YmxpY190eF9zaW11bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUd2RixPQUFPLEVBQWdDLHFCQUFxQixFQUFrQixjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQix5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2pCLDZCQUE2QixFQUM3QixFQUFFLEVBQ0YsZ0JBQWdCLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUtqRixPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBaUIsTUFBTSx5QkFBeUIsQ0FBQztBQU1oRixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBcUNyRiw0QkFBNEI7QUFDNUIsS0FBSyxjQUFjLEdBQUc7SUFDcEIsS0FBSyxFQUFFLGdCQUFnQixDQUFDO0lBQ3hCLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNwQixZQUFZLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztJQUMxQyxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQ2xCLFlBQVksQ0FBQyxFQUFFLGVBQWUsQ0FBQztDQUNoQyxDQUFDO0FBRUYscUJBQWEsaUJBQWtCLFlBQVcsMEJBQTBCO0lBTWhFLFNBQVMsQ0FBQyxVQUFVLEVBQUUseUJBQXlCO0lBQy9DLFNBQVMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCO0lBQ3hDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZTtJQUUxQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCO0lBVGhELFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDO0lBQ2pELFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsY0FBYyxDQUFDO0lBRTdDLFlBQ1ksVUFBVSxFQUFFLHlCQUF5QixFQUNyQyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQzFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUM3QixpQkFBaUIsR0FBRSxpQkFBeUMsRUFDdEUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUsxQjtJQUVEOzs7O09BSUc7SUFDVSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBNElyRDtJQUVELFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUscUNBRTdCO0lBRUQ7Ozs7T0FJRztJQUNILFVBQWdCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBbUN4RztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQWdCLG9CQUFvQixDQUNsQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLFdBQVcsRUFBRSw2QkFBNkIsR0FDekMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBK0JqQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILFVBQWdCLDRCQUE0QixDQUMxQyxZQUFZLEVBQUUsNkJBQTZCLEVBQzNDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLDZCQUE2QixFQUNwRCxZQUFZLEVBQUUsR0FBRyxFQUNqQixjQUFjLEVBQUUsRUFBRSxFQUNsQixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQXFCakM7SUFFRDs7T0FFRztJQUNILFVBQWdCLCtCQUErQixDQUFDLE9BQU8sRUFBRSxlQUFlLGlCQXlCdkU7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxVQUFnQiw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxpQkEwRXBFO1lBRWEsTUFBTTtDQW1DckIifQ==
|