@aztec/simulator 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/acvm/acvm.js +18 -21
- package/dest/acvm/acvm_types.js +3 -2
- package/dest/acvm/deserialize.js +9 -13
- package/dest/acvm/index.js +0 -1
- package/dest/acvm/oracle/index.js +0 -1
- package/dest/acvm/oracle/oracle.js +42 -23
- package/dest/acvm/oracle/typed_oracle.js +36 -38
- package/dest/acvm/serialize.js +7 -14
- package/dest/avm/avm_context.js +24 -27
- package/dest/avm/avm_contract_call_result.js +12 -7
- package/dest/avm/avm_execution_environment.js +10 -7
- package/dest/avm/avm_gas.js +93 -56
- package/dest/avm/avm_machine_state.js +60 -61
- package/dest/avm/avm_memory_types.js +166 -255
- package/dest/avm/avm_simulator.js +68 -47
- package/dest/avm/avm_tree.js +282 -276
- package/dest/avm/bytecode_utils.js +8 -6
- package/dest/avm/errors.js +46 -63
- package/dest/avm/fixtures/avm_simulation_tester.js +18 -17
- package/dest/avm/fixtures/base_avm_simulation_tester.js +21 -16
- package/dest/avm/fixtures/index.js +27 -26
- package/dest/avm/fixtures/simple_contract_data_source.js +9 -13
- package/dest/avm/index.js +0 -1
- package/dest/avm/journal/index.js +0 -1
- package/dest/avm/journal/journal.js +147 -200
- package/dest/avm/journal/nullifiers.js +43 -46
- package/dest/avm/journal/public_storage.js +73 -87
- package/dest/avm/opcodes/accrued_substate.js +140 -110
- package/dest/avm/opcodes/addressing_mode.js +29 -31
- package/dest/avm/opcodes/arithmetic.js +17 -15
- package/dest/avm/opcodes/bitwise.js +40 -26
- package/dest/avm/opcodes/comparators.js +12 -10
- package/dest/avm/opcodes/contract.js +31 -29
- package/dest/avm/opcodes/control_flow.js +47 -43
- package/dest/avm/opcodes/conversion.js +30 -26
- package/dest/avm/opcodes/ec_add.js +35 -34
- package/dest/avm/opcodes/environment_getters.js +33 -33
- package/dest/avm/opcodes/external_calls.js +83 -74
- package/dest/avm/opcodes/hashing.js +69 -61
- package/dest/avm/opcodes/index.js +0 -1
- package/dest/avm/opcodes/instruction.js +31 -40
- package/dest/avm/opcodes/instruction_impl.js +12 -15
- package/dest/avm/opcodes/memory.js +177 -156
- package/dest/avm/opcodes/misc.js +27 -25
- package/dest/avm/opcodes/multi_scalar_mul.js +43 -41
- package/dest/avm/opcodes/storage.js +28 -25
- package/dest/avm/serialization/buffer_cursor.js +4 -4
- package/dest/avm/serialization/bytecode_serialization.js +292 -89
- package/dest/avm/serialization/instruction_serialization.js +67 -28
- package/dest/avm/test_utils.js +6 -9
- package/dest/client/client_execution_context.js +197 -219
- package/dest/client/db_oracle.js +4 -7
- package/dest/client/execution_note_cache.js +80 -81
- package/dest/client/index.js +0 -1
- package/dest/client/pick_notes.js +27 -30
- package/dest/client/private_execution.js +13 -14
- package/dest/client/simulator.js +44 -48
- package/dest/client/unconstrained_execution.js +8 -11
- package/dest/client/view_data_oracle.js +130 -139
- package/dest/common/debug_fn_name.js +1 -4
- package/dest/common/errors.js +30 -39
- package/dest/common/hashed_values_cache.js +16 -20
- package/dest/common/index.js +0 -1
- package/dest/common/message_load_oracle_inputs.js +7 -7
- package/dest/common/simulation_provider.js +3 -6
- package/dest/common.js +0 -1
- package/dest/providers/acvm_native.js +46 -32
- package/dest/providers/acvm_wasm.js +18 -10
- package/dest/providers/acvm_wasm_with_blobs.js +2 -5
- package/dest/providers/factory.js +5 -5
- package/dest/providers/index.js +0 -1
- package/dest/public/bytecode_errors.js +1 -2
- package/dest/public/db_interfaces.js +1 -2
- package/dest/public/execution.js +2 -4
- package/dest/public/executor_metrics.js +16 -12
- package/dest/public/fee_payment.js +2 -5
- package/dest/public/fixtures/index.js +0 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +13 -17
- package/dest/public/fixtures/utils.js +11 -14
- package/dest/public/index.js +0 -1
- package/dest/public/public_db_sources.js +79 -87
- package/dest/public/public_processor.js +310 -306
- package/dest/public/public_processor_metrics.js +46 -27
- package/dest/public/public_tx_context.js +97 -118
- package/dest/public/public_tx_simulator.js +299 -314
- package/dest/public/side_effect_errors.js +1 -2
- package/dest/public/side_effect_trace.js +44 -71
- package/dest/public/side_effect_trace_interface.js +1 -2
- package/dest/public/unique_class_ids.js +22 -27
- package/dest/public/utils.js +16 -11
- package/dest/server.js +0 -1
- package/dest/stats/index.js +0 -1
- package/dest/stats/stats.js +1 -2
- package/dest/test/utils.js +5 -4
- package/package.json +11 -11
- package/src/acvm/oracle/typed_oracle.ts +34 -34
- package/src/avm/avm_machine_state.ts +18 -14
- package/src/avm/avm_memory_types.ts +43 -183
- package/src/avm/avm_simulator.ts +37 -11
- package/src/avm/opcodes/accrued_substate.ts +7 -21
- package/src/avm/opcodes/addressing_mode.ts +9 -2
- package/src/avm/opcodes/arithmetic.ts +1 -3
- package/src/avm/opcodes/bitwise.ts +2 -6
- package/src/avm/opcodes/comparators.ts +1 -3
- package/src/avm/opcodes/contract.ts +1 -3
- package/src/avm/opcodes/control_flow.ts +1 -9
- package/src/avm/opcodes/conversion.ts +1 -3
- package/src/avm/opcodes/ec_add.ts +1 -3
- package/src/avm/opcodes/environment_getters.ts +1 -3
- package/src/avm/opcodes/external_calls.ts +3 -6
- package/src/avm/opcodes/hashing.ts +3 -9
- package/src/avm/opcodes/memory.ts +6 -20
- package/src/avm/opcodes/misc.ts +1 -3
- package/src/avm/opcodes/multi_scalar_mul.ts +1 -7
- package/src/avm/opcodes/storage.ts +2 -6
- package/src/client/index.ts +2 -2
- package/dest/acvm/acvm.d.ts +0 -35
- package/dest/acvm/acvm.d.ts.map +0 -1
- package/dest/acvm/acvm_types.d.ts +0 -10
- package/dest/acvm/acvm_types.d.ts.map +0 -1
- package/dest/acvm/deserialize.d.ts +0 -36
- package/dest/acvm/deserialize.d.ts.map +0 -1
- package/dest/acvm/index.d.ts +0 -6
- package/dest/acvm/index.d.ts.map +0 -1
- package/dest/acvm/oracle/index.d.ts +0 -14
- package/dest/acvm/oracle/index.d.ts.map +0 -1
- package/dest/acvm/oracle/oracle.d.ts +0 -49
- package/dest/acvm/oracle/oracle.d.ts.map +0 -1
- package/dest/acvm/oracle/typed_oracle.d.ts +0 -75
- package/dest/acvm/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/acvm/serialize.d.ts +0 -20
- package/dest/acvm/serialize.d.ts.map +0 -1
- package/dest/avm/avm_context.d.ts +0 -39
- package/dest/avm/avm_context.d.ts.map +0 -1
- package/dest/avm/avm_contract_call_result.d.ts +0 -30
- package/dest/avm/avm_contract_call_result.d.ts.map +0 -1
- package/dest/avm/avm_execution_environment.d.ts +0 -21
- package/dest/avm/avm_execution_environment.d.ts.map +0 -1
- package/dest/avm/avm_gas.d.ts +0 -60
- package/dest/avm/avm_gas.d.ts.map +0 -1
- package/dest/avm/avm_machine_state.d.ts +0 -93
- package/dest/avm/avm_machine_state.d.ts.map +0 -1
- package/dest/avm/avm_memory_types.d.ts +0 -310
- package/dest/avm/avm_memory_types.d.ts.map +0 -1
- package/dest/avm/avm_simulator.d.ts +0 -37
- package/dest/avm/avm_simulator.d.ts.map +0 -1
- package/dest/avm/avm_tree.d.ts +0 -281
- package/dest/avm/avm_tree.d.ts.map +0 -1
- package/dest/avm/bytecode_utils.d.ts +0 -5
- package/dest/avm/bytecode_utils.d.ts.map +0 -1
- package/dest/avm/errors.d.ts +0 -121
- package/dest/avm/errors.d.ts.map +0 -1
- package/dest/avm/fixtures/avm_simulation_tester.d.ts +0 -21
- package/dest/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
- package/dest/avm/fixtures/base_avm_simulation_tester.d.ts +0 -35
- package/dest/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
- package/dest/avm/fixtures/index.d.ts +0 -67
- package/dest/avm/fixtures/index.d.ts.map +0 -1
- package/dest/avm/fixtures/simple_contract_data_source.d.ts +0 -31
- package/dest/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
- package/dest/avm/index.d.ts +0 -4
- package/dest/avm/index.d.ts.map +0 -1
- package/dest/avm/journal/index.d.ts +0 -2
- package/dest/avm/journal/index.d.ts.map +0 -1
- package/dest/avm/journal/journal.d.ts +0 -176
- package/dest/avm/journal/journal.d.ts.map +0 -1
- package/dest/avm/journal/nullifiers.d.ts +0 -62
- package/dest/avm/journal/nullifiers.d.ts.map +0 -1
- package/dest/avm/journal/public_storage.d.ts +0 -66
- package/dest/avm/journal/public_storage.d.ts.map +0 -1
- package/dest/avm/opcodes/accrued_substate.d.ts +0 -75
- package/dest/avm/opcodes/accrued_substate.d.ts.map +0 -1
- package/dest/avm/opcodes/addressing_mode.d.ts +0 -27
- package/dest/avm/opcodes/addressing_mode.d.ts.map +0 -1
- package/dest/avm/opcodes/arithmetic.d.ts +0 -37
- package/dest/avm/opcodes/arithmetic.d.ts.map +0 -1
- package/dest/avm/opcodes/bitwise.d.ts +0 -50
- package/dest/avm/opcodes/bitwise.d.ts.map +0 -1
- package/dest/avm/opcodes/comparators.d.ts +0 -25
- package/dest/avm/opcodes/comparators.d.ts.map +0 -1
- package/dest/avm/opcodes/contract.d.ts +0 -21
- package/dest/avm/opcodes/contract.d.ts.map +0 -1
- package/dest/avm/opcodes/control_flow.d.ts +0 -41
- package/dest/avm/opcodes/control_flow.d.ts.map +0 -1
- package/dest/avm/opcodes/conversion.d.ts +0 -17
- package/dest/avm/opcodes/conversion.d.ts.map +0 -1
- package/dest/avm/opcodes/ec_add.d.ts +0 -19
- package/dest/avm/opcodes/ec_add.d.ts.map +0 -1
- package/dest/avm/opcodes/environment_getters.d.ts +0 -28
- package/dest/avm/opcodes/environment_getters.d.ts.map +0 -1
- package/dest/avm/opcodes/external_calls.d.ts +0 -50
- package/dest/avm/opcodes/external_calls.d.ts.map +0 -1
- package/dest/avm/opcodes/hashing.d.ts +0 -36
- package/dest/avm/opcodes/hashing.d.ts.map +0 -1
- package/dest/avm/opcodes/index.d.ts +0 -16
- package/dest/avm/opcodes/index.d.ts.map +0 -1
- package/dest/avm/opcodes/instruction.d.ts +0 -70
- package/dest/avm/opcodes/instruction.d.ts.map +0 -1
- package/dest/avm/opcodes/instruction_impl.d.ts +0 -19
- package/dest/avm/opcodes/instruction_impl.d.ts.map +0 -1
- package/dest/avm/opcodes/memory.d.ts +0 -74
- package/dest/avm/opcodes/memory.d.ts.map +0 -1
- package/dest/avm/opcodes/misc.d.ts +0 -17
- package/dest/avm/opcodes/misc.d.ts.map +0 -1
- package/dest/avm/opcodes/multi_scalar_mul.d.ts +0 -16
- package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +0 -1
- package/dest/avm/opcodes/storage.d.ts +0 -24
- package/dest/avm/opcodes/storage.d.ts.map +0 -1
- package/dest/avm/serialization/buffer_cursor.d.ts +0 -28
- package/dest/avm/serialization/buffer_cursor.d.ts.map +0 -1
- package/dest/avm/serialization/bytecode_serialization.d.ts +0 -21
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +0 -1
- package/dest/avm/serialization/instruction_serialization.d.ts +0 -105
- package/dest/avm/serialization/instruction_serialization.d.ts.map +0 -1
- package/dest/avm/test_utils.d.ts +0 -16
- package/dest/avm/test_utils.d.ts.map +0 -1
- package/dest/client/client_execution_context.d.ts +0 -214
- package/dest/client/client_execution_context.d.ts.map +0 -1
- package/dest/client/db_oracle.d.ts +0 -229
- package/dest/client/db_oracle.d.ts.map +0 -1
- package/dest/client/execution_note_cache.d.ts +0 -93
- package/dest/client/execution_note_cache.d.ts.map +0 -1
- package/dest/client/index.d.ts +0 -15
- package/dest/client/index.d.ts.map +0 -1
- package/dest/client/pick_notes.d.ts +0 -85
- package/dest/client/pick_notes.d.ts.map +0 -1
- package/dest/client/private_execution.d.ts +0 -19
- package/dest/client/private_execution.d.ts.map +0 -1
- package/dest/client/simulator.d.ts +0 -60
- package/dest/client/simulator.d.ts.map +0 -1
- package/dest/client/unconstrained_execution.d.ts +0 -10
- package/dest/client/unconstrained_execution.d.ts.map +0 -1
- package/dest/client/view_data_oracle.d.ts +0 -159
- package/dest/client/view_data_oracle.d.ts.map +0 -1
- package/dest/common/debug_fn_name.d.ts +0 -4
- package/dest/common/debug_fn_name.d.ts.map +0 -1
- package/dest/common/errors.d.ts +0 -54
- package/dest/common/errors.d.ts.map +0 -1
- package/dest/common/hashed_values_cache.d.ts +0 -28
- package/dest/common/hashed_values_cache.d.ts.map +0 -1
- package/dest/common/index.d.ts +0 -3
- package/dest/common/index.d.ts.map +0 -1
- package/dest/common/message_load_oracle_inputs.d.ts +0 -15
- package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
- package/dest/common/simulation_provider.d.ts +0 -19
- package/dest/common/simulation_provider.d.ts.map +0 -1
- package/dest/common.d.ts +0 -2
- package/dest/common.d.ts.map +0 -1
- package/dest/providers/acvm_native.d.ts +0 -40
- package/dest/providers/acvm_native.d.ts.map +0 -1
- package/dest/providers/acvm_wasm.d.ts +0 -15
- package/dest/providers/acvm_wasm.d.ts.map +0 -1
- package/dest/providers/acvm_wasm_with_blobs.d.ts +0 -19
- package/dest/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
- package/dest/providers/factory.d.ts +0 -12
- package/dest/providers/factory.d.ts.map +0 -1
- package/dest/providers/index.d.ts +0 -5
- package/dest/providers/index.d.ts.map +0 -1
- package/dest/public/bytecode_errors.d.ts +0 -4
- package/dest/public/bytecode_errors.d.ts.map +0 -1
- package/dest/public/db_interfaces.d.ts +0 -105
- package/dest/public/db_interfaces.d.ts.map +0 -1
- package/dest/public/execution.d.ts +0 -102
- package/dest/public/execution.d.ts.map +0 -1
- package/dest/public/executor_metrics.d.ts +0 -13
- package/dest/public/executor_metrics.d.ts.map +0 -1
- package/dest/public/fee_payment.d.ts +0 -11
- package/dest/public/fee_payment.d.ts.map +0 -1
- package/dest/public/fixtures/index.d.ts +0 -3
- package/dest/public/fixtures/index.d.ts.map +0 -1
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +0 -21
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +0 -1
- package/dest/public/fixtures/utils.d.ts +0 -17
- package/dest/public/fixtures/utils.d.ts.map +0 -1
- package/dest/public/index.d.ts +0 -9
- package/dest/public/index.d.ts.map +0 -1
- package/dest/public/public_db_sources.d.ts +0 -81
- package/dest/public/public_db_sources.d.ts.map +0 -1
- package/dest/public/public_processor.d.ts +0 -72
- package/dest/public/public_processor.d.ts.map +0 -1
- package/dest/public/public_processor_metrics.d.ts +0 -27
- package/dest/public/public_processor_metrics.d.ts.map +0 -1
- package/dest/public/public_tx_context.d.ts +0 -131
- package/dest/public/public_tx_context.d.ts.map +0 -1
- package/dest/public/public_tx_simulator.d.ts +0 -99
- package/dest/public/public_tx_simulator.d.ts.map +0 -1
- package/dest/public/side_effect_errors.d.ts +0 -4
- package/dest/public/side_effect_errors.d.ts.map +0 -1
- package/dest/public/side_effect_trace.d.ts +0 -126
- package/dest/public/side_effect_trace.d.ts.map +0 -1
- package/dest/public/side_effect_trace_interface.d.ts +0 -32
- package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
- package/dest/public/unique_class_ids.d.ts +0 -37
- package/dest/public/unique_class_ids.d.ts.map +0 -1
- package/dest/public/utils.d.ts +0 -5
- package/dest/public/utils.d.ts.map +0 -1
- package/dest/server.d.ts +0 -6
- package/dest/server.d.ts.map +0 -1
- package/dest/stats/index.d.ts +0 -2
- package/dest/stats/index.d.ts.map +0 -1
- package/dest/stats/stats.d.ts +0 -4
- package/dest/stats/stats.d.ts.map +0 -1
- package/dest/test/utils.d.ts +0 -12
- package/dest/test/utils.d.ts.map +0 -1
|
@@ -1,99 +1,302 @@
|
|
|
1
1
|
import { AvmExecutionError, AvmParsingError, InvalidOpcodeError, InvalidProgramCounterError } from '../errors.js';
|
|
2
|
-
import { Add, And, Call, CalldataCopy, Cast, DebugLog, Div, EcAdd, EmitNoteHash, EmitNullifier, EmitUnencryptedLog, Eq, FieldDiv, GetContractInstance, GetEnvVar, Instruction, InternalCall, InternalReturn, Jump, JumpI, KeccakF1600, L1ToL2MessageExists, Lt, Lte, Mov, Mul, Not, NoteHashExists, NullifierExists, Or, Poseidon2, Return, ReturndataCopy, ReturndataSize, Revert, SLoad, SStore, SendL2ToL1Message, Set, Sha256Compression, Shl, Shr, StaticCall, Sub, ToRadixBE, Xor
|
|
2
|
+
import { Add, And, Call, CalldataCopy, Cast, DebugLog, Div, EcAdd, EmitNoteHash, EmitNullifier, EmitUnencryptedLog, Eq, FieldDiv, GetContractInstance, GetEnvVar, Instruction, InternalCall, InternalReturn, Jump, JumpI, KeccakF1600, L1ToL2MessageExists, Lt, Lte, Mov, Mul, Not, NoteHashExists, NullifierExists, Or, Poseidon2, Return, ReturndataCopy, ReturndataSize, Revert, SLoad, SStore, SendL2ToL1Message, Set, Sha256Compression, Shl, Shr, StaticCall, Sub, ToRadixBE, Xor } from '../opcodes/index.js';
|
|
3
3
|
import { MultiScalarMul } from '../opcodes/multi_scalar_mul.js';
|
|
4
4
|
import { BufferCursor } from './buffer_cursor.js';
|
|
5
5
|
import { MAX_OPCODE_VALUE, Opcode } from './instruction_serialization.js';
|
|
6
6
|
// TODO(4359): This is a function so that Call and StaticCall can be lazily resolved.
|
|
7
7
|
// This is a temporary solution until we solve the dependency cycle.
|
|
8
|
-
export const INSTRUCTION_SET = ()
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
8
|
+
export const INSTRUCTION_SET = ()=>new Map([
|
|
9
|
+
[
|
|
10
|
+
Opcode.ADD_8,
|
|
11
|
+
Add.as(Add.wireFormat8).deserialize
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
Opcode.ADD_16,
|
|
15
|
+
Add.as(Add.wireFormat16).deserialize
|
|
16
|
+
],
|
|
17
|
+
[
|
|
18
|
+
Opcode.SUB_8,
|
|
19
|
+
Sub.as(Sub.wireFormat8).deserialize
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
Opcode.SUB_16,
|
|
23
|
+
Sub.as(Sub.wireFormat16).deserialize
|
|
24
|
+
],
|
|
25
|
+
[
|
|
26
|
+
Opcode.MUL_8,
|
|
27
|
+
Mul.as(Mul.wireFormat8).deserialize
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
Opcode.MUL_16,
|
|
31
|
+
Mul.as(Mul.wireFormat16).deserialize
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
Opcode.DIV_8,
|
|
35
|
+
Div.as(Div.wireFormat8).deserialize
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
Opcode.DIV_16,
|
|
39
|
+
Div.as(Div.wireFormat16).deserialize
|
|
40
|
+
],
|
|
41
|
+
[
|
|
42
|
+
Opcode.FDIV_8,
|
|
43
|
+
FieldDiv.as(FieldDiv.wireFormat8).deserialize
|
|
44
|
+
],
|
|
45
|
+
[
|
|
46
|
+
Opcode.FDIV_16,
|
|
47
|
+
FieldDiv.as(FieldDiv.wireFormat16).deserialize
|
|
48
|
+
],
|
|
49
|
+
[
|
|
50
|
+
Opcode.EQ_8,
|
|
51
|
+
Eq.as(Eq.wireFormat8).deserialize
|
|
52
|
+
],
|
|
53
|
+
[
|
|
54
|
+
Opcode.EQ_16,
|
|
55
|
+
Eq.as(Eq.wireFormat16).deserialize
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
Opcode.LT_8,
|
|
59
|
+
Lt.as(Lt.wireFormat8).deserialize
|
|
60
|
+
],
|
|
61
|
+
[
|
|
62
|
+
Opcode.LT_16,
|
|
63
|
+
Lt.as(Lt.wireFormat16).deserialize
|
|
64
|
+
],
|
|
65
|
+
[
|
|
66
|
+
Opcode.LTE_8,
|
|
67
|
+
Lte.as(Lte.wireFormat8).deserialize
|
|
68
|
+
],
|
|
69
|
+
[
|
|
70
|
+
Opcode.LTE_16,
|
|
71
|
+
Lte.as(Lte.wireFormat16).deserialize
|
|
72
|
+
],
|
|
73
|
+
[
|
|
74
|
+
Opcode.AND_8,
|
|
75
|
+
And.as(And.wireFormat8).deserialize
|
|
76
|
+
],
|
|
77
|
+
[
|
|
78
|
+
Opcode.AND_16,
|
|
79
|
+
And.as(And.wireFormat16).deserialize
|
|
80
|
+
],
|
|
81
|
+
[
|
|
82
|
+
Opcode.OR_8,
|
|
83
|
+
Or.as(Or.wireFormat8).deserialize
|
|
84
|
+
],
|
|
85
|
+
[
|
|
86
|
+
Opcode.OR_16,
|
|
87
|
+
Or.as(Or.wireFormat16).deserialize
|
|
88
|
+
],
|
|
89
|
+
[
|
|
90
|
+
Opcode.XOR_8,
|
|
91
|
+
Xor.as(Xor.wireFormat8).deserialize
|
|
92
|
+
],
|
|
93
|
+
[
|
|
94
|
+
Opcode.XOR_16,
|
|
95
|
+
Xor.as(Xor.wireFormat16).deserialize
|
|
96
|
+
],
|
|
97
|
+
[
|
|
98
|
+
Opcode.NOT_8,
|
|
99
|
+
Not.as(Not.wireFormat8).deserialize
|
|
100
|
+
],
|
|
101
|
+
[
|
|
102
|
+
Opcode.NOT_16,
|
|
103
|
+
Not.as(Not.wireFormat16).deserialize
|
|
104
|
+
],
|
|
105
|
+
[
|
|
106
|
+
Opcode.SHL_8,
|
|
107
|
+
Shl.as(Shl.wireFormat8).deserialize
|
|
108
|
+
],
|
|
109
|
+
[
|
|
110
|
+
Opcode.SHL_16,
|
|
111
|
+
Shl.as(Shl.wireFormat16).deserialize
|
|
112
|
+
],
|
|
113
|
+
[
|
|
114
|
+
Opcode.SHR_8,
|
|
115
|
+
Shr.as(Shr.wireFormat8).deserialize
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
Opcode.SHR_16,
|
|
119
|
+
Shr.as(Shr.wireFormat16).deserialize
|
|
120
|
+
],
|
|
121
|
+
[
|
|
122
|
+
Opcode.CAST_8,
|
|
123
|
+
Cast.as(Cast.wireFormat8).deserialize
|
|
124
|
+
],
|
|
125
|
+
[
|
|
126
|
+
Opcode.CAST_16,
|
|
127
|
+
Cast.as(Cast.wireFormat16).deserialize
|
|
128
|
+
],
|
|
129
|
+
// Execution Environment
|
|
130
|
+
[
|
|
131
|
+
Opcode.GETENVVAR_16,
|
|
132
|
+
GetEnvVar.as(GetEnvVar.wireFormat16).deserialize
|
|
133
|
+
],
|
|
134
|
+
[
|
|
135
|
+
CalldataCopy.opcode,
|
|
136
|
+
Instruction.deserialize.bind(CalldataCopy)
|
|
137
|
+
],
|
|
138
|
+
[
|
|
139
|
+
Opcode.RETURNDATASIZE,
|
|
140
|
+
Instruction.deserialize.bind(ReturndataSize)
|
|
141
|
+
],
|
|
142
|
+
[
|
|
143
|
+
Opcode.RETURNDATACOPY,
|
|
144
|
+
Instruction.deserialize.bind(ReturndataCopy)
|
|
145
|
+
],
|
|
146
|
+
// Machine State - Internal Control Flow
|
|
147
|
+
[
|
|
148
|
+
Jump.opcode,
|
|
149
|
+
Instruction.deserialize.bind(Jump)
|
|
150
|
+
],
|
|
151
|
+
[
|
|
152
|
+
JumpI.opcode,
|
|
153
|
+
Instruction.deserialize.bind(JumpI)
|
|
154
|
+
],
|
|
155
|
+
[
|
|
156
|
+
InternalCall.opcode,
|
|
157
|
+
Instruction.deserialize.bind(InternalCall)
|
|
158
|
+
],
|
|
159
|
+
[
|
|
160
|
+
InternalReturn.opcode,
|
|
161
|
+
Instruction.deserialize.bind(InternalReturn)
|
|
162
|
+
],
|
|
163
|
+
[
|
|
164
|
+
Opcode.SET_8,
|
|
165
|
+
Set.as(Set.wireFormat8).deserialize
|
|
166
|
+
],
|
|
167
|
+
[
|
|
168
|
+
Opcode.SET_16,
|
|
169
|
+
Set.as(Set.wireFormat16).deserialize
|
|
170
|
+
],
|
|
171
|
+
[
|
|
172
|
+
Opcode.SET_32,
|
|
173
|
+
Set.as(Set.wireFormat32).deserialize
|
|
174
|
+
],
|
|
175
|
+
[
|
|
176
|
+
Opcode.SET_64,
|
|
177
|
+
Set.as(Set.wireFormat64).deserialize
|
|
178
|
+
],
|
|
179
|
+
[
|
|
180
|
+
Opcode.SET_128,
|
|
181
|
+
Set.as(Set.wireFormat128).deserialize
|
|
182
|
+
],
|
|
183
|
+
[
|
|
184
|
+
Opcode.SET_FF,
|
|
185
|
+
Set.as(Set.wireFormatFF).deserialize
|
|
186
|
+
],
|
|
187
|
+
[
|
|
188
|
+
Opcode.MOV_8,
|
|
189
|
+
Mov.as(Mov.wireFormat8).deserialize
|
|
190
|
+
],
|
|
191
|
+
[
|
|
192
|
+
Opcode.MOV_16,
|
|
193
|
+
Mov.as(Mov.wireFormat16).deserialize
|
|
194
|
+
],
|
|
195
|
+
// World State
|
|
196
|
+
[
|
|
197
|
+
SLoad.opcode,
|
|
198
|
+
Instruction.deserialize.bind(SLoad)
|
|
199
|
+
],
|
|
200
|
+
[
|
|
201
|
+
SStore.opcode,
|
|
202
|
+
Instruction.deserialize.bind(SStore)
|
|
203
|
+
],
|
|
204
|
+
[
|
|
205
|
+
NoteHashExists.opcode,
|
|
206
|
+
Instruction.deserialize.bind(NoteHashExists)
|
|
207
|
+
],
|
|
208
|
+
[
|
|
209
|
+
EmitNoteHash.opcode,
|
|
210
|
+
Instruction.deserialize.bind(EmitNoteHash)
|
|
211
|
+
],
|
|
212
|
+
[
|
|
213
|
+
NullifierExists.opcode,
|
|
214
|
+
Instruction.deserialize.bind(NullifierExists)
|
|
215
|
+
],
|
|
216
|
+
[
|
|
217
|
+
EmitNullifier.opcode,
|
|
218
|
+
Instruction.deserialize.bind(EmitNullifier)
|
|
219
|
+
],
|
|
220
|
+
[
|
|
221
|
+
L1ToL2MessageExists.opcode,
|
|
222
|
+
Instruction.deserialize.bind(L1ToL2MessageExists)
|
|
223
|
+
],
|
|
224
|
+
// Accrued Substate
|
|
225
|
+
[
|
|
226
|
+
EmitUnencryptedLog.opcode,
|
|
227
|
+
Instruction.deserialize.bind(EmitUnencryptedLog)
|
|
228
|
+
],
|
|
229
|
+
[
|
|
230
|
+
SendL2ToL1Message.opcode,
|
|
231
|
+
Instruction.deserialize.bind(SendL2ToL1Message)
|
|
232
|
+
],
|
|
233
|
+
[
|
|
234
|
+
GetContractInstance.opcode,
|
|
235
|
+
Instruction.deserialize.bind(GetContractInstance)
|
|
236
|
+
],
|
|
237
|
+
// Control Flow - Contract Calls
|
|
238
|
+
[
|
|
239
|
+
Call.opcode,
|
|
240
|
+
Instruction.deserialize.bind(Call)
|
|
241
|
+
],
|
|
242
|
+
[
|
|
243
|
+
StaticCall.opcode,
|
|
244
|
+
Instruction.deserialize.bind(StaticCall)
|
|
245
|
+
],
|
|
246
|
+
[
|
|
247
|
+
Return.opcode,
|
|
248
|
+
Instruction.deserialize.bind(Return)
|
|
249
|
+
],
|
|
250
|
+
[
|
|
251
|
+
Opcode.REVERT_8,
|
|
252
|
+
Revert.as(Revert.wireFormat8).deserialize
|
|
253
|
+
],
|
|
254
|
+
[
|
|
255
|
+
Opcode.REVERT_16,
|
|
256
|
+
Revert.as(Revert.wireFormat16).deserialize
|
|
257
|
+
],
|
|
258
|
+
// Misc
|
|
259
|
+
[
|
|
260
|
+
DebugLog.opcode,
|
|
261
|
+
Instruction.deserialize.bind(DebugLog)
|
|
262
|
+
],
|
|
263
|
+
// Gadgets
|
|
264
|
+
[
|
|
265
|
+
EcAdd.opcode,
|
|
266
|
+
Instruction.deserialize.bind(EcAdd)
|
|
267
|
+
],
|
|
268
|
+
[
|
|
269
|
+
Poseidon2.opcode,
|
|
270
|
+
Instruction.deserialize.bind(Poseidon2)
|
|
271
|
+
],
|
|
272
|
+
[
|
|
273
|
+
Sha256Compression.opcode,
|
|
274
|
+
Instruction.deserialize.bind(Sha256Compression)
|
|
275
|
+
],
|
|
276
|
+
[
|
|
277
|
+
KeccakF1600.opcode,
|
|
278
|
+
Instruction.deserialize.bind(KeccakF1600)
|
|
279
|
+
],
|
|
280
|
+
[
|
|
281
|
+
MultiScalarMul.opcode,
|
|
282
|
+
Instruction.deserialize.bind(MultiScalarMul)
|
|
283
|
+
],
|
|
284
|
+
// Conversions
|
|
285
|
+
[
|
|
286
|
+
ToRadixBE.opcode,
|
|
287
|
+
Instruction.deserialize.bind(ToRadixBE)
|
|
288
|
+
]
|
|
289
|
+
]);
|
|
86
290
|
/**
|
|
87
291
|
* Serializes an array of instructions to bytecode.
|
|
88
|
-
*/
|
|
89
|
-
|
|
90
|
-
return Buffer.concat(instructions.map(i => i.serialize()));
|
|
292
|
+
*/ export function encodeToBytecode(instructions) {
|
|
293
|
+
return Buffer.concat(instructions.map((i)=>i.serialize()));
|
|
91
294
|
}
|
|
92
295
|
// For testing only
|
|
93
296
|
export function decodeFromBytecode(bytecode, instructionSet = INSTRUCTION_SET()) {
|
|
94
297
|
const instructions = [];
|
|
95
298
|
let pc = 0;
|
|
96
|
-
while
|
|
299
|
+
while(pc < bytecode.length){
|
|
97
300
|
const [instruction, bytesConsumed] = decodeInstructionFromBytecode(bytecode, pc, instructionSet);
|
|
98
301
|
instructions.push(instruction);
|
|
99
302
|
pc += bytesConsumed;
|
|
@@ -118,15 +321,15 @@ export function decodeInstructionFromBytecode(bytecode, pc, instructionSet = INS
|
|
|
118
321
|
}
|
|
119
322
|
const instructionDeserializer = instructionDeserializerOrUndef;
|
|
120
323
|
const instruction = instructionDeserializer(cursor);
|
|
121
|
-
return [
|
|
122
|
-
|
|
123
|
-
|
|
324
|
+
return [
|
|
325
|
+
instruction,
|
|
326
|
+
cursor.position() - startingPosition
|
|
327
|
+
];
|
|
328
|
+
} catch (error) {
|
|
124
329
|
if (error instanceof InvalidOpcodeError || error instanceof AvmExecutionError) {
|
|
125
330
|
throw error;
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
331
|
+
} else {
|
|
128
332
|
throw new AvmParsingError(`${error}`);
|
|
129
333
|
}
|
|
130
334
|
}
|
|
131
335
|
}
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZWNvZGVfc2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vc2VyaWFsaXphdGlvbi9ieXRlY29kZV9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEgsT0FBTyxFQUNMLEdBQUcsRUFDSCxHQUFHLEVBQ0gsSUFBSSxFQUNKLFlBQVksRUFDWixJQUFJLEVBQ0osUUFBUSxFQUNSLEdBQUcsRUFDSCxLQUFLLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsRUFBRSxFQUNGLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osY0FBYyxFQUNkLElBQUksRUFDSixLQUFLLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixFQUFFLEVBQ0YsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsRUFBRSxFQUNGLFNBQVMsRUFDVCxNQUFNLEVBQ04sY0FBYyxFQUNkLGNBQWMsRUFDZCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsR0FBRyxFQUNILGlCQUFpQixFQUNqQixHQUFHLEVBQ0gsR0FBRyxFQUNILFVBQVUsRUFDVixHQUFHLEVBQ0gsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBYTFFLHFGQUFxRjtBQUNyRixvRUFBb0U7QUFDcEUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUNsQyxJQUFJLEdBQUcsQ0FBa0M7SUFDdkMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNuRCxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ3JELENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbkQsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNyRCxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDckQsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNuRCxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ3JELENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDOUQsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNoRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2hELENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbEQsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNoRCxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2xELENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbkQsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNyRCxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ25ELENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDckQsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNoRCxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2xELENB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
|
|
@@ -3,9 +3,7 @@ import { BufferCursor } from './buffer_cursor.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* All AVM opcodes. (Keep in sync with cpp counterpart code avm_opcode.hpp and rs in opcodes.rs).
|
|
5
5
|
* Source: https://yp-aztec.netlify.app/docs/public-vm/instruction-set
|
|
6
|
-
*/
|
|
7
|
-
export var Opcode;
|
|
8
|
-
(function (Opcode) {
|
|
6
|
+
*/ export var Opcode = /*#__PURE__*/ function(Opcode) {
|
|
9
7
|
// Compute
|
|
10
8
|
Opcode[Opcode["ADD_8"] = 0] = "ADD_8";
|
|
11
9
|
Opcode[Opcode["ADD_16"] = 1] = "ADD_16";
|
|
@@ -83,36 +81,77 @@ export var Opcode;
|
|
|
83
81
|
Opcode[Opcode["MSM"] = 66] = "MSM";
|
|
84
82
|
// Conversion
|
|
85
83
|
Opcode[Opcode["TORADIXBE"] = 67] = "TORADIXBE";
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
.filter(k => !isNaN(k)));
|
|
84
|
+
return Opcode;
|
|
85
|
+
}({});
|
|
86
|
+
export const MAX_OPCODE_VALUE = Math.max(...Object.values(Opcode).map((k)=>+k).filter((k)=>!isNaN(k)));
|
|
90
87
|
// Possible types for an instruction's operand in its wire format. (Keep in sync with CPP code.
|
|
91
88
|
// See vm/avm_trace/deserialization.cpp)
|
|
92
89
|
// Note that cpp code introduced an additional enum value TAG to express the instruction tag. In TS,
|
|
93
90
|
// this one is parsed as UINT8.
|
|
94
|
-
export var OperandType
|
|
95
|
-
(function (OperandType) {
|
|
91
|
+
export var OperandType = /*#__PURE__*/ function(OperandType) {
|
|
96
92
|
OperandType[OperandType["UINT8"] = 0] = "UINT8";
|
|
97
93
|
OperandType[OperandType["UINT16"] = 1] = "UINT16";
|
|
98
94
|
OperandType[OperandType["UINT32"] = 2] = "UINT32";
|
|
99
95
|
OperandType[OperandType["UINT64"] = 3] = "UINT64";
|
|
100
96
|
OperandType[OperandType["UINT128"] = 4] = "UINT128";
|
|
101
97
|
OperandType[OperandType["FF"] = 5] = "FF";
|
|
102
|
-
|
|
98
|
+
return OperandType;
|
|
99
|
+
}({});
|
|
103
100
|
// Specifies how to read and write each operand type.
|
|
104
101
|
const OPERAND_SPEC = new Map([
|
|
105
|
-
[
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
102
|
+
[
|
|
103
|
+
0,
|
|
104
|
+
[
|
|
105
|
+
1,
|
|
106
|
+
Buffer.prototype.readUint8,
|
|
107
|
+
Buffer.prototype.writeUint8
|
|
108
|
+
]
|
|
109
|
+
],
|
|
110
|
+
[
|
|
111
|
+
1,
|
|
112
|
+
[
|
|
113
|
+
2,
|
|
114
|
+
Buffer.prototype.readUint16BE,
|
|
115
|
+
Buffer.prototype.writeUint16BE
|
|
116
|
+
]
|
|
117
|
+
],
|
|
118
|
+
[
|
|
119
|
+
2,
|
|
120
|
+
[
|
|
121
|
+
4,
|
|
122
|
+
Buffer.prototype.readUint32BE,
|
|
123
|
+
Buffer.prototype.writeUint32BE
|
|
124
|
+
]
|
|
125
|
+
],
|
|
126
|
+
[
|
|
127
|
+
3,
|
|
128
|
+
[
|
|
129
|
+
8,
|
|
130
|
+
Buffer.prototype.readBigInt64BE,
|
|
131
|
+
Buffer.prototype.writeBigInt64BE
|
|
132
|
+
]
|
|
133
|
+
],
|
|
134
|
+
[
|
|
135
|
+
4,
|
|
136
|
+
[
|
|
137
|
+
16,
|
|
138
|
+
readBigInt128BE,
|
|
139
|
+
writeBigInt128BE
|
|
140
|
+
]
|
|
141
|
+
],
|
|
142
|
+
[
|
|
143
|
+
5,
|
|
144
|
+
[
|
|
145
|
+
32,
|
|
146
|
+
readBigInt254BE,
|
|
147
|
+
writeBigInt254BE
|
|
148
|
+
]
|
|
149
|
+
]
|
|
111
150
|
]);
|
|
112
151
|
function readBigInt254BE(offset) {
|
|
113
152
|
const totalBytes = 32;
|
|
114
153
|
let ret = 0n;
|
|
115
|
-
for
|
|
154
|
+
for(let i = 0; i < totalBytes; ++i){
|
|
116
155
|
ret <<= 8n;
|
|
117
156
|
ret |= BigInt(this.readUint8(i + offset));
|
|
118
157
|
}
|
|
@@ -120,7 +159,7 @@ function readBigInt254BE(offset) {
|
|
|
120
159
|
}
|
|
121
160
|
function writeBigInt254BE(value) {
|
|
122
161
|
const totalBytes = 32;
|
|
123
|
-
for
|
|
162
|
+
for(let offset = totalBytes - 1; offset >= 0; --offset){
|
|
124
163
|
this.writeUint8(Number(value & 0xffn), offset);
|
|
125
164
|
value >>= 8n;
|
|
126
165
|
}
|
|
@@ -128,7 +167,7 @@ function writeBigInt254BE(value) {
|
|
|
128
167
|
function readBigInt128BE(offset) {
|
|
129
168
|
const totalBytes = 16;
|
|
130
169
|
let ret = 0n;
|
|
131
|
-
for
|
|
170
|
+
for(let i = 0; i < totalBytes; ++i){
|
|
132
171
|
ret <<= 8n;
|
|
133
172
|
ret |= BigInt(this.readUint8(i + offset));
|
|
134
173
|
}
|
|
@@ -136,7 +175,7 @@ function readBigInt128BE(offset) {
|
|
|
136
175
|
}
|
|
137
176
|
function writeBigInt128BE(value) {
|
|
138
177
|
const totalBytes = 16;
|
|
139
|
-
for
|
|
178
|
+
for(let offset = totalBytes - 1; offset >= 0; --offset){
|
|
140
179
|
this.writeUint8(Number(value & 0xffn), offset);
|
|
141
180
|
value >>= 8n;
|
|
142
181
|
}
|
|
@@ -146,13 +185,12 @@ function writeBigInt128BE(value) {
|
|
|
146
185
|
* @param cursor Buffer to read from. Might be longer than needed.
|
|
147
186
|
* @param operands Specification of the operand types.
|
|
148
187
|
* @returns An array as big as {@code operands}, with the converted TS values.
|
|
149
|
-
*/
|
|
150
|
-
export function deserialize(cursor, operands) {
|
|
188
|
+
*/ export function deserialize(cursor, operands) {
|
|
151
189
|
const argValues = [];
|
|
152
190
|
if (Buffer.isBuffer(cursor)) {
|
|
153
191
|
cursor = new BufferCursor(cursor);
|
|
154
192
|
}
|
|
155
|
-
for (const op of operands)
|
|
193
|
+
for (const op of operands){
|
|
156
194
|
const opType = op;
|
|
157
195
|
const [sizeBytes, reader, _writer] = OPERAND_SPEC.get(opType);
|
|
158
196
|
argValues.push(reader.call(cursor.buffer(), cursor.position()));
|
|
@@ -169,13 +207,15 @@ export function deserialize(cursor, operands) {
|
|
|
169
207
|
* @param operands Type specification for the values to be serialized.
|
|
170
208
|
* @param cls The class to be serialized.
|
|
171
209
|
* @returns
|
|
172
|
-
*/
|
|
173
|
-
export function serializeAs(operands, opcode, cls) {
|
|
210
|
+
*/ export function serializeAs(operands, opcode, cls) {
|
|
174
211
|
const chunks = [];
|
|
175
|
-
const rawClassValues = [
|
|
212
|
+
const rawClassValues = [
|
|
213
|
+
opcode,
|
|
214
|
+
...Object.values(cls)
|
|
215
|
+
];
|
|
176
216
|
assert(rawClassValues.length === operands.length, `Got ${rawClassValues.length} values but only ${operands.length} serialization operands are specified!`);
|
|
177
217
|
const classValues = rawClassValues;
|
|
178
|
-
for
|
|
218
|
+
for(let i = 0; i < operands.length; i++){
|
|
179
219
|
const opType = operands[i];
|
|
180
220
|
const [sizeBytes, _reader, writer] = OPERAND_SPEC.get(opType);
|
|
181
221
|
const buf = Buffer.alloc(sizeBytes);
|
|
@@ -184,4 +224,3 @@ export function serializeAs(operands, opcode, cls) {
|
|
|
184
224
|
}
|
|
185
225
|
return Buffer.concat(chunks);
|
|
186
226
|
}
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25fc2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vc2VyaWFsaXphdGlvbi9pbnN0cnVjdGlvbl9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRDs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxNQThFWDtBQTlFRCxXQUFZLE1BQU07SUFDaEIsVUFBVTtJQUNWLHFDQUFLLENBQUE7SUFDTCx1Q0FBTSxDQUFBO0lBQ04scUNBQUssQ0FBQTtJQUNMLHVDQUFNLENBQUE7SUFDTixxQ0FBSyxDQUFBO0lBQ0wsdUNBQU0sQ0FBQTtJQUNOLHFDQUFLLENBQUE7SUFDTCx1Q0FBTSxDQUFBO0lBQ04sdUNBQU0sQ0FBQTtJQUNOLHlDQUFPLENBQUE7SUFDUCxvQ0FBSSxDQUFBO0lBQ0osc0NBQUssQ0FBQTtJQUNMLG9DQUFJLENBQUE7SUFDSixzQ0FBSyxDQUFBO0lBQ0wsc0NBQUssQ0FBQTtJQUNMLHdDQUFNLENBQUE7SUFDTixzQ0FBSyxDQUFBO0lBQ0wsd0NBQU0sQ0FBQTtJQUNOLG9DQUFJLENBQUE7SUFDSixzQ0FBSyxDQUFBO0lBQ0wsc0NBQUssQ0FBQTtJQUNMLHdDQUFNLENBQUE7SUFDTixzQ0FBSyxDQUFBO0lBQ0wsd0NBQU0sQ0FBQTtJQUNOLHNDQUFLLENBQUE7SUFDTCx3Q0FBTSxDQUFBO0lBQ04sc0NBQUssQ0FBQTtJQUNMLHdDQUFNLENBQUE7SUFDTix3Q0FBTSxDQUFBO0lBQ04sMENBQU8sQ0FBQTtJQUNQLHdCQUF3QjtJQUN4QixvREFBWSxDQUFBO0lBQ1osb0RBQVksQ0FBQTtJQUNaLHdEQUFjLENBQUE7SUFDZCx3REFBYyxDQUFBO0lBQ2QsZUFBZTtJQUNmLDBDQUFP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
|
package/dest/avm/test_utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr, computePublicBytecodeCommitment
|
|
1
|
+
import { Fr, computePublicBytecodeCommitment } from '@aztec/circuits.js';
|
|
2
2
|
import { mock } from 'jest-mock-extended';
|
|
3
3
|
export async function mockGetBytecode(worldStateDB, bytecode) {
|
|
4
4
|
const commitment = await computePublicBytecodeCommitment(bytecode);
|
|
@@ -15,14 +15,13 @@ export function mockNoteHashCount(mockedTrace, count) {
|
|
|
15
15
|
mockedTrace.getNoteHashCount.mockReturnValue(count);
|
|
16
16
|
}
|
|
17
17
|
export function mockStorageReadWithMap(worldStateDB, mockedStorage) {
|
|
18
|
-
worldStateDB.storageRead.mockImplementation((_address, slot)
|
|
18
|
+
worldStateDB.storageRead.mockImplementation((_address, slot)=>Promise.resolve(mockedStorage.get(slot.toBigInt()) ?? Fr.ZERO));
|
|
19
19
|
}
|
|
20
20
|
export function mockNoteHashExists(worldStateDB, _leafIndex, value) {
|
|
21
|
-
worldStateDB.getCommitmentValue.mockImplementation((index)
|
|
21
|
+
worldStateDB.getCommitmentValue.mockImplementation((index)=>{
|
|
22
22
|
if (index == _leafIndex.toBigInt()) {
|
|
23
23
|
return Promise.resolve(value);
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
24
|
+
} else {
|
|
26
25
|
// This is ok for now since the traceing functions handle it
|
|
27
26
|
return Promise.resolve(undefined);
|
|
28
27
|
}
|
|
@@ -32,11 +31,10 @@ export function mockNullifierExists(worldStateDB, leafIndex, _value) {
|
|
|
32
31
|
worldStateDB.getNullifierIndex.mockResolvedValue(leafIndex.toBigInt());
|
|
33
32
|
}
|
|
34
33
|
export function mockL1ToL2MessageExists(worldStateDB, leafIndex, value, valueAtOtherIndices) {
|
|
35
|
-
worldStateDB.getL1ToL2LeafValue.mockImplementation((index)
|
|
34
|
+
worldStateDB.getL1ToL2LeafValue.mockImplementation((index)=>{
|
|
36
35
|
if (index == leafIndex.toBigInt()) {
|
|
37
36
|
return Promise.resolve(value);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
37
|
+
} else {
|
|
40
38
|
// any indices other than mockAtLeafIndex will return a different value
|
|
41
39
|
// (or undefined if no value is specified for other indices)
|
|
42
40
|
return Promise.resolve(valueAtOtherIndices);
|
|
@@ -49,4 +47,3 @@ export function mockGetContractInstance(worldStateDB, contractInstance) {
|
|
|
49
47
|
export function mockGetContractClass(worldStateDB, contractClass) {
|
|
50
48
|
worldStateDB.getContractClass.mockResolvedValue(contractClass);
|
|
51
49
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vdGVzdF91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsRUFBRSxFQUNGLCtCQUErQixHQUNoQyxNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUsxQyxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FBQyxZQUEwQixFQUFFLFFBQWdCO0lBQ2hGLE1BQU0sVUFBVSxHQUFHLE1BQU0sK0JBQStCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEUsWUFBMEMsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkYsWUFBMEMsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFxQyxFQUFFLFdBQTRDO0lBQzlHLEtBQXFELENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FDekUsV0FBVyxJQUFJLElBQUksRUFBa0MsQ0FDdEQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFlBQTBCLEVBQUUsS0FBUztJQUNsRSxZQUEwQyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFdBQTJDLEVBQUUsS0FBYTtJQUN6RixXQUEyRCxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2RyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFlBQTBCLEVBQUUsYUFBOEI7SUFDOUYsWUFBMEMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDNUYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsWUFBMEIsRUFBRSxVQUFjLEVBQUUsS0FBVTtJQUN0RixZQUEwQyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDbEcsSUFBSSxLQUFLLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbkMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sNERBQTREO1lBQzVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFlBQTBCLEVBQUUsU0FBYSxFQUFFLE1BQVc7SUFDdkYsWUFBMEMsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUN4RyxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxZQUEwQixFQUMxQixTQUFhLEVBQ2IsS0FBUyxFQUNULG1CQUF3QjtJQUV2QixZQUEwQyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDbEcsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sdUVBQXVFO1lBQ3ZFLDREQUE0RDtZQUM1RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW9CLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFlBQTBCLEVBQUUsZ0JBQTZDO0lBQzlHLFlBQTBDLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFlBQTBCLEVBQUUsYUFBa0M7SUFDaEcsWUFBMEMsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNoRyxDQUFDIn0=
|