@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
|
@@ -7,8 +7,8 @@ class ExternalCall extends Instruction {
|
|
|
7
7
|
l2GasOffset;
|
|
8
8
|
daGasOffset;
|
|
9
9
|
addrOffset;
|
|
10
|
-
argsOffset;
|
|
11
10
|
argsSizeOffset;
|
|
11
|
+
argsOffset;
|
|
12
12
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
13
13
|
static wireFormat = [
|
|
14
14
|
OperandType.UINT8,
|
|
@@ -19,20 +19,20 @@ class ExternalCall extends Instruction {
|
|
|
19
19
|
OperandType.UINT16,
|
|
20
20
|
OperandType.UINT16
|
|
21
21
|
];
|
|
22
|
-
constructor(indirect, l2GasOffset, daGasOffset, addrOffset,
|
|
23
|
-
super(), this.indirect = indirect, this.l2GasOffset = l2GasOffset, this.daGasOffset = daGasOffset, this.addrOffset = addrOffset, this.
|
|
22
|
+
constructor(indirect, l2GasOffset, daGasOffset, addrOffset, argsSizeOffset, argsOffset){
|
|
23
|
+
super(), this.indirect = indirect, this.l2GasOffset = l2GasOffset, this.daGasOffset = daGasOffset, this.addrOffset = addrOffset, this.argsSizeOffset = argsSizeOffset, this.argsOffset = argsOffset;
|
|
24
24
|
}
|
|
25
25
|
async execute(context) {
|
|
26
26
|
const memory = context.machineState.memory;
|
|
27
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
27
28
|
const operands = [
|
|
28
29
|
this.l2GasOffset,
|
|
29
30
|
this.daGasOffset,
|
|
30
31
|
this.addrOffset,
|
|
31
|
-
this.
|
|
32
|
-
this.
|
|
32
|
+
this.argsSizeOffset,
|
|
33
|
+
this.argsOffset
|
|
33
34
|
];
|
|
34
|
-
const
|
|
35
|
-
const [l2GasOffset, daGasOffset, addrOffset, argsOffset, argsSizeOffset] = addressing.resolve(operands, memory);
|
|
35
|
+
const [l2GasOffset, daGasOffset, addrOffset, argsSizeOffset, argsOffset] = addressing.resolve(operands, memory);
|
|
36
36
|
// TODO: Should be U32
|
|
37
37
|
memory.checkTags(TypeTag.FIELD, l2GasOffset);
|
|
38
38
|
memory.checkTags(TypeTag.FIELD, daGasOffset);
|
|
@@ -120,10 +120,10 @@ export class SuccessCopy extends Instruction {
|
|
|
120
120
|
}
|
|
121
121
|
async execute(context) {
|
|
122
122
|
const memory = context.machineState.memory;
|
|
123
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
123
124
|
const operands = [
|
|
124
125
|
this.dstOffset
|
|
125
126
|
];
|
|
126
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
127
127
|
const [dstOffset] = addressing.resolve(operands, memory);
|
|
128
128
|
// Use the direct success tracking property
|
|
129
129
|
const success = context.machineState.nestedCallSuccess;
|
|
@@ -133,8 +133,8 @@ export class SuccessCopy extends Instruction {
|
|
|
133
133
|
}
|
|
134
134
|
export class Return extends Instruction {
|
|
135
135
|
indirect;
|
|
136
|
-
returnOffset;
|
|
137
136
|
returnSizeOffset;
|
|
137
|
+
returnOffset;
|
|
138
138
|
static type = 'RETURN';
|
|
139
139
|
static opcode = Opcode.RETURN;
|
|
140
140
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
@@ -144,17 +144,17 @@ export class Return extends Instruction {
|
|
|
144
144
|
OperandType.UINT16,
|
|
145
145
|
OperandType.UINT16
|
|
146
146
|
];
|
|
147
|
-
constructor(indirect,
|
|
148
|
-
super(), this.indirect = indirect, this.
|
|
147
|
+
constructor(indirect, returnSizeOffset, returnOffset){
|
|
148
|
+
super(), this.indirect = indirect, this.returnSizeOffset = returnSizeOffset, this.returnOffset = returnOffset;
|
|
149
149
|
}
|
|
150
150
|
async execute(context) {
|
|
151
151
|
const memory = context.machineState.memory;
|
|
152
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
152
153
|
const operands = [
|
|
153
|
-
this.
|
|
154
|
-
this.
|
|
154
|
+
this.returnSizeOffset,
|
|
155
|
+
this.returnOffset
|
|
155
156
|
];
|
|
156
|
-
const
|
|
157
|
-
const [returnOffset, returnSizeOffset] = addressing.resolve(operands, memory);
|
|
157
|
+
const [returnSizeOffset, returnOffset] = addressing.resolve(operands, memory);
|
|
158
158
|
memory.checkTag(TypeTag.UINT32, returnSizeOffset);
|
|
159
159
|
const returnSize = memory.get(returnSizeOffset).toNumber();
|
|
160
160
|
context.machineState.consumeGas(this.gasCost(returnSize));
|
|
@@ -167,8 +167,8 @@ export class Return extends Instruction {
|
|
|
167
167
|
}
|
|
168
168
|
export class Revert extends Instruction {
|
|
169
169
|
indirect;
|
|
170
|
-
returnOffset;
|
|
171
170
|
retSizeOffset;
|
|
171
|
+
returnOffset;
|
|
172
172
|
static type = 'REVERT';
|
|
173
173
|
static opcode = Opcode.REVERT_8;
|
|
174
174
|
static wireFormat8 = [
|
|
@@ -183,17 +183,17 @@ export class Revert extends Instruction {
|
|
|
183
183
|
OperandType.UINT16,
|
|
184
184
|
OperandType.UINT16
|
|
185
185
|
];
|
|
186
|
-
constructor(indirect,
|
|
187
|
-
super(), this.indirect = indirect, this.
|
|
186
|
+
constructor(indirect, retSizeOffset, returnOffset){
|
|
187
|
+
super(), this.indirect = indirect, this.retSizeOffset = retSizeOffset, this.returnOffset = returnOffset;
|
|
188
188
|
}
|
|
189
189
|
async execute(context) {
|
|
190
190
|
const memory = context.machineState.memory;
|
|
191
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
191
192
|
const operands = [
|
|
192
|
-
this.
|
|
193
|
-
this.
|
|
193
|
+
this.retSizeOffset,
|
|
194
|
+
this.returnOffset
|
|
194
195
|
];
|
|
195
|
-
const
|
|
196
|
-
const [returnOffset, retSizeOffset] = addressing.resolve(operands, memory);
|
|
196
|
+
const [retSizeOffset, returnOffset] = addressing.resolve(operands, memory);
|
|
197
197
|
memory.checkTag(TypeTag.UINT32, retSizeOffset);
|
|
198
198
|
const retSize = memory.get(retSizeOffset).toNumber();
|
|
199
199
|
context.machineState.consumeGas(this.gasCost(retSize));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashing.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/hashing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,SAAU,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"hashing.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/hashing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,SAAU,SAAQ,WAAW;IActC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,iBAAiB;IAf3B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAClD,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK;IAG9B,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM;IAKtB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzD;AAED,qBAAa,WAAY,SAAQ,WAAW;IAaxC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IAdrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAiB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAsB;IAGpD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM;IAMhB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBzD;AAED,qBAAa,iBAAkB,SAAQ,WAAW;IAc9C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,YAAY;IAhBtB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAuB;IAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA4B;IAG1D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAMvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM;IAKjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAwBzD"}
|
|
@@ -22,12 +22,12 @@ export class Poseidon2 extends Instruction {
|
|
|
22
22
|
}
|
|
23
23
|
async execute(context) {
|
|
24
24
|
const memory = context.machineState.memory;
|
|
25
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
25
26
|
context.machineState.consumeGas(this.gasCost());
|
|
26
27
|
const operands = [
|
|
27
28
|
this.inputStateOffset,
|
|
28
29
|
this.outputStateOffset
|
|
29
30
|
];
|
|
30
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
31
31
|
const [inputOffset, outputOffset] = addressing.resolve(operands, memory);
|
|
32
32
|
const inputState = memory.getSlice(inputOffset, Poseidon2.stateSize);
|
|
33
33
|
memory.checkTagsRange(TypeTag.FIELD, inputOffset, Poseidon2.stateSize);
|
|
@@ -55,11 +55,11 @@ export class KeccakF1600 extends Instruction {
|
|
|
55
55
|
async execute(context) {
|
|
56
56
|
const inputSize = 25;
|
|
57
57
|
const memory = context.machineState.memory;
|
|
58
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
58
59
|
const operands = [
|
|
59
60
|
this.dstOffset,
|
|
60
61
|
this.inputOffset
|
|
61
62
|
];
|
|
62
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
63
63
|
const [dstOffset, inputOffset] = addressing.resolve(operands, memory);
|
|
64
64
|
context.machineState.consumeGas(this.gasCost());
|
|
65
65
|
const stateData = memory.getSlice(inputOffset, inputSize).map((word)=>word.toBigInt());
|
|
@@ -91,12 +91,12 @@ export class Sha256Compression extends Instruction {
|
|
|
91
91
|
const STATE_SIZE = 8;
|
|
92
92
|
const INPUTS_SIZE = 16;
|
|
93
93
|
const memory = context.machineState.memory;
|
|
94
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
94
95
|
const operands = [
|
|
95
96
|
this.outputOffset,
|
|
96
97
|
this.stateOffset,
|
|
97
98
|
this.inputsOffset
|
|
98
99
|
];
|
|
99
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
100
100
|
const [outputOffset, stateOffset, inputsOffset] = addressing.resolve(operands, memory);
|
|
101
101
|
// Note: size of output is same as size of state
|
|
102
102
|
context.machineState.consumeGas(this.gasCost());
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import type { Bufferable } from '@aztec/foundation/serialize';
|
|
4
2
|
import type { AvmContext } from '../avm_context.js';
|
|
5
3
|
import { type Gas } from '../avm_gas.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/instruction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/instruction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,GAAG,EAAqD,MAAM,eAAe,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAA4B,MAAM,+CAA+C,CAAC;AAEnH,KAAK,sBAAsB,GAAG;IAC5B,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,8BAAsB,WAAW;IAC/B;;;;OAIG;aACa,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAE3D;;OAEG;IACI,SAAS,IAAI,OAAO;IAI3B;;;;OAIG;IACI,QAAQ,IAAI,MAAM;WAUX,UAAU,CACtB,IAAI,EAAE,sBAAsB,GAAG;QAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QAAC,EAAE,EAAE,GAAG,CAAA;KAAE,EACrE,GAAG,EAAE,YAAY,GAAG,MAAM,GACzB,WAAW;IAKP,QAAQ,IAAI,MAAM;IAOzB;;;;;OAKG;IACI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,WAAW,GAAG,UAAU;IAS9E;;;;;OAKG;WACW,EAAE,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,WAAW,EAAE;0BAElD,YAAY,GAAG,MAAM,KAAG,WAAW;;IAQzD;;;OAGG;IACH,SAAS,CAAC,OAAO,CAAC,aAAa,GAAE,MAAU,GAAG,GAAG;IAMjD;;;OAGG;IACH,IAAW,IAAI,IAAI,MAAM,CAMxB;IAED;;;OAGG;IACH,IAAW,MAAM,IAAI,MAAM,CAM1B;CACF"}
|
|
@@ -42,13 +42,13 @@ export declare class Mov extends Instruction {
|
|
|
42
42
|
}
|
|
43
43
|
export declare class CalldataCopy extends Instruction {
|
|
44
44
|
private indirect;
|
|
45
|
-
private cdStartOffset;
|
|
46
45
|
private copySizeOffset;
|
|
46
|
+
private cdStartOffset;
|
|
47
47
|
private dstOffset;
|
|
48
48
|
static readonly type: string;
|
|
49
49
|
static readonly opcode: Opcode;
|
|
50
50
|
static readonly wireFormat: OperandType[];
|
|
51
|
-
constructor(indirect: number,
|
|
51
|
+
constructor(indirect: number, copySizeOffset: number, cdStartOffset: number, dstOffset: number);
|
|
52
52
|
execute(context: AvmContext): Promise<void>;
|
|
53
53
|
}
|
|
54
54
|
export declare class ReturndataSize extends Instruction {
|
|
@@ -62,13 +62,13 @@ export declare class ReturndataSize extends Instruction {
|
|
|
62
62
|
}
|
|
63
63
|
export declare class ReturndataCopy extends Instruction {
|
|
64
64
|
private indirect;
|
|
65
|
-
private rdStartOffset;
|
|
66
65
|
private copySizeOffset;
|
|
66
|
+
private rdStartOffset;
|
|
67
67
|
private dstOffset;
|
|
68
68
|
static readonly type: string;
|
|
69
69
|
static readonly opcode: Opcode;
|
|
70
70
|
static readonly wireFormat: OperandType[];
|
|
71
|
-
constructor(indirect: number,
|
|
71
|
+
constructor(indirect: number, copySizeOffset: number, rdStartOffset: number, dstOffset: number);
|
|
72
72
|
execute(context: AvmContext): Promise<void>;
|
|
73
73
|
}
|
|
74
74
|
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,GAAI,SAAQ,WAAW;IAiDhC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,KAAK;IAnDf,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IAErC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAgB;IAE9C,gBAAuB,WAAW,EAAE,WAAW,EAAE,CAM/C;IACF,gBAAuB,YAAY,EAAE,WAAW,EAAE,CAMhD;IACF,gBAAuB,YAAY,EAAE,WAAW,EAAE,CAMhD;IACF,gBAAuB,YAAY,EAAE,WAAW,EAAE,CAMhD;IACF,gBAAuB,aAAa,EAAE,WAAW,EAAE,CAMjD;IACF,gBAAuB,YAAY,EAAE,WAAW,EAAE,CAMhD;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,MAAM;IAKnB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,11 +59,11 @@ export class Set extends Instruction {
|
|
|
59
59
|
// Constructor ensured that this.inTag is a valid tag
|
|
60
60
|
const res = TaggedMemory.buildFromTagTruncating(this.value, this.inTag);
|
|
61
61
|
const memory = context.machineState.memory;
|
|
62
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
62
63
|
context.machineState.consumeGas(this.gasCost());
|
|
63
64
|
const operands = [
|
|
64
65
|
this.dstOffset
|
|
65
66
|
];
|
|
66
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
67
67
|
const [dstOffset] = addressing.resolve(operands, memory);
|
|
68
68
|
memory.set(dstOffset, res);
|
|
69
69
|
}
|
|
@@ -94,12 +94,12 @@ export class Cast extends Instruction {
|
|
|
94
94
|
}
|
|
95
95
|
async execute(context) {
|
|
96
96
|
const memory = context.machineState.memory;
|
|
97
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
97
98
|
context.machineState.consumeGas(this.gasCost());
|
|
98
99
|
const operands = [
|
|
99
100
|
this.srcOffset,
|
|
100
101
|
this.dstOffset
|
|
101
102
|
];
|
|
102
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
103
103
|
const [srcOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
104
104
|
const a = memory.get(srcOffset);
|
|
105
105
|
// Constructor ensured that this.dstTag is a valid tag
|
|
@@ -131,12 +131,12 @@ export class Mov extends Instruction {
|
|
|
131
131
|
}
|
|
132
132
|
async execute(context) {
|
|
133
133
|
const memory = context.machineState.memory;
|
|
134
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
134
135
|
context.machineState.consumeGas(this.gasCost());
|
|
135
136
|
const operands = [
|
|
136
137
|
this.srcOffset,
|
|
137
138
|
this.dstOffset
|
|
138
139
|
];
|
|
139
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
140
140
|
const [srcOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
141
141
|
const a = memory.get(srcOffset);
|
|
142
142
|
memory.set(dstOffset, a);
|
|
@@ -144,8 +144,8 @@ export class Mov extends Instruction {
|
|
|
144
144
|
}
|
|
145
145
|
export class CalldataCopy extends Instruction {
|
|
146
146
|
indirect;
|
|
147
|
-
cdStartOffset;
|
|
148
147
|
copySizeOffset;
|
|
148
|
+
cdStartOffset;
|
|
149
149
|
dstOffset;
|
|
150
150
|
static type = 'CALLDATACOPY';
|
|
151
151
|
static opcode = Opcode.CALLDATACOPY;
|
|
@@ -157,18 +157,18 @@ export class CalldataCopy extends Instruction {
|
|
|
157
157
|
OperandType.UINT16,
|
|
158
158
|
OperandType.UINT16
|
|
159
159
|
];
|
|
160
|
-
constructor(indirect,
|
|
161
|
-
super(), this.indirect = indirect, this.
|
|
160
|
+
constructor(indirect, copySizeOffset, cdStartOffset, dstOffset){
|
|
161
|
+
super(), this.indirect = indirect, this.copySizeOffset = copySizeOffset, this.cdStartOffset = cdStartOffset, this.dstOffset = dstOffset;
|
|
162
162
|
}
|
|
163
163
|
async execute(context) {
|
|
164
164
|
const memory = context.machineState.memory;
|
|
165
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
165
166
|
const operands = [
|
|
166
|
-
this.cdStartOffset,
|
|
167
167
|
this.copySizeOffset,
|
|
168
|
+
this.cdStartOffset,
|
|
168
169
|
this.dstOffset
|
|
169
170
|
];
|
|
170
|
-
const
|
|
171
|
-
const [cdStartOffset, copySizeOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
171
|
+
const [copySizeOffset, cdStartOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
172
172
|
memory.checkTags(TypeTag.UINT32, cdStartOffset, copySizeOffset);
|
|
173
173
|
const cdStart = memory.get(cdStartOffset).toNumber();
|
|
174
174
|
const copySize = memory.get(copySizeOffset).toNumber();
|
|
@@ -199,10 +199,10 @@ export class ReturndataSize extends Instruction {
|
|
|
199
199
|
}
|
|
200
200
|
async execute(context) {
|
|
201
201
|
const memory = context.machineState.memory;
|
|
202
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
202
203
|
const operands = [
|
|
203
204
|
this.dstOffset
|
|
204
205
|
];
|
|
205
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
206
206
|
const [dstOffset] = addressing.resolve(operands, memory);
|
|
207
207
|
context.machineState.consumeGas(this.gasCost());
|
|
208
208
|
memory.set(dstOffset, new Uint32(context.machineState.nestedReturndata.length));
|
|
@@ -210,8 +210,8 @@ export class ReturndataSize extends Instruction {
|
|
|
210
210
|
}
|
|
211
211
|
export class ReturndataCopy extends Instruction {
|
|
212
212
|
indirect;
|
|
213
|
-
rdStartOffset;
|
|
214
213
|
copySizeOffset;
|
|
214
|
+
rdStartOffset;
|
|
215
215
|
dstOffset;
|
|
216
216
|
static type = 'RETURNDATACOPY';
|
|
217
217
|
static opcode = Opcode.RETURNDATACOPY;
|
|
@@ -223,18 +223,18 @@ export class ReturndataCopy extends Instruction {
|
|
|
223
223
|
OperandType.UINT16,
|
|
224
224
|
OperandType.UINT16
|
|
225
225
|
];
|
|
226
|
-
constructor(indirect,
|
|
227
|
-
super(), this.indirect = indirect, this.
|
|
226
|
+
constructor(indirect, copySizeOffset, rdStartOffset, dstOffset){
|
|
227
|
+
super(), this.indirect = indirect, this.copySizeOffset = copySizeOffset, this.rdStartOffset = rdStartOffset, this.dstOffset = dstOffset;
|
|
228
228
|
}
|
|
229
229
|
async execute(context) {
|
|
230
230
|
const memory = context.machineState.memory;
|
|
231
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
231
232
|
const operands = [
|
|
232
|
-
this.rdStartOffset,
|
|
233
233
|
this.copySizeOffset,
|
|
234
|
+
this.rdStartOffset,
|
|
234
235
|
this.dstOffset
|
|
235
236
|
];
|
|
236
|
-
const
|
|
237
|
-
const [rdStartOffset, copySizeOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
237
|
+
const [copySizeOffset, rdStartOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
238
238
|
memory.checkTags(TypeTag.UINT32, rdStartOffset, copySizeOffset);
|
|
239
239
|
const rdStart = memory.get(rdStartOffset).toNumber();
|
|
240
240
|
const copySize = memory.get(copySizeOffset).toNumber();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/misc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,QAAS,SAAQ,WAAW;IAgBrC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IAnBrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAc;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IACjD,MAAM,CAAC,QAAQ,CAAC,MAAM,yCAA2C;IAGjE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAOvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM;IAKhB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/misc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,QAAS,SAAQ,WAAW;IAgBrC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IAnBrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAc;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IACjD,MAAM,CAAC,QAAQ,CAAC,MAAM,yCAA2C;IAGjE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAOvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM;IAKhB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAkCzD"}
|
|
@@ -26,23 +26,30 @@ export class DebugLog extends Instruction {
|
|
|
26
26
|
}
|
|
27
27
|
async execute(context) {
|
|
28
28
|
const memory = context.machineState.memory;
|
|
29
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
29
30
|
const operands = [
|
|
30
31
|
this.messageOffset,
|
|
31
32
|
this.fieldsOffset,
|
|
32
33
|
this.fieldsSizeOffset
|
|
33
34
|
];
|
|
34
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
35
35
|
const [messageOffset, fieldsOffset, fieldsSizeOffset] = addressing.resolve(operands, memory);
|
|
36
36
|
memory.checkTag(TypeTag.UINT32, fieldsSizeOffset);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
// DebugLog is a no-op except when doing client-initiated simulation with debug logging enabled.
|
|
38
|
+
// Note that we still do address resolution and basic tag-checking (above)
|
|
39
|
+
// To avoid a special-case in the witness generator and circuit.
|
|
40
|
+
if (context.environment.clientInitiatedSimulation && DebugLog.logger.isLevelEnabled('verbose')) {
|
|
41
|
+
const fieldsSize = memory.get(fieldsSizeOffset).toNumber();
|
|
42
|
+
const rawMessage = memory.getSlice(messageOffset, this.messageSize);
|
|
43
|
+
const fields = memory.getSlice(fieldsOffset, fieldsSize);
|
|
44
|
+
memory.checkTagsRange(TypeTag.UINT8, messageOffset, this.messageSize);
|
|
45
|
+
memory.checkTagsRange(TypeTag.FIELD, fieldsOffset, fieldsSize);
|
|
46
|
+
// Interpret str<N> = [u8; N] to string.
|
|
47
|
+
const messageAsStr = rawMessage.map((field)=>String.fromCharCode(field.toNumber())).join('');
|
|
48
|
+
const formattedStr = applyStringFormatting(messageAsStr, fields.map((field)=>field.toFr()));
|
|
49
|
+
DebugLog.logger.verbose(formattedStr);
|
|
50
|
+
}
|
|
51
|
+
// Despite having dynamic "size" operands, the gas cost is fixed because
|
|
52
|
+
// this opcode is a no-op except during client-initiated simulation
|
|
53
|
+
context.machineState.consumeGas(this.gasCost());
|
|
47
54
|
}
|
|
48
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,sBAAuB,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,sBAAuB,SAAQ,WAAW;IAUrD,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAC,OAAO,EAAE,MAAM;IAV3B,gBAAuB,UAAU,EAAE,WAAW,EAAE,CAK9C;gBAGU,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,MAAO,SAAQ,sBAAsB;IAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB;gBAE3B,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAItD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzD;AAED,qBAAa,KAAM,SAAQ,sBAAsB;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;gBAE1B,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAItD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAczD"}
|
|
@@ -29,12 +29,12 @@ export class SStore extends BaseStorageInstruction {
|
|
|
29
29
|
throw new StaticCallAlterationError();
|
|
30
30
|
}
|
|
31
31
|
const memory = context.machineState.memory;
|
|
32
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
32
33
|
context.machineState.consumeGas(this.gasCost());
|
|
33
34
|
const operands = [
|
|
34
35
|
this.aOffset,
|
|
35
36
|
this.bOffset
|
|
36
37
|
];
|
|
37
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
38
38
|
const [srcOffset, slotOffset] = addressing.resolve(operands, memory);
|
|
39
39
|
memory.checkTag(TypeTag.FIELD, slotOffset);
|
|
40
40
|
memory.checkTag(TypeTag.FIELD, srcOffset);
|
|
@@ -51,12 +51,12 @@ export class SLoad extends BaseStorageInstruction {
|
|
|
51
51
|
}
|
|
52
52
|
async execute(context) {
|
|
53
53
|
const memory = context.machineState.memory;
|
|
54
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
54
55
|
context.machineState.consumeGas(this.gasCost());
|
|
55
56
|
const operands = [
|
|
56
57
|
this.aOffset,
|
|
57
58
|
this.bOffset
|
|
58
59
|
];
|
|
59
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
60
60
|
const [slotOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
61
61
|
memory.checkTag(TypeTag.FIELD, slotOffset);
|
|
62
62
|
const slot = memory.get(slotOffset).toFr();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer_cursor.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/buffer_cursor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"buffer_cursor.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/buffer_cursor.ts"],"names":[],"mappings":"AAGA,qBAAa,YAAY;IAErB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;gBADT,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAU;IAGxB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;IAIhB,GAAG,IAAI,OAAO;IAId,gBAAgB,IAAI,MAAM;IAI1B,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIxB,SAAS,IAAI,MAAM;IAKnB,SAAS,IAAI,MAAM;IAMnB,YAAY,IAAI,MAAM;IAMtB,YAAY,IAAI,MAAM;IAMtB,YAAY,IAAI,MAAM;IAMtB,YAAY,IAAI,MAAM;IAMtB,cAAc,IAAI,MAAM;IAMxB,cAAc,IAAI,MAAM;IAMxB,UAAU,CAAC,CAAC,EAAE,MAAM;IAMpB,aAAa,CAAC,CAAC,EAAE,MAAM;IAMvB,aAAa,CAAC,CAAC,EAAE,MAAM;IAMvB,aAAa,CAAC,CAAC,EAAE,MAAM;IAMvB,aAAa,CAAC,CAAC,EAAE,MAAM;IAMvB,eAAe,CAAC,CAAC,EAAE,MAAM;IAMzB,eAAe,CAAC,CAAC,EAAE,MAAM;CAKjC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import { type Bufferable } from '@aztec/foundation/serialize';
|
|
4
2
|
import { Instruction } from '../opcodes/index.js';
|
|
5
3
|
import { BufferCursor } from './buffer_cursor.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytecode_serialization.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/bytecode_serialization.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bytecode_serialization.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/bytecode_serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAGjF,OAAO,EAgBL,WAAW,EAgCZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAoB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,KAAK,WAAW,CAAC;AAElF,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,uBAAuB,CAAC;CACtC;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAClE,eAAO,MAAM,eAAe,sCAoF1B,CAAC;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,CAEnE;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAE,cAAgC,GAAG,WAAW,EAAE,CASpH;AAGD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,cAAc,GAAE,cAAgC,GAC/C,CAAC,WAAW,EAAE,MAAM,CAAC,CA+BvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction_serialization.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/instruction_serialization.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instruction_serialization.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/instruction_serialization.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;GAGG;AACH,oBAAY,MAAM;IAEhB,KAAK,IAAA;IACL,MAAM,IAAA;IACN,KAAK,IAAA;IACL,MAAM,IAAA;IACN,KAAK,IAAA;IACL,MAAM,IAAA;IACN,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,OAAO,IAAA;IACP,IAAI,KAAA;IACJ,KAAK,KAAA;IACL,IAAI,KAAA;IACJ,KAAK,KAAA;IACL,KAAK,KAAA;IACL,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,IAAI,KAAA;IACJ,KAAK,KAAA;IACL,KAAK,KAAA;IACL,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,MAAM,KAAA;IACN,OAAO,KAAA;IAEP,YAAY,KAAA;IACZ,YAAY,KAAA;IACZ,WAAW,KAAA;IACX,cAAc,KAAA;IACd,cAAc,KAAA;IAEd,OAAO,KAAA;IACP,QAAQ,KAAA;IACR,YAAY,KAAA;IACZ,cAAc,KAAA;IAEd,KAAK,KAAA;IACL,MAAM,KAAA;IACN,MAAM,KAAA;IACN,MAAM,KAAA;IACN,OAAO,KAAA;IACP,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IAEN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,cAAc,KAAA;IACd,YAAY,KAAA;IACZ,eAAe,KAAA;IACf,aAAa,KAAA;IACb,eAAe,KAAA;IACf,mBAAmB,KAAA;IACnB,kBAAkB,KAAA;IAClB,aAAa,KAAA;IAEb,IAAI,KAAA;IACJ,UAAU,KAAA;IACV,MAAM,KAAA;IACN,QAAQ,KAAA;IACR,SAAS,KAAA;IAET,QAAQ,KAAA;IAER,SAAS,KAAA;IACT,iBAAiB,KAAA;IACjB,WAAW,KAAA;IACX,KAAK,KAAA;IAEL,SAAS,KAAA;CACV;AAED,eAAO,MAAM,gBAAgB,QAI5B,CAAC;AAIF,oBAAY,WAAW;IACrB,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,MAAM,IAAA;IACN,OAAO,IAAA;IACP,EAAE,IAAA;IACF,GAAG,IAAA;CACJ;AAGD,KAAK,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;AAoDzC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAyBvG;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAmBrF"}
|
|
@@ -7,14 +7,14 @@ export declare class ExecutorMetrics implements ExecutorMetricsInterface {
|
|
|
7
7
|
private fnDuration;
|
|
8
8
|
private manaPerSecond;
|
|
9
9
|
private manaUsed;
|
|
10
|
-
private
|
|
10
|
+
private totalInstructionsExecuted;
|
|
11
11
|
private txHashing;
|
|
12
12
|
private privateEffectsInsertions;
|
|
13
13
|
constructor(client: TelemetryClient, name?: string);
|
|
14
14
|
startRecordingTxSimulation(_txLabel: string): void;
|
|
15
15
|
stopRecordingTxSimulation(_txLabel: string, _revertedCode?: RevertCode): void;
|
|
16
|
-
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number,
|
|
17
|
-
recordEnqueuedCallSimulationFailure(_fnName: string, _durationMs: number, _manaUsed: number,
|
|
16
|
+
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructionsExecuted: number): void;
|
|
17
|
+
recordEnqueuedCallSimulationFailure(_fnName: string, _durationMs: number, _manaUsed: number, _totalInstructionsExecuted: number): void;
|
|
18
18
|
recordTxHashComputation(durationMs: number): void;
|
|
19
19
|
recordPrivateEffectsInsertion(durationUs: number, type: 'revertible' | 'non-revertible'): void;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/executor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,qBAAa,eAAgB,YAAW,wBAAwB;IAC9D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"executor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/executor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,qBAAa,eAAgB,YAAW,wBAAwB;IAC9D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,wBAAwB,CAAY;gBAEhC,MAAM,EAAE,eAAe,EAAE,IAAI,SAAmB;IA6C5D,0BAA0B,CAAC,QAAQ,EAAE,MAAM;IAI3C,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU;IAItE,4BAA4B,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,MAAM;IAuBnC,mCAAmC,CACjC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,0BAA0B,EAAE,MAAM;IAOpC,uBAAuB,CAAC,UAAU,EAAE,MAAM;IAI1C,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB;CAKxF"}
|
|
@@ -5,7 +5,7 @@ export class ExecutorMetrics {
|
|
|
5
5
|
fnDuration;
|
|
6
6
|
manaPerSecond;
|
|
7
7
|
manaUsed;
|
|
8
|
-
|
|
8
|
+
totalInstructionsExecuted;
|
|
9
9
|
txHashing;
|
|
10
10
|
privateEffectsInsertions;
|
|
11
11
|
constructor(client, name = 'PublicExecutor'){
|
|
@@ -29,9 +29,9 @@ export class ExecutorMetrics {
|
|
|
29
29
|
unit: 'mana',
|
|
30
30
|
valueType: ValueType.INT
|
|
31
31
|
});
|
|
32
|
-
this.
|
|
32
|
+
this.totalInstructionsExecuted = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_TOTAL_INSTRUCTIONS, {
|
|
33
33
|
description: 'Total number of instructions executed',
|
|
34
|
-
unit: 'instructions',
|
|
34
|
+
unit: '#instructions',
|
|
35
35
|
valueType: ValueType.INT
|
|
36
36
|
});
|
|
37
37
|
this.txHashing = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_TX_HASHING, {
|
|
@@ -51,7 +51,7 @@ export class ExecutorMetrics {
|
|
|
51
51
|
stopRecordingTxSimulation(_txLabel, _revertedCode) {
|
|
52
52
|
// do nothing (unimplemented)
|
|
53
53
|
}
|
|
54
|
-
recordEnqueuedCallSimulation(fnName, durationMs, manaUsed,
|
|
54
|
+
recordEnqueuedCallSimulation(fnName, durationMs, manaUsed, totalInstructionsExecuted) {
|
|
55
55
|
this.fnCount.add(1, {
|
|
56
56
|
[Attributes.OK]: true,
|
|
57
57
|
[Attributes.APP_CIRCUIT_NAME]: fnName
|
|
@@ -59,7 +59,7 @@ export class ExecutorMetrics {
|
|
|
59
59
|
this.manaUsed.record(Math.ceil(manaUsed), {
|
|
60
60
|
[Attributes.APP_CIRCUIT_NAME]: fnName
|
|
61
61
|
});
|
|
62
|
-
this.
|
|
62
|
+
this.totalInstructionsExecuted.record(Math.ceil(totalInstructionsExecuted), {
|
|
63
63
|
[Attributes.APP_CIRCUIT_NAME]: fnName
|
|
64
64
|
});
|
|
65
65
|
this.fnDuration.record(Math.ceil(durationMs), {
|
|
@@ -72,7 +72,7 @@ export class ExecutorMetrics {
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
recordEnqueuedCallSimulationFailure(_fnName, _durationMs, _manaUsed,
|
|
75
|
+
recordEnqueuedCallSimulationFailure(_fnName, _durationMs, _manaUsed, _totalInstructionsExecuted) {
|
|
76
76
|
this.fnCount.add(1, {
|
|
77
77
|
[Attributes.OK]: false
|
|
78
78
|
});
|
|
@@ -3,7 +3,7 @@ export interface ExecutorMetricsInterface {
|
|
|
3
3
|
startRecordingTxSimulation(txLabel: string): void;
|
|
4
4
|
stopRecordingTxSimulation(txLabel: string, revertedCode?: RevertCode): void;
|
|
5
5
|
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructions: number): void;
|
|
6
|
-
recordEnqueuedCallSimulationFailure(fnName: string, durationMs: number, manaUsed: number,
|
|
6
|
+
recordEnqueuedCallSimulationFailure(fnName: string, durationMs: number, manaUsed: number, totalInstructionsExecuted: number): void;
|
|
7
7
|
recordTxHashComputation(durationMs: number): void;
|
|
8
8
|
recordPrivateEffectsInsertion(durationUs: number, type: 'revertible' | 'non-revertible'): void;
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor_metrics_interface.d.ts","sourceRoot":"","sources":["../../src/public/executor_metrics_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,wBAAwB;IACvC,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5E,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpH,mCAAmC,CACjC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,
|
|
1
|
+
{"version":3,"file":"executor_metrics_interface.d.ts","sourceRoot":"","sources":["../../src/public/executor_metrics_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,wBAAwB;IACvC,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5E,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpH,mCAAmC,CACjC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,MAAM,GAChC,IAAI,CAAC;IACR,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,GAAG,IAAI,CAAC;CAChG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAiC,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAG3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAIxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAM5E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,uBAAuB;;IASjE,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,aAAa,CAAC,CAAS;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,GAAE,eAAkC,EACnC,OAAO,GAAE,mBAA+C;
|
|
1
|
+
{"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAiC,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAG3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAIxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAM5E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,uBAAuB;;IASjE,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,aAAa,CAAC,CAAS;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,GAAE,eAAkC,EACnC,OAAO,GAAE,mBAA+C;WAgB9C,MAAM,CACxB,OAAO,GAAE,eAAkC,EAC3C,OAAO,GAAE,mBAA+C,GACvD,OAAO,CAAC,wBAAwB,CAAC;IAM7B,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAIzB,QAAQ,CACnB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,cAAc,KAAkC,GAC/C,OAAO,CAAC,EAAE,CAAC;IAcD,UAAU,CACrB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,cAAc,KAAkC,EAChD,OAAO,GAAE,MAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAyBb,mBAAmB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAC7B,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,CAAC,EAAE,YAAY,EACvB,cAAc,CAAC,EAAE,EAAE,GAClB,OAAO,CAAC,cAAc,CAAC;IAInB,kBAAkB;CAuB1B;AAED,wBAAgB,cAAc,oBAM7B"}
|
|
@@ -26,7 +26,7 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
26
26
|
constructor(merkleTree, contractDataSource, globals = defaultGlobals(), metrics = new TestExecutorMetrics()){
|
|
27
27
|
super(contractDataSource, merkleTree), this.metrics = metrics, this.txCount = 0;
|
|
28
28
|
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
29
|
-
this.simulator = new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, /*doMerkleOperations=*/ true, /*skipFeeEnforcement=*/ false, this.metrics);
|
|
29
|
+
this.simulator = new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, /*doMerkleOperations=*/ true, /*skipFeeEnforcement=*/ false, /*clientInitiatedSimulation=*/ true, this.metrics);
|
|
30
30
|
}
|
|
31
31
|
static async create(globals = defaultGlobals(), metrics = new TestExecutorMetrics()) {
|
|
32
32
|
const contractDataSource = new SimpleContractDataSource();
|
|
@@ -45,8 +45,8 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
45
45
|
async simulateTx(sender, setupCalls = [], appCalls = [], teardownCall, feePayer = sender, /* need some unique first nullifier for note-nonce computations */ firstNullifier = new Fr(420000 + this.txCount++), txLabel = 'unlabeledTx') {
|
|
46
46
|
const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, firstNullifier);
|
|
47
47
|
await this.setFeePayerBalance(feePayer);
|
|
48
|
-
const txLabelWithCount = `${txLabel}
|
|
49
|
-
const fullTxLabel = this.metricsPrefix ? `${this.metricsPrefix}
|
|
48
|
+
const txLabelWithCount = `${txLabel}/${this.txCount - 1}`;
|
|
49
|
+
const fullTxLabel = this.metricsPrefix ? `${this.metricsPrefix}/${txLabelWithCount}` : txLabelWithCount;
|
|
50
50
|
const avmResult = await this.simulator.simulate(tx, fullTxLabel);
|
|
51
51
|
// Something like this is often useful for debugging:
|
|
52
52
|
//if (avmResult.revertReason) {
|