@aztec/simulator 0.86.0 → 0.87.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/common/errors.d.ts +3 -6
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +50 -31
- package/dest/private/acvm/acvm.d.ts +0 -2
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +2 -2
- package/dest/private/acvm/deserialize.d.ts +0 -2
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/oracle/oracle.d.ts +2 -2
- package/dest/private/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/private/acvm/oracle/oracle.js +30 -33
- package/dest/private/acvm/oracle/typed_oracle.d.ts +1 -3
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/private/acvm/serialize.d.ts +8 -2
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +26 -0
- package/dest/private/index.d.ts +3 -0
- package/dest/private/index.d.ts.map +1 -1
- package/dest/private/index.js +3 -0
- package/dest/private/private_execution.d.ts.map +1 -1
- package/dest/private/private_execution.js +7 -1
- package/dest/private/providers/acvm_native.d.ts +0 -2
- package/dest/private/providers/acvm_native.d.ts.map +1 -1
- package/dest/private/providers/acvm_native.js +1 -1
- package/dest/private/providers/circuit_recording/circuit_recorder.d.ts +0 -2
- package/dest/private/providers/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/providers/simulation_provider.d.ts.map +1 -1
- package/dest/private/providers/simulation_provider.js +14 -16
- package/dest/private/simulator.d.ts.map +1 -1
- package/dest/private/utility_execution_oracle.d.ts +0 -2
- package/dest/private/utility_execution_oracle.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +2 -2
- package/dest/public/avm/avm_execution_environment.d.ts +2 -1
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +4 -2
- package/dest/public/avm/avm_gas.d.ts +0 -15
- package/dest/public/avm/avm_gas.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +0 -18
- package/dest/public/avm/avm_memory_types.d.ts +84 -86
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.d.ts +1 -3
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +3 -3
- package/dest/public/avm/avm_simulator_interface.d.ts +0 -2
- package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -1
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
- package/dest/public/avm/fixtures/initializers.js +1 -1
- package/dest/public/avm/fixtures/utils.d.ts +0 -10
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
- package/dest/public/avm/fixtures/utils.js +0 -42
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +7 -7
- package/dest/public/avm/opcodes/addressing_mode.d.ts +7 -6
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +18 -15
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +1 -1
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +2 -2
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/public/avm/opcodes/comparators.js +1 -1
- package/dest/public/avm/opcodes/contract.d.ts +1 -2
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +8 -9
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +1 -1
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +1 -1
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +1 -1
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +1 -1
- package/dest/public/avm/opcodes/external_calls.d.ts +6 -6
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +22 -22
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +3 -3
- package/dest/public/avm/opcodes/instruction.d.ts +0 -2
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.d.ts +4 -4
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +16 -16
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +18 -11
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +2 -2
- package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -2
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -2
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -2
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/executor_metrics.d.ts +3 -3
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +6 -6
- package/dest/public/executor_metrics_interface.d.ts +1 -1
- package/dest/public/executor_metrics_interface.d.ts.map +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.map +1 -1
- package/dest/public/fixtures/utils.js +19 -26
- package/dest/public/hinting_db_sources.d.ts +0 -2
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +9 -2
- package/dest/public/public_processor/public_processor.d.ts +5 -7
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +10 -7
- package/dest/public/public_tx_simulator/apps_tests/amm_test.js +5 -5
- package/dest/public/public_tx_simulator/apps_tests/token_test.js +6 -6
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +1 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +3 -3
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +37 -34
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +2 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +15 -4
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +1 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +2 -2
- package/dest/public/side_effect_trace.d.ts +2 -39
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +8 -32
- package/dest/public/side_effect_trace_interface.d.ts +0 -4
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
- package/dest/public/state_manager/public_storage.d.ts.map +1 -1
- package/dest/public/state_manager/state_manager.d.ts +6 -4
- package/dest/public/state_manager/state_manager.d.ts.map +1 -1
- package/dest/public/state_manager/state_manager.js +6 -3
- package/dest/public/test_executor_metrics.d.ts +5 -4
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +47 -11
- package/dest/public/unique_class_ids.d.ts.map +1 -1
- package/dest/test/utils.d.ts.map +1 -1
- package/package.json +18 -17
- package/src/common/errors.ts +77 -41
- package/src/private/acvm/acvm.ts +2 -2
- package/src/private/acvm/oracle/oracle.ts +38 -31
- package/src/private/acvm/oracle/typed_oracle.ts +1 -1
- package/src/private/acvm/serialize.ts +35 -0
- package/src/private/index.ts +3 -0
- package/src/private/pick_notes.ts +4 -4
- package/src/private/private_execution.ts +8 -0
- package/src/private/providers/acvm_native.ts +6 -2
- package/src/private/providers/simulation_provider.ts +14 -16
- package/src/private/simulator.ts +4 -1
- package/src/public/avm/avm_contract_call_result.ts +2 -2
- package/src/public/avm/avm_execution_environment.ts +7 -1
- package/src/public/avm/avm_gas.ts +0 -20
- package/src/public/avm/avm_simulator.ts +3 -1
- package/src/public/avm/fixtures/initializers.ts +1 -0
- package/src/public/avm/fixtures/utils.ts +0 -66
- package/src/public/avm/opcodes/accrued_substate.ts +31 -11
- package/src/public/avm/opcodes/addressing_mode.ts +23 -20
- package/src/public/avm/opcodes/arithmetic.ts +2 -1
- package/src/public/avm/opcodes/bitwise.ts +9 -3
- package/src/public/avm/opcodes/comparators.ts +2 -1
- package/src/public/avm/opcodes/contract.ts +7 -6
- package/src/public/avm/opcodes/control_flow.ts +7 -2
- package/src/public/avm/opcodes/conversion.ts +2 -1
- package/src/public/avm/opcodes/ec_add.ts +2 -1
- package/src/public/avm/opcodes/environment_getters.ts +7 -2
- package/src/public/avm/opcodes/external_calls.ts +26 -14
- package/src/public/avm/opcodes/hashing.ts +17 -5
- package/src/public/avm/opcodes/memory.ts +33 -15
- package/src/public/avm/opcodes/misc.ts +23 -15
- package/src/public/avm/opcodes/storage.ts +9 -3
- package/src/public/avm/serialization/buffer_cursor.ts +4 -1
- package/src/public/executor_metrics.ts +11 -6
- package/src/public/executor_metrics_interface.ts +1 -1
- package/src/public/fixtures/public_tx_simulation_tester.ts +3 -2
- package/src/public/fixtures/utils.ts +21 -28
- package/src/public/hinting_db_sources.ts +17 -4
- package/src/public/public_processor/public_processor.ts +11 -5
- package/src/public/public_tx_simulator/apps_tests/amm_test.ts +5 -5
- package/src/public/public_tx_simulator/apps_tests/token_test.ts +6 -6
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +3 -2
- package/src/public/public_tx_simulator/public_tx_context.ts +96 -81
- package/src/public/public_tx_simulator/public_tx_simulator.ts +14 -3
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +10 -1
- package/src/public/side_effect_trace.ts +7 -111
- package/src/public/side_effect_trace_interface.ts +0 -4
- package/src/public/state_manager/state_manager.ts +13 -5
- package/src/public/test_executor_metrics.ts +60 -13
- package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
|
@@ -18,13 +18,15 @@ export class PublicTxSimulator {
|
|
|
18
18
|
globalVariables;
|
|
19
19
|
doMerkleOperations;
|
|
20
20
|
skipFeeEnforcement;
|
|
21
|
+
clientInitiatedSimulation;
|
|
21
22
|
log;
|
|
22
|
-
constructor(merkleTree, contractsDB, globalVariables, doMerkleOperations = false, skipFeeEnforcement = false){
|
|
23
|
+
constructor(merkleTree, contractsDB, globalVariables, doMerkleOperations = false, skipFeeEnforcement = false, clientInitiatedSimulation = false){
|
|
23
24
|
this.merkleTree = merkleTree;
|
|
24
25
|
this.contractsDB = contractsDB;
|
|
25
26
|
this.globalVariables = globalVariables;
|
|
26
27
|
this.doMerkleOperations = doMerkleOperations;
|
|
27
28
|
this.skipFeeEnforcement = skipFeeEnforcement;
|
|
29
|
+
this.clientInitiatedSimulation = clientInitiatedSimulation;
|
|
28
30
|
this.log = createLogger(`simulator:public_tx_simulator`);
|
|
29
31
|
}
|
|
30
32
|
/**
|
|
@@ -160,7 +162,7 @@ export class PublicTxSimulator {
|
|
|
160
162
|
const returnValues = [];
|
|
161
163
|
let reverted = false;
|
|
162
164
|
let revertReason;
|
|
163
|
-
for(let i =
|
|
165
|
+
for(let i = 0; i < callRequests.length; i++){
|
|
164
166
|
if (reverted) {
|
|
165
167
|
break;
|
|
166
168
|
}
|
|
@@ -190,7 +192,6 @@ export class PublicTxSimulator {
|
|
|
190
192
|
const contractAddress = callRequest.request.contractAddress;
|
|
191
193
|
const fnName = await getPublicFunctionDebugName(this.contractsDB, contractAddress, callRequest.calldata);
|
|
192
194
|
const allocatedGas = context.getGasLeftAtPhase(phase);
|
|
193
|
-
stateManager.traceEnqueuedCall(callRequest.request);
|
|
194
195
|
const result = await this.simulateEnqueuedCallInternal(stateManager, callRequest, allocatedGas, /*transactionFee=*/ context.getTransactionFee(phase), fnName);
|
|
195
196
|
const gasUsed = allocatedGas.sub(result.gasLeft); // by enqueued call
|
|
196
197
|
context.consumeGas(phase, gasUsed);
|
|
@@ -217,7 +218,7 @@ export class PublicTxSimulator {
|
|
|
217
218
|
const address = request.contractAddress;
|
|
218
219
|
const sender = request.msgSender;
|
|
219
220
|
this.log.debug(`Executing enqueued public call to external function ${fnName}@${address} with ${allocatedGas.l2Gas} allocated L2 gas.`);
|
|
220
|
-
const simulator = await AvmSimulator.create(stateManager, address, sender, transactionFee, this.globalVariables, request.isStaticCall, calldata, allocatedGas);
|
|
221
|
+
const simulator = await AvmSimulator.create(stateManager, address, sender, transactionFee, this.globalVariables, request.isStaticCall, calldata, allocatedGas, this.clientInitiatedSimulation);
|
|
221
222
|
const avmCallResult = await simulator.execute();
|
|
222
223
|
return avmCallResult.finalize();
|
|
223
224
|
}
|
|
@@ -239,6 +240,11 @@ export class PublicTxSimulator {
|
|
|
239
240
|
await stateManager.writeUniqueNoteHash(noteHash);
|
|
240
241
|
}
|
|
241
242
|
}
|
|
243
|
+
for (const l2ToL1Message of context.nonRevertibleAccumulatedDataFromPrivate.l2ToL1Msgs){
|
|
244
|
+
if (!l2ToL1Message.isEmpty()) {
|
|
245
|
+
stateManager.writeScopedL2ToL1Message(l2ToL1Message);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
242
248
|
// add new contracts to the contracts db so that their functions may be found and called
|
|
243
249
|
// TODO(#6464): Should we allow emitting contracts in the private setup phase?
|
|
244
250
|
// FIXME(fcarreiro): this should conceptually use the hinted contracts db.
|
|
@@ -271,6 +277,11 @@ export class PublicTxSimulator {
|
|
|
271
277
|
await stateManager.writeSiloedNoteHash(noteHash);
|
|
272
278
|
}
|
|
273
279
|
}
|
|
280
|
+
for (const l2ToL1Message of context.revertibleAccumulatedDataFromPrivate.l2ToL1Msgs){
|
|
281
|
+
if (!l2ToL1Message.isEmpty()) {
|
|
282
|
+
stateManager.writeScopedL2ToL1Message(l2ToL1Message);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
274
285
|
// add new contracts to the contracts db so that their functions may be found and called
|
|
275
286
|
// FIXME(fcarreiro): this should conceptually use the hinted contracts db.
|
|
276
287
|
// However things should work as they are now because the hinted db would still pick up the new contracts.
|
|
@@ -13,7 +13,7 @@ import { PublicTxContext } from './public_tx_context.js';
|
|
|
13
13
|
*/
|
|
14
14
|
export declare class TelemetryPublicTxSimulator extends MeasuredPublicTxSimulator {
|
|
15
15
|
readonly tracer: Tracer;
|
|
16
|
-
constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, doMerkleOperations?: boolean, skipFeeEnforcement?: boolean, telemetryClient?: TelemetryClient);
|
|
16
|
+
constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, doMerkleOperations?: boolean, skipFeeEnforcement?: boolean, clientInitiatedSimulation?: boolean, telemetryClient?: TelemetryClient);
|
|
17
17
|
protected simulateEnqueuedCall(phase: TxExecutionPhase, context: PublicTxContext, callRequest: PublicCallRequestWithCalldata): Promise<AvmFinalizedCallResult>;
|
|
18
18
|
protected simulateEnqueuedCallInternal(stateManager: PublicPersistableStateManager, callRequest: PublicCallRequestWithCalldata, allocatedGas: Gas, transactionFee: Fr, fnName: string): Promise<AvmFinalizedCallResult>;
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/telemetry_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,KAAK,eAAe,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,MAAM,EAAiC,MAAM,yBAAyB,CAAC;AAEvH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,yBAAyB;IAEvE,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,kBAAkB,GAAE,OAAe,EACnC,kBAAkB,GAAE,OAAe,EACnC,eAAe,GAAE,eAAsC;
|
|
1
|
+
{"version":3,"file":"telemetry_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/telemetry_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,KAAK,eAAe,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,MAAM,EAAiC,MAAM,yBAAyB,CAAC;AAEvH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,yBAAyB;IAEvE,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,kBAAkB,GAAE,OAAe,EACnC,kBAAkB,GAAE,OAAe,EACnC,yBAAyB,GAAE,OAAe,EAC1C,eAAe,GAAE,eAAsC;cAqBhC,oBAAoB,CAC3C,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,6BAA6B,GACzC,OAAO,CAAC,sBAAsB,CAAC;cAUT,4BAA4B,CACnD,YAAY,EAAE,6BAA6B,EAC3C,WAAW,EAAE,6BAA6B,EAC1C,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,EAAE,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,CAAC;CAGnC"}
|
|
@@ -12,9 +12,9 @@ import { MeasuredPublicTxSimulator } from './measured_public_tx_simulator.js';
|
|
|
12
12
|
* A public tx simulator that tracks runtime/production metrics with telemetry.
|
|
13
13
|
*/ export class TelemetryPublicTxSimulator extends MeasuredPublicTxSimulator {
|
|
14
14
|
/* tracer needed by trackSpans */ tracer;
|
|
15
|
-
constructor(merkleTree, contractsDB, globalVariables, doMerkleOperations = false, skipFeeEnforcement = false, telemetryClient = getTelemetryClient()){
|
|
15
|
+
constructor(merkleTree, contractsDB, globalVariables, doMerkleOperations = false, skipFeeEnforcement = false, clientInitiatedSimulation = false, telemetryClient = getTelemetryClient()){
|
|
16
16
|
const metrics = new ExecutorMetrics(telemetryClient, 'PublicTxSimulator');
|
|
17
|
-
super(merkleTree, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement, metrics);
|
|
17
|
+
super(merkleTree, contractsDB, globalVariables, doMerkleOperations, skipFeeEnforcement, clientInitiatedSimulation, metrics);
|
|
18
18
|
this.tracer = metrics.tracer;
|
|
19
19
|
}
|
|
20
20
|
async simulateEnqueuedCall(phase, context, callRequest) {
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import {
|
|
2
|
+
import { PublicDataUpdateRequest } from '@aztec/stdlib/avm';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import
|
|
5
|
-
import { NoteHash, Nullifier, PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
4
|
+
import { NoteHash, Nullifier } from '@aztec/stdlib/kernel';
|
|
6
5
|
import { PublicLog } from '@aztec/stdlib/logs';
|
|
7
6
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
8
|
-
import { type GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
|
|
9
7
|
import type { PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
|
|
10
8
|
import { UniqueClassIds } from './unique_class_ids.js';
|
|
11
9
|
/**
|
|
@@ -14,7 +12,6 @@ import { UniqueClassIds } from './unique_class_ids.js';
|
|
|
14
12
|
* This struct is helpful for testing and checking array lengths.
|
|
15
13
|
**/
|
|
16
14
|
export type SideEffects = {
|
|
17
|
-
enqueuedCalls: PublicCallRequest[];
|
|
18
15
|
publicDataWrites: PublicDataUpdateRequest[];
|
|
19
16
|
noteHashes: NoteHash[];
|
|
20
17
|
nullifiers: Nullifier[];
|
|
@@ -46,7 +43,6 @@ export declare class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
46
43
|
log: import("@aztec/foundation/log").Logger;
|
|
47
44
|
/** The side effect counter increments with every call to the trace. */
|
|
48
45
|
private sideEffectCounter;
|
|
49
|
-
private enqueuedCalls;
|
|
50
46
|
private publicDataWrites;
|
|
51
47
|
private protocolPublicDataWritesLength;
|
|
52
48
|
private userPublicDataWritesLength;
|
|
@@ -76,39 +72,6 @@ export declare class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
76
72
|
traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
|
|
77
73
|
tracePublicLog(contractAddress: AztecAddress, log: Fr[]): void;
|
|
78
74
|
traceGetContractClass(contractClassId: Fr, exists: boolean): void;
|
|
79
|
-
/**
|
|
80
|
-
* Trace an enqueued call.
|
|
81
|
-
* Accept some results from a finished call's trace into this one.
|
|
82
|
-
*/
|
|
83
|
-
traceEnqueuedCall(publicCallRequest: PublicCallRequest): void;
|
|
84
75
|
getSideEffects(): SideEffects;
|
|
85
|
-
toAvmCircuitPublicInputs(
|
|
86
|
-
/** Globals. */
|
|
87
|
-
globalVariables: GlobalVariables,
|
|
88
|
-
/** Gas used at start of TX. */
|
|
89
|
-
startGasUsed: Gas,
|
|
90
|
-
/** How much gas was available for this public execution. */
|
|
91
|
-
gasLimits: GasSettings,
|
|
92
|
-
/** Address of the fee payer. */
|
|
93
|
-
feePayer: AztecAddress,
|
|
94
|
-
/** Call requests for setup phase. */
|
|
95
|
-
publicSetupCallRequests: PublicCallRequest[],
|
|
96
|
-
/** Call requests for app logic phase. */
|
|
97
|
-
publicAppLogicCallRequests: PublicCallRequest[],
|
|
98
|
-
/** Call request for teardown phase. */
|
|
99
|
-
publicTeardownCallRequest: PublicCallRequest,
|
|
100
|
-
/** End tree snapshots. */
|
|
101
|
-
endTreeSnapshots: TreeSnapshots,
|
|
102
|
-
/**
|
|
103
|
-
* Gas used by the whole transaction, assuming entire teardown limit is used.
|
|
104
|
-
* This is the gas used when computing transaction fee.
|
|
105
|
-
*/
|
|
106
|
-
endGasUsed: Gas,
|
|
107
|
-
/** Transaction fee. */
|
|
108
|
-
transactionFee: Fr,
|
|
109
|
-
/** The call's results */
|
|
110
|
-
reverted: boolean): AvmCircuitPublicInputs;
|
|
111
|
-
getPublicLogs(): PublicLog[];
|
|
112
|
-
private getAvmAccumulatedData;
|
|
113
76
|
}
|
|
114
77
|
//# sourceMappingURL=side_effect_trace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side_effect_trace.d.ts","sourceRoot":"","sources":["../../src/public/side_effect_trace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"side_effect_trace.d.ts","sourceRoot":"","sources":["../../src/public/side_effect_trace.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAiB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAK7E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;IAII;AACJ,MAAM,MAAM,WAAW,GAAG;IACxB,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB,CAAC;AAEF,qBAAa,sBAAsB;aAEf,gBAAgB,EAAE,MAAM;aACxB,wBAAwB,EAAE,MAAM;aAChC,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;gBALlB,gBAAgB,EAAE,MAAM,EACxB,wBAAwB,EAAE,MAAM,EAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM;IAGpC,MAAM,CAAC,KAAK;CAGb;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,8BAA8B;IAkBlE,qDAAqD;aACrC,sBAAsB,EAAE,MAAM;IAC9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,8BAA8B;IAC/C,qEAAqE;IACrE,OAAO,CAAC,cAAc;IAxBjB,GAAG,yCAA+C;IAEzD,uEAAuE;IACvE,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,8BAA8B,CAAa;IACnD,OAAO,CAAC,0BAA0B,CAAa;IAC/C,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,UAAU,CAAmB;IAErC,sDAAsD;IACtD,OAAO,CAAC,uBAAuB,CAAS;;IAGtC,qDAAqD;IACrC,sBAAsB,GAAE,MAAU;IAClD;;OAEG;IACc,8BAA8B,GAAE,sBAAuD;IACxG,qEAAqE;IAC7D,cAAc,GAAE,cAAqC;IAKxD,IAAI;IAeJ,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAE,OAAe;IAoBlD,UAAU;IAIjB,OAAO,CAAC,0BAA0B;IAI3B,gBAAgB;IAIV,uBAAuB,CAClC,eAAe,EAAE,YAAY,EAC7B,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;IAkCT,gBAAgB,CAAC,QAAQ,EAAE,EAAE;IAU7B,iBAAiB,CAAC,eAAe,EAAE,EAAE;IAWrC,qBAAqB,CAAC,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IAW/E,cAAc,CAAC,eAAe,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE;IAcvD,qBAAqB,CAAC,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO;IAgB1D,cAAc,IAAI,WAAW;CASrC"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_PUBLIC_LOGS_PER_TX, PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PUBLIC_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
|
|
2
2
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
|
-
import {
|
|
6
|
+
import { PublicDataUpdateRequest } from '@aztec/stdlib/avm';
|
|
7
7
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
8
|
-
import { NoteHash, Nullifier
|
|
8
|
+
import { NoteHash, Nullifier } from '@aztec/stdlib/kernel';
|
|
9
9
|
import { PublicLog } from '@aztec/stdlib/logs';
|
|
10
|
-
import { L2ToL1Message
|
|
11
|
-
import { TreeSnapshots } from '@aztec/stdlib/tx';
|
|
10
|
+
import { L2ToL1Message } from '@aztec/stdlib/messaging';
|
|
12
11
|
import { strict as assert } from 'assert';
|
|
13
12
|
import { SideEffectLimitReachedError } from './side_effect_errors.js';
|
|
14
13
|
import { UniqueClassIds } from './unique_class_ids.js';
|
|
@@ -39,7 +38,6 @@ export class SideEffectArrayLengths {
|
|
|
39
38
|
uniqueClassIds;
|
|
40
39
|
log;
|
|
41
40
|
/** The side effect counter increments with every call to the trace. */ sideEffectCounter;
|
|
42
|
-
enqueuedCalls;
|
|
43
41
|
publicDataWrites;
|
|
44
42
|
protocolPublicDataWritesLength;
|
|
45
43
|
userPublicDataWritesLength;
|
|
@@ -55,7 +53,6 @@ export class SideEffectArrayLengths {
|
|
|
55
53
|
this.previousSideEffectArrayLengths = previousSideEffectArrayLengths;
|
|
56
54
|
this.uniqueClassIds = uniqueClassIds;
|
|
57
55
|
this.log = createLogger('simulator:side_effect_trace');
|
|
58
|
-
this.enqueuedCalls = [];
|
|
59
56
|
this.publicDataWrites = [];
|
|
60
57
|
this.protocolPublicDataWritesLength = 0;
|
|
61
58
|
this.userPublicDataWritesLength = 0;
|
|
@@ -74,7 +71,6 @@ export class SideEffectArrayLengths {
|
|
|
74
71
|
assert(!forkedTrace.alreadyMergedIntoParent, 'Bug! Cannot merge a forked trace that has already been merged into its parent!');
|
|
75
72
|
forkedTrace.alreadyMergedIntoParent = true;
|
|
76
73
|
this.sideEffectCounter = forkedTrace.sideEffectCounter;
|
|
77
|
-
this.enqueuedCalls.push(...forkedTrace.enqueuedCalls);
|
|
78
74
|
this.uniqueClassIds.acceptAndMerge(forkedTrace.uniqueClassIds);
|
|
79
75
|
if (!reverted) {
|
|
80
76
|
this.publicDataWrites.push(...forkedTrace.publicDataWrites);
|
|
@@ -131,7 +127,7 @@ export class SideEffectArrayLengths {
|
|
|
131
127
|
throw new SideEffectLimitReachedError('l2 to l1 message', MAX_L2_TO_L1_MSGS_PER_TX);
|
|
132
128
|
}
|
|
133
129
|
const recipientAddress = EthAddress.fromField(recipient);
|
|
134
|
-
this.l2ToL1Messages.push(new L2ToL1Message(recipientAddress, content,
|
|
130
|
+
this.l2ToL1Messages.push(new L2ToL1Message(recipientAddress, content, 0).scope(contractAddress));
|
|
135
131
|
this.log.trace(`Tracing new l2 to l1 message (counter=${this.sideEffectCounter})`);
|
|
136
132
|
this.incrementSideEffectCounter();
|
|
137
133
|
}
|
|
@@ -139,10 +135,10 @@ export class SideEffectArrayLengths {
|
|
|
139
135
|
if (this.publicLogs.length + this.previousSideEffectArrayLengths.publicLogs >= MAX_PUBLIC_LOGS_PER_TX) {
|
|
140
136
|
throw new SideEffectLimitReachedError('public log', MAX_PUBLIC_LOGS_PER_TX);
|
|
141
137
|
}
|
|
142
|
-
if (log.length >
|
|
143
|
-
throw new Error(`Emitted public log is too large, max: ${
|
|
138
|
+
if (log.length > PUBLIC_LOG_SIZE_IN_FIELDS) {
|
|
139
|
+
throw new Error(`Emitted public log is too large, max: ${PUBLIC_LOG_SIZE_IN_FIELDS}, passed: ${log.length}`);
|
|
144
140
|
}
|
|
145
|
-
const publicLog = new PublicLog(contractAddress, padArrayEnd(log, Fr.ZERO,
|
|
141
|
+
const publicLog = new PublicLog(contractAddress, padArrayEnd(log, Fr.ZERO, PUBLIC_LOG_SIZE_IN_FIELDS), log.length);
|
|
146
142
|
this.publicLogs.push(publicLog);
|
|
147
143
|
this.log.trace(`Tracing new public log (counter=${this.sideEffectCounter})`);
|
|
148
144
|
this.incrementSideEffectCounter();
|
|
@@ -159,16 +155,8 @@ export class SideEffectArrayLengths {
|
|
|
159
155
|
this.incrementSideEffectCounter();
|
|
160
156
|
}
|
|
161
157
|
}
|
|
162
|
-
/**
|
|
163
|
-
* Trace an enqueued call.
|
|
164
|
-
* Accept some results from a finished call's trace into this one.
|
|
165
|
-
*/ traceEnqueuedCall(publicCallRequest) {
|
|
166
|
-
// TODO(4805): check if some threshold is reached for max enqueued or nested calls (to unique contracts?)
|
|
167
|
-
this.enqueuedCalls.push(publicCallRequest);
|
|
168
|
-
}
|
|
169
158
|
getSideEffects() {
|
|
170
159
|
return {
|
|
171
|
-
enqueuedCalls: this.enqueuedCalls,
|
|
172
160
|
publicDataWrites: this.publicDataWrites,
|
|
173
161
|
noteHashes: this.noteHashes,
|
|
174
162
|
nullifiers: this.nullifiers,
|
|
@@ -176,16 +164,4 @@ export class SideEffectArrayLengths {
|
|
|
176
164
|
publicLogs: this.publicLogs
|
|
177
165
|
};
|
|
178
166
|
}
|
|
179
|
-
toAvmCircuitPublicInputs(/** Globals. */ globalVariables, /** Gas used at start of TX. */ startGasUsed, /** How much gas was available for this public execution. */ gasLimits, /** Address of the fee payer. */ feePayer, /** Call requests for setup phase. */ publicSetupCallRequests, /** Call requests for app logic phase. */ publicAppLogicCallRequests, /** Call request for teardown phase. */ publicTeardownCallRequest, /** End tree snapshots. */ endTreeSnapshots, /**
|
|
180
|
-
* Gas used by the whole transaction, assuming entire teardown limit is used.
|
|
181
|
-
* This is the gas used when computing transaction fee.
|
|
182
|
-
*/ endGasUsed, /** Transaction fee. */ transactionFee, /** The call's results */ reverted) {
|
|
183
|
-
return new AvmCircuitPublicInputs(globalVariables, TreeSnapshots.empty(), startGasUsed, gasLimits, feePayer, padArrayEnd(publicSetupCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX), padArrayEnd(publicAppLogicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX), publicTeardownCallRequest, /*previousNonRevertibleAccumulatedDataArrayLengths=*/ PrivateToAvmAccumulatedDataArrayLengths.empty(), /*previousRevertibleAccumulatedDataArrayLengths=*/ PrivateToAvmAccumulatedDataArrayLengths.empty(), /*previousNonRevertibleAccumulatedDataArray=*/ PrivateToAvmAccumulatedData.empty(), /*previousRevertibleAccumulatedDataArray=*/ PrivateToAvmAccumulatedData.empty(), endTreeSnapshots, endGasUsed, /*accumulatedData=*/ this.getAvmAccumulatedData(), transactionFee, reverted);
|
|
184
|
-
}
|
|
185
|
-
getPublicLogs() {
|
|
186
|
-
return this.publicLogs;
|
|
187
|
-
}
|
|
188
|
-
getAvmAccumulatedData() {
|
|
189
|
-
return new AvmAccumulatedData(padArrayEnd(this.noteHashes.map((n)=>n.value), Fr.zero(), MAX_NOTE_HASHES_PER_TX), padArrayEnd(this.nullifiers.map((n)=>n.value), Fr.zero(), MAX_NULLIFIERS_PER_TX), padArrayEnd(this.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(this.publicLogs, PublicLog.empty(), MAX_PUBLIC_LOGS_PER_TX), padArrayEnd(this.publicDataWrites.map((w)=>new PublicDataWrite(w.leafSlot, w.newValue)), PublicDataWrite.empty(), MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX));
|
|
190
|
-
}
|
|
191
167
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import type { PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
4
|
-
import type { PublicLog } from '@aztec/stdlib/logs';
|
|
5
3
|
export interface PublicSideEffectTraceInterface {
|
|
6
4
|
fork(): PublicSideEffectTraceInterface;
|
|
7
5
|
merge(nestedTrace: PublicSideEffectTraceInterface, reverted?: boolean): void;
|
|
@@ -14,7 +12,5 @@ export interface PublicSideEffectTraceInterface {
|
|
|
14
12
|
traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
|
|
15
13
|
tracePublicLog(contractAddress: AztecAddress, log: Fr[]): void;
|
|
16
14
|
traceGetContractClass(contractClassId: Fr, exists: boolean): void;
|
|
17
|
-
traceEnqueuedCall(publicCallRequest: PublicCallRequest): void;
|
|
18
|
-
getPublicLogs(): PublicLog[];
|
|
19
15
|
}
|
|
20
16
|
//# sourceMappingURL=side_effect_trace_interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side_effect_trace_interface.d.ts","sourceRoot":"","sources":["../../src/public/side_effect_trace_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"side_effect_trace_interface.d.ts","sourceRoot":"","sources":["../../src/public/side_effect_trace_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,8BAA8B;IAC7C,IAAI,IAAI,8BAA8B,CAAC;IACvC,KAAK,CAAC,WAAW,EAAE,8BAA8B,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7E,UAAU,IAAI,MAAM,CAAC;IAErB,uBAAuB,CACrB,eAAe,EAAE,YAAY,EAC7B,IAAI,EAAE,EAAE,EAAE,sDAAsD;IAChE,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,gBAAgB,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC;IAC3C,gBAAgB,IAAI,MAAM,CAAC;IAC3B,iBAAiB,CAAC,eAAe,EAAE,EAAE,GAAG,IAAI,CAAC;IAC7C,qBAAqB,CAAC,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC;IACvF,cAAc,CAAC,eAAe,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IAC/D,qBAAqB,CAAC,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullifiers.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/nullifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,gBAAgB;IAEzB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,kCAAkC;IAClC,OAAO,CAAC,KAAK;IACb,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;;IALxB,+DAA+D;IAC9C,cAAc,EAAE,aAAa;IAC9C,kCAAkC;IAC1B,KAAK,GAAE,GAAG,CAAC,MAAM,CAAa;IACtC,+CAA+C;IAC9B,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"nullifiers.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/nullifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,gBAAgB;IAEzB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,kCAAkC;IAClC,OAAO,CAAC,KAAK;IACb,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;;IALxB,+DAA+D;IAC9C,cAAc,EAAE,aAAa;IAC9C,kCAAkC;IAC1B,KAAK,GAAE,GAAG,CAAC,MAAM,CAAa;IACtC,+CAA+C;IAC9B,MAAM,CAAC,EAAE,gBAAgB,YAAA;IAG5C;;OAEG;IACI,IAAI;IAIX;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;;;;;;;;;OAUG;IACU,WAAW,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAmB9F;;;;OAIG;IACU,MAAM,CAAC,eAAe,EAAE,EAAE;IAQvC;;;;OAIG;IACI,cAAc,CAAC,kBAAkB,EAAE,gBAAgB;CAU3D;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAI5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/public_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAKtB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAP1B,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;;IAGzC,+DAA+D;IAC9C,iBAAiB,EAAE,sBAAsB;IAC1D,qDAAqD;IACpC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/public_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAKtB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAP1B,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;;IAGzC,+DAA+D;IAC9C,iBAAiB,EAAE,sBAAsB;IAC1D,qDAAqD;IACpC,MAAM,CAAC,EAAE,aAAa,YAAA;IAKzC;;OAEG;IACI,IAAI;IAIX;;;;;;;OAOG;IACI,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;IAWhF;;;;;;;;;;OAUG;IACU,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmB5F;;;;;;OAMG;IACI,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAI/D;;;;OAIG;IACI,cAAc,CAAC,qBAAqB,EAAE,aAAa;CAG3D"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
2
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
3
|
import type { ContractClassPublicWithCommitment } from '@aztec/stdlib/contract';
|
|
6
4
|
import { SerializableContractInstance } from '@aztec/stdlib/contract';
|
|
7
|
-
import
|
|
5
|
+
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
8
6
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
9
7
|
import type { TreeSnapshots } from '@aztec/stdlib/tx';
|
|
10
8
|
import type { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
@@ -126,6 +124,11 @@ export declare class PublicPersistableStateManager {
|
|
|
126
124
|
* @param content - Message content.
|
|
127
125
|
*/
|
|
128
126
|
writeL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
|
|
127
|
+
/**
|
|
128
|
+
* Write a scoped L2 to L1 message.
|
|
129
|
+
* @param l2ToL1Message - The L2 to L1 message to write.
|
|
130
|
+
*/
|
|
131
|
+
writeScopedL2ToL1Message(l2ToL1Message: ScopedL2ToL1Message): void;
|
|
129
132
|
/**
|
|
130
133
|
* Write a public log
|
|
131
134
|
* @param contractAddress - address of the contract that emitted the log
|
|
@@ -149,7 +152,6 @@ export declare class PublicPersistableStateManager {
|
|
|
149
152
|
* Get a contract's bytecode from the contracts DB, also trace the contract class and instance indirectly.
|
|
150
153
|
*/
|
|
151
154
|
getBytecode(contractAddress: AztecAddress): Promise<Buffer | undefined>;
|
|
152
|
-
traceEnqueuedCall(publicCallRequest: PublicCallRequest): void;
|
|
153
155
|
getPublicFunctionDebugName(avmEnvironment: AvmExecutionEnvironment): Promise<string>;
|
|
154
156
|
padTree(treeId: MerkleTreeId, leavesToInsert: number): Promise<void>;
|
|
155
157
|
getTreeSnapshots(): Promise<TreeSnapshots>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state_manager.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/state_manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state_manager.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/state_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -218,6 +218,12 @@ import { PublicStorage } from './public_storage.js';
|
|
|
218
218
|
this.trace.traceNewL2ToL1Message(contractAddress, recipient, content);
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
221
|
+
* Write a scoped L2 to L1 message.
|
|
222
|
+
* @param l2ToL1Message - The L2 to L1 message to write.
|
|
223
|
+
*/ writeScopedL2ToL1Message(l2ToL1Message) {
|
|
224
|
+
this.writeL2ToL1Message(l2ToL1Message.contractAddress, l2ToL1Message.message.recipient.toField(), l2ToL1Message.message.content);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
221
227
|
* Write a public log
|
|
222
228
|
* @param contractAddress - address of the contract that emitted the log
|
|
223
229
|
* @param log - log contents
|
|
@@ -325,9 +331,6 @@ import { PublicStorage } from './public_storage.js';
|
|
|
325
331
|
assert(contractClass, `Contract class not found in DB, but a contract instance was found with this class ID (${contractInstance.currentContractClassId}). This should not happen!`);
|
|
326
332
|
return contractClass.packedBytecode;
|
|
327
333
|
}
|
|
328
|
-
traceEnqueuedCall(publicCallRequest) {
|
|
329
|
-
this.trace.traceEnqueuedCall(publicCallRequest);
|
|
330
|
-
}
|
|
331
334
|
async getPublicFunctionDebugName(avmEnvironment) {
|
|
332
335
|
return await getPublicFunctionDebugName(this.contractsDB, avmEnvironment.address, avmEnvironment.calldata);
|
|
333
336
|
}
|
|
@@ -4,13 +4,13 @@ export interface PublicEnqueuedCallMetrics {
|
|
|
4
4
|
fnName: string;
|
|
5
5
|
durationMs: number;
|
|
6
6
|
manaUsed: number;
|
|
7
|
-
|
|
7
|
+
totalInstructionsExecuted: number;
|
|
8
8
|
reverted: boolean;
|
|
9
9
|
}
|
|
10
10
|
export interface PublicTxMetrics {
|
|
11
11
|
totalDurationMs: number;
|
|
12
12
|
manaUsed: number;
|
|
13
|
-
|
|
13
|
+
totalInstructionsExecuted: number;
|
|
14
14
|
txHashMs: number | undefined;
|
|
15
15
|
nonRevertiblePrivateInsertionsUs: number | undefined;
|
|
16
16
|
revertiblePrivateInsertionsUs: number | undefined;
|
|
@@ -32,12 +32,13 @@ export declare class TestExecutorMetrics implements ExecutorMetricsInterface {
|
|
|
32
32
|
constructor();
|
|
33
33
|
startRecordingTxSimulation(txLabel: string): void;
|
|
34
34
|
stopRecordingTxSimulation(txLabel: string, revertedCode?: RevertCode): void;
|
|
35
|
-
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number,
|
|
36
|
-
recordEnqueuedCallSimulationFailure(fnName: string, durationMs: number, manaUsed: number,
|
|
35
|
+
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructionsExecuted: number): void;
|
|
36
|
+
recordEnqueuedCallSimulationFailure(fnName: string, durationMs: number, manaUsed: number, totalInstructionsExecuted: number): void;
|
|
37
37
|
recordTxHashComputation(durationMs: number): void;
|
|
38
38
|
recordPrivateEffectsInsertion(durationUs: number, type: 'revertible' | 'non-revertible'): void;
|
|
39
39
|
prettyPrint(filter?: PublicTxMetricsFilter): void;
|
|
40
40
|
toPrettyString(filter?: PublicTxMetricsFilter): string;
|
|
41
41
|
toJSON(indent?: number): string;
|
|
42
|
+
toGithubActionBenchmarkJSON(indent?: number): string;
|
|
42
43
|
}
|
|
43
44
|
//# sourceMappingURL=test_executor_metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_executor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/test_executor_metrics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"test_executor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/test_executor_metrics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,gCAAgC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrD,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAC3C,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC;CACtC;AAWD,oBAAY,qBAAqB;IAC/B,GAAG,IAAA;IACH,MAAM,IAAA;IACN,SAAS,IAAA;IACT,YAAY,IAAA;CACb;AAED,qBAAa,mBAAoB,YAAW,wBAAwB;;IAClE,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,OAAO,CAAoB;;IAMnC,0BAA0B,CAAC,OAAO,EAAE,MAAM;IAiB1C,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,UAAU;IAkBpE,4BAA4B,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,MAAM;IAKnC,mCAAmC,CACjC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,MAAM;IAuBnC,uBAAuB,CAAC,UAAU,EAAE,MAAM;IAO1C,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB;IAkBvF,WAAW,CAAC,MAAM,GAAE,qBAAiD;IAIrE,cAAc,CAAC,MAAM,GAAE,qBAAiD;IAqExE,MAAM,CAAC,MAAM,SAAI;IAIjB,2BAA2B,CAAC,MAAM,SAAI;CAoCvC"}
|
|
@@ -32,7 +32,7 @@ export class TestExecutorMetrics {
|
|
|
32
32
|
this.txMetrics.set(txLabel, {
|
|
33
33
|
totalDurationMs: 0,
|
|
34
34
|
manaUsed: 0,
|
|
35
|
-
|
|
35
|
+
totalInstructionsExecuted: 0,
|
|
36
36
|
txHashMs: undefined,
|
|
37
37
|
nonRevertiblePrivateInsertionsUs: undefined,
|
|
38
38
|
revertiblePrivateInsertionsUs: undefined,
|
|
@@ -50,25 +50,25 @@ export class TestExecutorMetrics {
|
|
|
50
50
|
this.logger.debug(`Public TX simulation of ${txLabel} took ${txMetrics.totalDurationMs}ms`);
|
|
51
51
|
// add manaUsed across all enqueued calls
|
|
52
52
|
txMetrics.manaUsed = sum(txMetrics.enqueuedCalls.map((call)=>call.manaUsed));
|
|
53
|
-
// add
|
|
54
|
-
txMetrics.
|
|
53
|
+
// add totalInstructionsExecuted across all enqueued calls
|
|
54
|
+
txMetrics.totalInstructionsExecuted = sum(txMetrics.enqueuedCalls.map((call)=>call.totalInstructionsExecuted));
|
|
55
55
|
txMetrics.revertedCode = revertedCode;
|
|
56
56
|
this.currentTxLabel = undefined;
|
|
57
57
|
}
|
|
58
|
-
recordEnqueuedCallSimulation(fnName, durationMs, manaUsed,
|
|
59
|
-
this.#recordEnqueuedCallSimulation(fnName, durationMs, manaUsed,
|
|
58
|
+
recordEnqueuedCallSimulation(fnName, durationMs, manaUsed, totalInstructionsExecuted) {
|
|
59
|
+
this.#recordEnqueuedCallSimulation(fnName, durationMs, manaUsed, totalInstructionsExecuted, false);
|
|
60
60
|
}
|
|
61
|
-
recordEnqueuedCallSimulationFailure(fnName, durationMs, manaUsed,
|
|
62
|
-
this.#recordEnqueuedCallSimulation(fnName, durationMs, manaUsed,
|
|
61
|
+
recordEnqueuedCallSimulationFailure(fnName, durationMs, manaUsed, totalInstructionsExecuted) {
|
|
62
|
+
this.#recordEnqueuedCallSimulation(fnName, durationMs, manaUsed, totalInstructionsExecuted, true);
|
|
63
63
|
}
|
|
64
|
-
#recordEnqueuedCallSimulation(fnName, durationMs, manaUsed,
|
|
64
|
+
#recordEnqueuedCallSimulation(fnName, durationMs, manaUsed, totalInstructionsExecuted, reverted) {
|
|
65
65
|
assert(this.currentTxLabel, 'Cannot record enqueued call simulation when no tx is live');
|
|
66
66
|
const txMetrics = this.txMetrics.get(this.currentTxLabel);
|
|
67
67
|
txMetrics.enqueuedCalls.push({
|
|
68
68
|
fnName,
|
|
69
69
|
durationMs,
|
|
70
70
|
manaUsed,
|
|
71
|
-
|
|
71
|
+
totalInstructionsExecuted: totalInstructionsExecuted,
|
|
72
72
|
reverted
|
|
73
73
|
});
|
|
74
74
|
}
|
|
@@ -108,7 +108,7 @@ export class TestExecutorMetrics {
|
|
|
108
108
|
pretty += `${INDENT0}Mana per second: ${fmtNum(manaPerSecond)}\n`;
|
|
109
109
|
}
|
|
110
110
|
if (filter === 3 || filter === 1 || filter === 0) {
|
|
111
|
-
pretty += `${INDENT0}Total instructions executed: ${fmtNum(txMetrics.
|
|
111
|
+
pretty += `${INDENT0}Total instructions executed: ${fmtNum(txMetrics.totalInstructionsExecuted)}\n`;
|
|
112
112
|
}
|
|
113
113
|
if (filter === 2 || filter === 0) {
|
|
114
114
|
pretty += `${INDENT0}Tx hash computation: ${fmtNum(txMetrics.txHashMs, 'ms')}\n`;
|
|
@@ -141,7 +141,7 @@ export class TestExecutorMetrics {
|
|
|
141
141
|
pretty += `${INDENT2}Mana per second: ${fmtNum(manaPerSecond)}\n`;
|
|
142
142
|
}
|
|
143
143
|
if (filter === 3 || filter === 0) {
|
|
144
|
-
pretty += `${INDENT2}Instructions executed: ${fmtNum(enqueuedCall.
|
|
144
|
+
pretty += `${INDENT2}Instructions executed: ${fmtNum(enqueuedCall.totalInstructionsExecuted)}\n`;
|
|
145
145
|
}
|
|
146
146
|
if (enqueuedCall.reverted) {
|
|
147
147
|
pretty += `${INDENT2}Reverted!\n`;
|
|
@@ -152,6 +152,42 @@ export class TestExecutorMetrics {
|
|
|
152
152
|
toJSON(indent = 2) {
|
|
153
153
|
return JSON.stringify(Object.fromEntries(this.txMetrics.entries()), null, indent);
|
|
154
154
|
}
|
|
155
|
+
toGithubActionBenchmarkJSON(indent = 2) {
|
|
156
|
+
const data = [];
|
|
157
|
+
for (const [txLabel, txMetrics] of this.txMetrics.entries()){
|
|
158
|
+
data.push({
|
|
159
|
+
name: `${txLabel}/totalInstructionsExecuted`,
|
|
160
|
+
value: txMetrics.totalInstructionsExecuted,
|
|
161
|
+
unit: '#instructions'
|
|
162
|
+
});
|
|
163
|
+
data.push({
|
|
164
|
+
name: `${txLabel}/totalDurationMs`,
|
|
165
|
+
value: txMetrics.totalDurationMs,
|
|
166
|
+
unit: 'ms'
|
|
167
|
+
});
|
|
168
|
+
data.push({
|
|
169
|
+
name: `${txLabel}/manaUsed`,
|
|
170
|
+
value: txMetrics.manaUsed,
|
|
171
|
+
unit: 'mana'
|
|
172
|
+
});
|
|
173
|
+
data.push({
|
|
174
|
+
name: `${txLabel}/txHashMs`,
|
|
175
|
+
value: txMetrics.txHashMs,
|
|
176
|
+
unit: 'ms'
|
|
177
|
+
});
|
|
178
|
+
data.push({
|
|
179
|
+
name: `${txLabel}/nonRevertiblePrivateInsertionsUs`,
|
|
180
|
+
value: txMetrics.nonRevertiblePrivateInsertionsUs,
|
|
181
|
+
unit: 'us'
|
|
182
|
+
});
|
|
183
|
+
data.push({
|
|
184
|
+
name: `${txLabel}/revertiblePrivateInsertionsUs`,
|
|
185
|
+
value: txMetrics.revertiblePrivateInsertionsUs,
|
|
186
|
+
unit: 'us'
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return JSON.stringify(data, null, indent);
|
|
190
|
+
}
|
|
155
191
|
}
|
|
156
192
|
function fmtNum(num, unit) {
|
|
157
193
|
return `\`${num.toLocaleString()}${unit ? ` ${unit}` : ''}\``;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unique_class_ids.d.ts","sourceRoot":"","sources":["../../src/public/unique_class_ids.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,cAAc;IAGb,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAFpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;gBAEtB,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"unique_class_ids.d.ts","sourceRoot":"","sources":["../../src/public/unique_class_ids.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,cAAc;IAGb,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAFpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;gBAEtB,MAAM,CAAC,EAAE,cAAc,YAAA;IAEpD;;OAEG;IACI,IAAI;IAIX;;;;;OAKG;IACI,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWpC;;OAEG;IACI,IAAI,IAAI,MAAM;IAIrB;;;;OAIG;IACI,GAAG,CAAC,OAAO,EAAE,MAAM;IAW1B;;;;OAIG;IACI,cAAc,CAAC,QAAQ,EAAE,cAAc;CAc/C"}
|
package/dest/test/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAW,aAAa,EAAW,MAAM,yBAAyB,CAAC;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAW,aAAa,EAAW,MAAM,yBAAyB,CAAC;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,iBAAiB,EAAE,EAAE,EACrB,gBAAgB,YAAY,EAC5B,QAAQ,EAAE,EACV,UAAU,EAAE,GAAG,MAAM,2BAetB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.87.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/server.js",
|
|
@@ -58,33 +58,34 @@
|
|
|
58
58
|
]
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@aztec/constants": "0.
|
|
62
|
-
"@aztec/foundation": "0.
|
|
63
|
-
"@aztec/noir-acvm_js": "0.
|
|
64
|
-
"@aztec/noir-noirc_abi": "0.
|
|
65
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
66
|
-
"@aztec/noir-types": "0.
|
|
67
|
-
"@aztec/protocol-contracts": "0.
|
|
68
|
-
"@aztec/stdlib": "0.
|
|
69
|
-
"@aztec/telemetry-client": "0.
|
|
70
|
-
"@aztec/world-state": "0.
|
|
61
|
+
"@aztec/constants": "0.87.0",
|
|
62
|
+
"@aztec/foundation": "0.87.0",
|
|
63
|
+
"@aztec/noir-acvm_js": "0.87.0",
|
|
64
|
+
"@aztec/noir-noirc_abi": "0.87.0",
|
|
65
|
+
"@aztec/noir-protocol-circuits-types": "0.87.0",
|
|
66
|
+
"@aztec/noir-types": "0.87.0",
|
|
67
|
+
"@aztec/protocol-contracts": "0.87.0",
|
|
68
|
+
"@aztec/stdlib": "0.87.0",
|
|
69
|
+
"@aztec/telemetry-client": "0.87.0",
|
|
70
|
+
"@aztec/world-state": "0.87.0",
|
|
71
71
|
"lodash.clonedeep": "^4.5.0",
|
|
72
72
|
"lodash.merge": "^4.6.2",
|
|
73
73
|
"tslib": "^2.4.0"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
|
-
"@aztec/kv-store": "0.
|
|
77
|
-
"@aztec/merkle-tree": "0.
|
|
78
|
-
"@aztec/noir-contracts.js": "0.
|
|
76
|
+
"@aztec/kv-store": "0.87.0",
|
|
77
|
+
"@aztec/merkle-tree": "0.87.0",
|
|
78
|
+
"@aztec/noir-contracts.js": "0.87.0",
|
|
79
|
+
"@aztec/noir-test-contracts.js": "0.87.0",
|
|
79
80
|
"@jest/globals": "^29.5.0",
|
|
80
81
|
"@types/jest": "^29.5.0",
|
|
81
82
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
82
83
|
"@types/lodash.merge": "^4.6.9",
|
|
83
|
-
"@types/node": "^
|
|
84
|
+
"@types/node": "^22.15.17",
|
|
84
85
|
"jest": "^29.5.0",
|
|
85
86
|
"jest-mock-extended": "^3.0.4",
|
|
86
87
|
"ts-node": "^10.9.1",
|
|
87
|
-
"typescript": "^5.
|
|
88
|
+
"typescript": "^5.3.3",
|
|
88
89
|
"viem": "2.23.7"
|
|
89
90
|
},
|
|
90
91
|
"files": [
|
|
@@ -94,6 +95,6 @@
|
|
|
94
95
|
],
|
|
95
96
|
"types": "./dest/index.d.ts",
|
|
96
97
|
"engines": {
|
|
97
|
-
"node": ">=
|
|
98
|
+
"node": ">=20.10"
|
|
98
99
|
}
|
|
99
100
|
}
|