@aztec/simulator 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/acvm/acvm.d.ts +1 -1
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.d.ts +5 -5
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +13 -16
- package/dest/acvm/oracle/typed_oracle.d.ts +12 -9
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +6 -6
- package/dest/acvm/serialize.d.ts +0 -11
- package/dest/acvm/serialize.d.ts.map +1 -1
- package/dest/acvm/serialize.js +1 -26
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +2 -1
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +2 -2
- package/dest/avm/opcodes/commitment.d.ts +16 -0
- package/dest/avm/opcodes/commitment.d.ts.map +1 -0
- package/dest/avm/opcodes/commitment.js +50 -0
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +3 -1
- package/dest/avm/serialization/instruction_serialization.d.ts +4 -3
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +6 -5
- package/dest/client/client_execution_context.d.ts +20 -17
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +42 -45
- package/dest/client/db_oracle.d.ts +4 -3
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/execution_note_cache.d.ts +17 -13
- package/dest/client/execution_note_cache.d.ts.map +1 -1
- package/dest/client/execution_note_cache.js +65 -26
- package/dest/client/execution_result.d.ts +15 -8
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +40 -16
- package/dest/client/private_execution.js +3 -3
- package/dest/client/simulator.d.ts +7 -6
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +14 -12
- package/dest/client/test_utils.d.ts +9 -0
- package/dest/client/test_utils.d.ts.map +1 -0
- package/dest/client/test_utils.js +21 -0
- package/dest/client/view_data_oracle.d.ts +2 -1
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +4 -3
- package/dest/index.d.ts +0 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -2
- package/dest/mocks/fixtures.d.ts +5 -5
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +6 -9
- package/dest/public/abstract_phase_manager.d.ts +4 -5
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +17 -84
- package/dest/public/execution.d.ts +8 -10
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +10 -1
- package/dest/public/executor.d.ts +6 -2
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +12 -4
- package/dest/public/executor_metrics.d.ts +10 -0
- package/dest/public/executor_metrics.d.ts.map +1 -0
- package/dest/public/executor_metrics.js +32 -0
- package/dest/public/fee_payment.d.ts +2 -2
- package/dest/public/fee_payment.d.ts.map +1 -1
- package/dest/public/fee_payment.js +9 -10
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +1 -1
- package/dest/public/index.d.ts +1 -1
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +1 -1
- package/dest/public/public_processor.d.ts +3 -3
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +33 -14
- package/dest/public/public_processor_metrics.d.ts +19 -0
- package/dest/public/public_processor_metrics.d.ts.map +1 -0
- package/dest/public/public_processor_metrics.js +57 -0
- package/dest/public/side_effect_trace.d.ts +1 -0
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +9 -9
- package/package.json +9 -9
- package/src/acvm/acvm.ts +1 -1
- package/src/acvm/oracle/oracle.ts +13 -30
- package/src/acvm/oracle/typed_oracle.ts +12 -31
- package/src/acvm/serialize.ts +0 -29
- package/src/avm/avm_gas.ts +1 -0
- package/src/avm/fixtures/index.ts +1 -0
- package/src/avm/opcodes/commitment.ts +66 -0
- package/src/avm/serialization/bytecode_serialization.ts +2 -0
- package/src/avm/serialization/instruction_serialization.ts +2 -1
- package/src/client/client_execution_context.ts +51 -49
- package/src/client/db_oracle.ts +9 -3
- package/src/client/execution_note_cache.ts +76 -25
- package/src/client/execution_result.ts +54 -19
- package/src/client/private_execution.ts +2 -2
- package/src/client/simulator.ts +18 -14
- package/src/client/test_utils.ts +30 -0
- package/src/client/view_data_oracle.ts +2 -1
- package/src/index.ts +0 -1
- package/src/mocks/fixtures.ts +13 -11
- package/src/public/abstract_phase_manager.ts +23 -104
- package/src/public/execution.ts +30 -14
- package/src/public/executor.ts +18 -4
- package/src/public/executor_metrics.ts +48 -0
- package/src/public/fee_payment.ts +8 -10
- package/src/public/hints_builder.ts +2 -2
- package/src/public/index.ts +1 -1
- package/src/public/public_processor.ts +46 -15
- package/src/public/public_processor_metrics.ts +90 -0
- package/src/public/side_effect_trace.ts +13 -7
- package/dest/utils.d.ts +0 -12
- package/dest/utils.d.ts.map +0 -1
- package/dest/utils.js +0 -11
- package/src/utils.ts +0 -18
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { type PublicKernelType } from '@aztec/circuit-types';
|
|
2
|
+
import { type ContractClassRegisteredEvent } from '@aztec/circuits.js';
|
|
3
|
+
import {
|
|
4
|
+
Attributes,
|
|
5
|
+
type Histogram,
|
|
6
|
+
Metrics,
|
|
7
|
+
type TelemetryClient,
|
|
8
|
+
type Tracer,
|
|
9
|
+
type UpDownCounter,
|
|
10
|
+
ValueType,
|
|
11
|
+
} from '@aztec/telemetry-client';
|
|
12
|
+
|
|
13
|
+
export class PublicProcessorMetrics {
|
|
14
|
+
public readonly tracer: Tracer;
|
|
15
|
+
|
|
16
|
+
private txDuration: Histogram;
|
|
17
|
+
private txCount: UpDownCounter;
|
|
18
|
+
private txPhaseCount: UpDownCounter;
|
|
19
|
+
|
|
20
|
+
private phaseDuration: Histogram;
|
|
21
|
+
private phaseCount: UpDownCounter;
|
|
22
|
+
|
|
23
|
+
private bytecodeDeployed: Histogram;
|
|
24
|
+
|
|
25
|
+
constructor(client: TelemetryClient, name = 'PublicProcessor') {
|
|
26
|
+
this.tracer = client.getTracer(name);
|
|
27
|
+
const meter = client.getMeter(name);
|
|
28
|
+
|
|
29
|
+
this.txDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_DURATION, {
|
|
30
|
+
description: 'How long it takes to process a transaction',
|
|
31
|
+
unit: 'ms',
|
|
32
|
+
valueType: ValueType.INT,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
this.txCount = meter.createUpDownCounter(Metrics.PUBLIC_PROCESSOR_TX_COUNT, {
|
|
36
|
+
description: 'Number of transactions processed',
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
this.txPhaseCount = meter.createUpDownCounter(Metrics.PUBLIC_PROCESSOR_TX_PHASE_COUNT, {
|
|
40
|
+
description: 'Number of phases processed',
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
this.phaseDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_PHASE_DURATION, {
|
|
44
|
+
description: 'How long it takes to process a phase',
|
|
45
|
+
unit: 'ms',
|
|
46
|
+
valueType: ValueType.INT,
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
this.phaseCount = meter.createUpDownCounter(Metrics.PUBLIC_PROCESSOR_PHASE_COUNT, {
|
|
50
|
+
description: 'Number of failed phases',
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
this.bytecodeDeployed = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_DEPLOY_BYTECODE_SIZE, {
|
|
54
|
+
description: 'Size of deployed bytecode',
|
|
55
|
+
unit: 'By',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
recordPhaseDuration(phaseName: PublicKernelType, durationMs: number) {
|
|
60
|
+
this.phaseCount.add(1, { [Attributes.TX_PHASE_NAME]: phaseName, [Attributes.OK]: true });
|
|
61
|
+
this.phaseDuration.record(Math.ceil(durationMs), { [Attributes.TX_PHASE_NAME]: phaseName });
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
recordTx(phaseCount: number, durationMs: number) {
|
|
65
|
+
this.txPhaseCount.add(phaseCount);
|
|
66
|
+
this.txDuration.record(Math.ceil(durationMs));
|
|
67
|
+
this.txCount.add(1, {
|
|
68
|
+
[Attributes.OK]: true,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
recordFailedTx() {
|
|
73
|
+
this.txCount.add(1, {
|
|
74
|
+
[Attributes.OK]: false,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
recordRevertedPhase(phaseName: PublicKernelType) {
|
|
79
|
+
this.phaseCount.add(1, { [Attributes.TX_PHASE_NAME]: phaseName, [Attributes.OK]: false });
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
recordClassRegistration(...events: ContractClassRegisteredEvent[]) {
|
|
83
|
+
let totalBytecode = 0;
|
|
84
|
+
for (const event of events) {
|
|
85
|
+
totalBytecode += event.packedPublicBytecode.length;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
this.bytecodeDeployed.record(totalBytecode);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UnencryptedFunctionL2Logs, UnencryptedL2Log } from '@aztec/circuit-types';
|
|
1
|
+
import { PublicExecutionRequest, UnencryptedFunctionL2Logs, UnencryptedL2Log } from '@aztec/circuit-types';
|
|
2
2
|
import {
|
|
3
3
|
AvmContractInstanceHint,
|
|
4
4
|
AvmExecutionHints,
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
LogHash,
|
|
15
15
|
NoteHash,
|
|
16
16
|
Nullifier,
|
|
17
|
+
type PublicCallRequest,
|
|
17
18
|
ReadRequest,
|
|
18
19
|
} from '@aztec/circuits.js';
|
|
19
20
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -23,7 +24,7 @@ import { type ContractInstanceWithAddress } from '@aztec/types/contracts';
|
|
|
23
24
|
import { type AvmContractCallResult } from '../avm/avm_contract_call_result.js';
|
|
24
25
|
import { type AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
25
26
|
import { createSimulationError } from '../common/errors.js';
|
|
26
|
-
import { type
|
|
27
|
+
import { type PublicExecutionResult, resultToPublicCallRequest } from './execution.js';
|
|
27
28
|
import { type PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
|
|
28
29
|
|
|
29
30
|
export type TracedContractInstance = { exists: boolean } & ContractInstanceWithAddress;
|
|
@@ -51,6 +52,8 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
51
52
|
private allUnencryptedLogs: UnencryptedL2Log[] = [];
|
|
52
53
|
private unencryptedLogsHashes: LogHash[] = [];
|
|
53
54
|
|
|
55
|
+
private publicCallRequests: PublicCallRequest[] = [];
|
|
56
|
+
|
|
54
57
|
private gotContractInstances: ContractInstanceWithAddress[] = [];
|
|
55
58
|
|
|
56
59
|
private nestedExecutions: PublicExecutionResult[] = [];
|
|
@@ -247,6 +250,9 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
247
250
|
result.startGasLeft.daGas - result.endGasLeft.daGas,
|
|
248
251
|
result.startGasLeft.l2Gas - result.endGasLeft.l2Gas,
|
|
249
252
|
);
|
|
253
|
+
|
|
254
|
+
this.publicCallRequests.push(resultToPublicCallRequest(result));
|
|
255
|
+
|
|
250
256
|
this.avmCircuitHints.externalCalls.items.push(
|
|
251
257
|
new AvmExternalCallHint(
|
|
252
258
|
/*success=*/ new Fr(result.reverted ? 0 : 1),
|
|
@@ -305,6 +311,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
305
311
|
// TODO(dbanks12): process contract instance read requests in public kernel
|
|
306
312
|
//gotContractInstances: this.gotContractInstances,
|
|
307
313
|
|
|
314
|
+
publicCallRequests: this.publicCallRequests,
|
|
308
315
|
nestedExecutions: this.nestedExecutions,
|
|
309
316
|
|
|
310
317
|
avmCircuitHints: this.avmCircuitHints,
|
|
@@ -325,11 +332,10 @@ function createPublicExecutionRequest(avmEnvironment: AvmExecutionEnvironment):
|
|
|
325
332
|
isDelegateCall: avmEnvironment.isDelegateCall,
|
|
326
333
|
isStaticCall: avmEnvironment.isStaticCall,
|
|
327
334
|
});
|
|
328
|
-
return
|
|
329
|
-
|
|
330
|
-
functionSelector: avmEnvironment.functionSelector,
|
|
335
|
+
return new PublicExecutionRequest(
|
|
336
|
+
avmEnvironment.address,
|
|
331
337
|
callContext,
|
|
332
338
|
// execution request does not contain AvmContextInputs prefix
|
|
333
|
-
|
|
334
|
-
|
|
339
|
+
avmEnvironment.getCalldataWithoutPrefix(),
|
|
340
|
+
);
|
|
335
341
|
}
|
package/dest/utils.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type Fr } from '@aztec/foundation/fields';
|
|
2
|
-
/**
|
|
3
|
-
* Computes the resulting storage slot for an entry in a mapping.
|
|
4
|
-
* @param mappingSlot - The slot of the mapping within state.
|
|
5
|
-
* @param key - The key of the mapping.
|
|
6
|
-
* @returns The slot in the contract storage where the value is stored.
|
|
7
|
-
*/
|
|
8
|
-
export declare function computeSlotForMapping(mappingSlot: Fr, key: {
|
|
9
|
-
/** Serialize to a field. */
|
|
10
|
-
toField: () => Fr;
|
|
11
|
-
}): Fr;
|
|
12
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dest/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,EAAE,EACf,GAAG,EAAE;IACH,4BAA4B;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,MAGF"}
|
package/dest/utils.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { pedersenHash } from '@aztec/foundation/crypto';
|
|
2
|
-
/**
|
|
3
|
-
* Computes the resulting storage slot for an entry in a mapping.
|
|
4
|
-
* @param mappingSlot - The slot of the mapping within state.
|
|
5
|
-
* @param key - The key of the mapping.
|
|
6
|
-
* @returns The slot in the contract storage where the value is stored.
|
|
7
|
-
*/
|
|
8
|
-
export function computeSlotForMapping(mappingSlot, key) {
|
|
9
|
-
return pedersenHash([mappingSlot, key.toField()]);
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3hEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxXQUFlLEVBQ2YsR0FHQztJQUVELE9BQU8sWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyJ9
|
package/src/utils.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { pedersenHash } from '@aztec/foundation/crypto';
|
|
2
|
-
import { type Fr } from '@aztec/foundation/fields';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Computes the resulting storage slot for an entry in a mapping.
|
|
6
|
-
* @param mappingSlot - The slot of the mapping within state.
|
|
7
|
-
* @param key - The key of the mapping.
|
|
8
|
-
* @returns The slot in the contract storage where the value is stored.
|
|
9
|
-
*/
|
|
10
|
-
export function computeSlotForMapping(
|
|
11
|
-
mappingSlot: Fr,
|
|
12
|
-
key: {
|
|
13
|
-
/** Serialize to a field. */
|
|
14
|
-
toField: () => Fr;
|
|
15
|
-
},
|
|
16
|
-
) {
|
|
17
|
-
return pedersenHash([mappingSlot, key.toField()]);
|
|
18
|
-
}
|