@aztec/simulator 0.0.1-commit.96bb3f7 → 0.0.1-commit.96dac018d
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/README.md +6 -4
- package/dest/common/errors.d.ts +7 -1
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/private/acvm/acvm.d.ts +4 -2
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +4 -3
- package/dest/private/acvm_native.d.ts +5 -3
- package/dest/private/acvm_native.d.ts.map +1 -1
- package/dest/private/acvm_native.js +8 -6
- package/dest/private/acvm_wasm.d.ts +4 -3
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm.js +4 -4
- package/dest/private/circuit_recording/circuit_recorder.d.ts +4 -3
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +5 -3
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
- package/dest/private/factory.d.ts +3 -3
- package/dest/private/factory.d.ts.map +1 -1
- package/dest/private/factory.js +7 -4
- package/dest/public/avm/avm_context.d.ts +3 -3
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +3 -3
- package/dest/public/avm/avm_execution_environment.d.ts +6 -5
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +3 -3
- package/dest/public/avm/avm_machine_state.d.ts +6 -5
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +3 -2
- package/dest/public/avm/avm_memory_types.d.ts +1 -1
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +3 -0
- package/dest/public/avm/avm_simulator.d.ts +3 -2
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +5 -4
- package/dest/public/avm/calldata.d.ts +51 -0
- package/dest/public/avm/calldata.d.ts.map +1 -0
- package/dest/public/avm/calldata.js +63 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +3 -2
- package/dest/public/avm/fixtures/initializers.d.ts +1 -1
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
- package/dest/public/avm/fixtures/initializers.js +2 -1
- package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +41 -42
- package/dest/public/avm/opcodes/arithmetic.d.ts +8 -8
- 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 +7 -7
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +5 -5
- package/dest/public/avm/opcodes/comparators.d.ts +4 -4
- 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 +3 -3
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +8 -8
- package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +4 -4
- package/dest/public/avm/opcodes/conversion.d.ts +3 -3
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +4 -4
- package/dest/public/avm/opcodes/ec_add.d.ts +4 -4
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +15 -6
- package/dest/public/avm/opcodes/environment_getters.d.ts +3 -3
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +4 -4
- package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +23 -23
- package/dest/public/avm/opcodes/hashing.d.ts +8 -8
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +12 -12
- package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction_impl.js +4 -4
- package/dest/public/avm/opcodes/memory.d.ts +14 -14
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +25 -25
- package/dest/public/avm/opcodes/misc.d.ts +3 -3
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +4 -4
- package/dest/public/avm/opcodes/storage.d.ts +16 -15
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +34 -24
- package/dest/public/avm/serialization/bytecode_serialization.js +3 -3
- package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +1 -1
- package/dest/public/debug_fn_name.d.ts +4 -4
- package/dest/public/debug_fn_name.d.ts.map +1 -1
- package/dest/public/debug_fn_name.js +7 -5
- package/dest/public/executor_metrics.d.ts +1 -1
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +7 -2
- package/dest/public/fixtures/amm_test.js +2 -2
- package/dest/public/fixtures/bulk_test.d.ts +3 -3
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +11 -11
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tests.js +18 -18
- package/dest/public/fixtures/minimal_public_tx.js +2 -2
- package/dest/public/fixtures/opcode_spammer.d.ts +3 -4
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -1
- package/dest/public/fixtures/opcode_spammer.js +99 -127
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +29 -2
- package/dest/public/fixtures/utils.js +4 -4
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +21 -7
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +42 -10
- package/dest/public/fuzzing/avm_simulator_bin.js +15 -8
- package/dest/public/hinting_db_sources.d.ts +2 -2
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +1 -1
- package/dest/public/public_db_sources.d.ts +4 -3
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +4 -4
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +2 -2
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +1 -1
- package/dest/public/public_processor/public_processor.d.ts +8 -4
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +26 -11
- package/dest/public/public_processor/public_processor_metrics.d.ts +2 -2
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +20 -4
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +3 -2
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +2 -2
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +5 -5
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +10 -10
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +4 -4
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +7 -7
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +4 -4
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +6 -6
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +3 -2
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +2 -2
- package/dest/public/public_tx_simulator/factories.d.ts +3 -2
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/factories.js +4 -4
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +4 -3
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +8 -8
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +6 -4
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +14 -9
- package/dest/public/side_effect_trace.d.ts +5 -4
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +3 -3
- package/dest/public/state_manager/state_manager.d.ts +10 -4
- package/dest/public/state_manager/state_manager.d.ts.map +1 -1
- package/dest/public/state_manager/state_manager.js +14 -7
- package/dest/public/test_executor_metrics.d.ts +8 -2
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +24 -2
- package/package.json +17 -17
- package/src/private/acvm/acvm.ts +4 -3
- package/src/private/acvm_native.ts +11 -5
- package/src/private/acvm_wasm.ts +7 -3
- package/src/private/circuit_recording/circuit_recorder.ts +5 -3
- package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
- package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
- package/src/private/factory.ts +7 -4
- package/src/public/avm/avm_context.ts +2 -2
- package/src/public/avm/avm_contract_call_result.ts +8 -6
- package/src/public/avm/avm_execution_environment.ts +9 -4
- package/src/public/avm/avm_gas.ts +2 -2
- package/src/public/avm/avm_machine_state.ts +6 -5
- package/src/public/avm/avm_memory_types.ts +4 -0
- package/src/public/avm/avm_simulator.ts +8 -5
- package/src/public/avm/calldata.ts +100 -0
- package/src/public/avm/fixtures/account_proof.json +553 -0
- package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
- package/src/public/avm/fixtures/avm_simulation_tester.ts +8 -2
- package/src/public/avm/fixtures/initializers.ts +2 -1
- package/src/public/avm/opcodes/accrued_substate.ts +30 -33
- package/src/public/avm/opcodes/arithmetic.ts +1 -1
- package/src/public/avm/opcodes/bitwise.ts +3 -3
- package/src/public/avm/opcodes/comparators.ts +1 -1
- package/src/public/avm/opcodes/contract.ts +4 -7
- package/src/public/avm/opcodes/control_flow.ts +2 -2
- package/src/public/avm/opcodes/conversion.ts +3 -3
- package/src/public/avm/opcodes/ec_add.ts +13 -4
- package/src/public/avm/opcodes/environment_getters.ts +3 -3
- package/src/public/avm/opcodes/external_calls.ts +17 -16
- package/src/public/avm/opcodes/hashing.ts +6 -6
- package/src/public/avm/opcodes/instruction_impl.ts +2 -2
- package/src/public/avm/opcodes/memory.ts +19 -19
- package/src/public/avm/opcodes/misc.ts +2 -2
- package/src/public/avm/opcodes/storage.ts +30 -22
- package/src/public/avm/serialization/bytecode_serialization.ts +2 -2
- package/src/public/avm/serialization/instruction_serialization.ts +1 -1
- package/src/public/debug_fn_name.ts +10 -8
- package/src/public/executor_metrics.ts +4 -1
- package/src/public/fixtures/amm_test.ts +2 -2
- package/src/public/fixtures/custom_bytecode_tests.ts +27 -18
- package/src/public/fixtures/minimal_public_tx.ts +2 -2
- package/src/public/fixtures/opcode_spammer.ts +196 -117
- package/src/public/fixtures/public_tx_simulation_tester.ts +34 -3
- package/src/public/fixtures/utils.ts +4 -4
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +61 -13
- package/src/public/fuzzing/avm_simulator_bin.ts +26 -4
- package/src/public/hinting_db_sources.ts +1 -1
- package/src/public/public_db_sources.ts +15 -5
- package/src/public/public_processor/guarded_merkle_tree.ts +1 -1
- package/src/public/public_processor/public_processor.ts +43 -20
- package/src/public/public_processor/public_processor_metrics.ts +10 -4
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +6 -3
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +11 -8
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +7 -5
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +7 -5
- package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +3 -1
- package/src/public/public_tx_simulator/factories.ts +6 -3
- package/src/public/public_tx_simulator/public_tx_context.ts +13 -6
- package/src/public/public_tx_simulator/public_tx_simulator.ts +21 -10
- package/src/public/side_effect_trace.ts +5 -2
- package/src/public/state_manager/state_manager.ts +29 -20
- package/src/public/test_executor_metrics.ts +27 -3
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
* - `EMITNOTEHASH`: max 64 per TX
|
|
144
144
|
* - `EMITNULLIFIER`: max 63 per TX (one reserved for TX nullifier)
|
|
145
145
|
* - `SENDL2TOL1MSG`: max 8 per TX
|
|
146
|
-
* - `
|
|
146
|
+
* - `EMITPUBLICLOG`: limited by total log payload size
|
|
147
147
|
*
|
|
148
148
|
* By having the inner contract REVERT after emitting side effects, those effects are discarded, allowing the outer contract to call it again. This enables thousands of opcode executions per TX instead of just the limit.
|
|
149
149
|
*
|
|
@@ -152,12 +152,11 @@ import { Grumpkin } from '@aztec/foundation/crypto/grumpkin';
|
|
|
152
152
|
import { randomBigInt } from '@aztec/foundation/crypto/random';
|
|
153
153
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
154
154
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
155
|
-
import {
|
|
156
|
-
import { computePublicDataTreeLeafSlot, siloNullifier } from '@aztec/stdlib/hash';
|
|
155
|
+
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
157
156
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
158
157
|
import assert from 'assert';
|
|
159
158
|
import { Field, TaggedMemory, TypeTag, Uint1, Uint32, Uint64 } from '../avm/avm_memory_types.js';
|
|
160
|
-
import { Add, And, Call, CalldataCopy, Cast, DebugLog, Div, EcAdd, EmitNoteHash, EmitNullifier,
|
|
159
|
+
import { Add, And, Call, CalldataCopy, Cast, DebugLog, Div, EcAdd, EmitNoteHash, EmitNullifier, EmitPublicLog, Eq, FieldDiv, GetContractInstance, GetEnvVar, 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, SuccessCopy, ToRadixBE, Xor } from '../avm/opcodes/index.js';
|
|
161
160
|
import { encodeToBytecode } from '../avm/serialization/bytecode_serialization.js';
|
|
162
161
|
import { Opcode } from '../avm/serialization/instruction_serialization.js';
|
|
163
162
|
import { deployCustomBytecode, executeCustomBytecode } from './custom_bytecode_tester.js';
|
|
@@ -169,8 +168,7 @@ import { deployCustomBytecode, executeCustomBytecode } from './custom_bytecode_t
|
|
|
169
168
|
* before running the spammer so that existence checks can find them.
|
|
170
169
|
*/ export const WARM_NOTE_HASH = new Fr(0xdeadbeefn);
|
|
171
170
|
export const WARM_L1_TO_L2_MSG = new Fr(0xcafebabedeadbeefn);
|
|
172
|
-
/** Warm nullifier
|
|
173
|
-
export const WARM_NULLIFIER_ADDRESS = AztecAddress.fromNumber(0xbeef);
|
|
171
|
+
/** Warm nullifier constant - a pre-siloed nullifier value inserted directly into the tree */ export const WARM_SILOED_NULLIFIER = new Fr(0xdeadbeef0001n);
|
|
174
172
|
/** Warm storage constants - storage is inserted for the deployed contract's address */ export const WARM_STORAGE_SLOT = new Fr(0xdeadbeef0002n);
|
|
175
173
|
export const WARM_STORAGE_VALUE = new Fr(0xcafebabe0003n);
|
|
176
174
|
/**
|
|
@@ -197,10 +195,9 @@ export const WARM_L1_TO_L2_MSG_LEAF_INDEX = 0n;
|
|
|
197
195
|
await merkleTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, [
|
|
198
196
|
WARM_L1_TO_L2_MSG
|
|
199
197
|
]);
|
|
200
|
-
// Insert siloed nullifier into nullifier tree
|
|
201
|
-
const siloedNullifier = await siloNullifier(WARM_NULLIFIER_ADDRESS, WARM_NULLIFIER);
|
|
198
|
+
// Insert siloed nullifier into nullifier tree (already siloed - used directly by NULLIFIEREXISTS)
|
|
202
199
|
await merkleTrees.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [
|
|
203
|
-
|
|
200
|
+
WARM_SILOED_NULLIFIER.toBuffer()
|
|
204
201
|
]);
|
|
205
202
|
// Insert storage value into public data tree
|
|
206
203
|
const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, WARM_STORAGE_SLOT);
|
|
@@ -316,11 +313,11 @@ const MAX_U32 = 0xffffffffn;
|
|
|
316
313
|
value: new Uint32(MAX_U32)
|
|
317
314
|
},
|
|
318
315
|
()=>[
|
|
319
|
-
new CalldataCopy(/*
|
|
316
|
+
new CalldataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ CALL_COPY_SIZE_OFFSET, /*cdStartOffset=*/ CALL_CALLDATA_INDEX_OFFSET, /*dstOffset=*/ CALL_ADDR_OFFSET)
|
|
320
317
|
]
|
|
321
318
|
],
|
|
322
319
|
targetInstructions: ()=>[
|
|
323
|
-
new Call(/*
|
|
320
|
+
new Call(/*addressing_mode=*/ 0, /*l2GasOffset=*/ CALL_L2_GAS_OFFSET, /*daGasOffset=*/ CALL_DA_GAS_OFFSET, /*addrOffset=*/ CALL_ADDR_OFFSET, /*argsSizeOffset=*/ CALL_ARGS_SIZE_OFFSET, /*argsOffset=*/ CALL_ARGS_OFFSET)
|
|
324
321
|
],
|
|
325
322
|
addressAsCalldata: true
|
|
326
323
|
};
|
|
@@ -340,11 +337,11 @@ const STATIC_CALL_CONFIG = {
|
|
|
340
337
|
value: new Uint32(MAX_U32)
|
|
341
338
|
},
|
|
342
339
|
()=>[
|
|
343
|
-
new CalldataCopy(/*
|
|
340
|
+
new CalldataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ CALL_COPY_SIZE_OFFSET, /*cdStartOffset=*/ CALL_CALLDATA_INDEX_OFFSET, /*dstOffset=*/ CALL_ADDR_OFFSET)
|
|
344
341
|
]
|
|
345
342
|
],
|
|
346
343
|
targetInstructions: ()=>[
|
|
347
|
-
new StaticCall(/*
|
|
344
|
+
new StaticCall(/*addressing_mode=*/ 0, /*l2GasOffset=*/ CALL_L2_GAS_OFFSET, /*daGasOffset=*/ CALL_DA_GAS_OFFSET, /*addrOffset=*/ CALL_ADDR_OFFSET, /*argsSizeOffset=*/ CALL_ARGS_SIZE_OFFSET, /*argsOffset=*/ CALL_ARGS_OFFSET)
|
|
348
345
|
],
|
|
349
346
|
addressAsCalldata: true
|
|
350
347
|
};
|
|
@@ -372,7 +369,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
372
369
|
}
|
|
373
370
|
],
|
|
374
371
|
targetInstructions: ()=>[
|
|
375
|
-
new Add(/*
|
|
372
|
+
new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.ADD_8, Add.wireFormat8)
|
|
376
373
|
]
|
|
377
374
|
})),
|
|
378
375
|
[Opcode.SUB_8]: ALL_TAGS.map((tag)=>({
|
|
@@ -388,7 +385,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
388
385
|
}
|
|
389
386
|
],
|
|
390
387
|
targetInstructions: ()=>[
|
|
391
|
-
new Sub(/*
|
|
388
|
+
new Sub(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.SUB_8, Sub.wireFormat8)
|
|
392
389
|
]
|
|
393
390
|
})),
|
|
394
391
|
[Opcode.MUL_8]: ALL_TAGS.map((tag)=>({
|
|
@@ -404,7 +401,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
404
401
|
}
|
|
405
402
|
],
|
|
406
403
|
targetInstructions: ()=>[
|
|
407
|
-
new Mul(/*
|
|
404
|
+
new Mul(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.MUL_8, Mul.wireFormat8)
|
|
408
405
|
]
|
|
409
406
|
})),
|
|
410
407
|
// DIV doesn't support FIELD type
|
|
@@ -421,7 +418,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
421
418
|
}
|
|
422
419
|
],
|
|
423
420
|
targetInstructions: ()=>[
|
|
424
|
-
new Div(/*
|
|
421
|
+
new Div(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.DIV_8, Div.wireFormat8)
|
|
425
422
|
]
|
|
426
423
|
})),
|
|
427
424
|
// Field-only
|
|
@@ -438,7 +435,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
438
435
|
}
|
|
439
436
|
],
|
|
440
437
|
targetInstructions: ()=>[
|
|
441
|
-
new FieldDiv(/*
|
|
438
|
+
new FieldDiv(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.FDIV_8, FieldDiv.wireFormat8)
|
|
442
439
|
]
|
|
443
440
|
}
|
|
444
441
|
],
|
|
@@ -458,7 +455,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
458
455
|
}
|
|
459
456
|
],
|
|
460
457
|
targetInstructions: ()=>[
|
|
461
|
-
new Eq(/*
|
|
458
|
+
new Eq(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(Opcode.EQ_8, Eq.wireFormat8)
|
|
462
459
|
]
|
|
463
460
|
})),
|
|
464
461
|
[Opcode.LT_8]: ALL_TAGS.map((tag)=>({
|
|
@@ -474,7 +471,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
474
471
|
}
|
|
475
472
|
],
|
|
476
473
|
targetInstructions: ()=>[
|
|
477
|
-
new Lt(/*
|
|
474
|
+
new Lt(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(Opcode.LT_8, Lt.wireFormat8)
|
|
478
475
|
]
|
|
479
476
|
})),
|
|
480
477
|
[Opcode.LTE_8]: ALL_TAGS.map((tag)=>({
|
|
@@ -490,7 +487,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
490
487
|
}
|
|
491
488
|
],
|
|
492
489
|
targetInstructions: ()=>[
|
|
493
|
-
new Lte(/*
|
|
490
|
+
new Lte(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(Opcode.LTE_8, Lte.wireFormat8)
|
|
494
491
|
]
|
|
495
492
|
})),
|
|
496
493
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -509,7 +506,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
509
506
|
}
|
|
510
507
|
],
|
|
511
508
|
targetInstructions: ()=>[
|
|
512
|
-
new And(/*
|
|
509
|
+
new And(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.AND_8, And.wireFormat8)
|
|
513
510
|
]
|
|
514
511
|
})),
|
|
515
512
|
[Opcode.OR_8]: INT_TAGS.map((tag)=>({
|
|
@@ -525,7 +522,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
525
522
|
}
|
|
526
523
|
],
|
|
527
524
|
targetInstructions: ()=>[
|
|
528
|
-
new Or(/*
|
|
525
|
+
new Or(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.OR_8, Or.wireFormat8)
|
|
529
526
|
]
|
|
530
527
|
})),
|
|
531
528
|
[Opcode.XOR_8]: INT_TAGS.map((tag)=>({
|
|
@@ -541,7 +538,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
541
538
|
}
|
|
542
539
|
],
|
|
543
540
|
targetInstructions: ()=>[
|
|
544
|
-
new Xor(/*
|
|
541
|
+
new Xor(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.XOR_8, Xor.wireFormat8)
|
|
545
542
|
]
|
|
546
543
|
})),
|
|
547
544
|
[Opcode.NOT_8]: INT_TAGS.map((tag)=>({
|
|
@@ -553,7 +550,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
553
550
|
}
|
|
554
551
|
],
|
|
555
552
|
targetInstructions: ()=>[
|
|
556
|
-
new Not(/*
|
|
553
|
+
new Not(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*dstOffset=*/ 0).as(Opcode.NOT_8, Not.wireFormat8)
|
|
557
554
|
]
|
|
558
555
|
})),
|
|
559
556
|
[Opcode.SHL_8]: INT_TAGS.map((tag)=>({
|
|
@@ -569,7 +566,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
569
566
|
}
|
|
570
567
|
],
|
|
571
568
|
targetInstructions: ()=>[
|
|
572
|
-
new Shl(/*
|
|
569
|
+
new Shl(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.SHL_8, Shl.wireFormat8)
|
|
573
570
|
]
|
|
574
571
|
})),
|
|
575
572
|
[Opcode.SHR_8]: INT_TAGS.map((tag)=>({
|
|
@@ -585,7 +582,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
585
582
|
}
|
|
586
583
|
],
|
|
587
584
|
targetInstructions: ()=>[
|
|
588
|
-
new Shr(/*
|
|
585
|
+
new Shr(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.SHR_8, Shr.wireFormat8)
|
|
589
586
|
]
|
|
590
587
|
})),
|
|
591
588
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -600,7 +597,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
600
597
|
}
|
|
601
598
|
],
|
|
602
599
|
targetInstructions: ()=>[
|
|
603
|
-
new Cast(/*
|
|
600
|
+
new Cast(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*dstOffset=*/ 1, /*dstTag=*/ TypeTag.UINT32).as(Opcode.CAST_8, Cast.wireFormat8)
|
|
604
601
|
]
|
|
605
602
|
})),
|
|
606
603
|
[Opcode.MOV_8]: ALL_TAGS.map((tag)=>({
|
|
@@ -612,7 +609,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
612
609
|
}
|
|
613
610
|
],
|
|
614
611
|
targetInstructions: ()=>[
|
|
615
|
-
new Mov(/*
|
|
612
|
+
new Mov(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*dstOffset=*/ 1).as(Opcode.MOV_8, Mov.wireFormat8)
|
|
616
613
|
]
|
|
617
614
|
})),
|
|
618
615
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -648,7 +645,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
648
645
|
{
|
|
649
646
|
setup: [],
|
|
650
647
|
targetInstructions: ()=>[
|
|
651
|
-
new Set(/*
|
|
648
|
+
new Set(/*addressing_mode=*/ 0, /*dstOffset=*/ 0, /*inTag=*/ TypeTag.UINT128, /*value=*/ 4242424242424242n).as(Opcode.SET_128, Set.wireFormat128)
|
|
652
649
|
]
|
|
653
650
|
}
|
|
654
651
|
],
|
|
@@ -679,7 +676,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
679
676
|
}
|
|
680
677
|
],
|
|
681
678
|
targetInstructions: ()=>[
|
|
682
|
-
new JumpI(/*
|
|
679
|
+
new JumpI(/*addressing_mode=*/ 0, /*condOffset=*/ 0, /*loc=*/ 0)
|
|
683
680
|
]
|
|
684
681
|
}
|
|
685
682
|
],
|
|
@@ -725,7 +722,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
725
722
|
}
|
|
726
723
|
],
|
|
727
724
|
targetInstructions: ()=>[
|
|
728
|
-
new Return(/*
|
|
725
|
+
new Return(/*addressing_mode=*/ 0, /*returnSizeOffset=*/ 0, /*returnOffset=*/ 0)
|
|
729
726
|
],
|
|
730
727
|
// Use the side-effect-limit pattern (even though it's not a side-effect) as it fits
|
|
731
728
|
// this case (we want to CALL, RETURN, then CALL again back in parent). We omit "cleanup"
|
|
@@ -744,7 +741,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
744
741
|
}
|
|
745
742
|
],
|
|
746
743
|
targetInstructions: ()=>[
|
|
747
|
-
new Revert(/*
|
|
744
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 0, /*returnOffset=*/ 1).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
748
745
|
],
|
|
749
746
|
limit: 1
|
|
750
747
|
}
|
|
@@ -756,7 +753,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
756
753
|
{
|
|
757
754
|
setup: [],
|
|
758
755
|
targetInstructions: ()=>[
|
|
759
|
-
new GetEnvVar(/*
|
|
756
|
+
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 0, /*varEnum=*/ 0).as(Opcode.GETENVVAR_16, GetEnvVar.wireFormat16)
|
|
760
757
|
]
|
|
761
758
|
}
|
|
762
759
|
],
|
|
@@ -776,7 +773,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
776
773
|
}
|
|
777
774
|
],
|
|
778
775
|
targetInstructions: ()=>[
|
|
779
|
-
new CalldataCopy(/*
|
|
776
|
+
new CalldataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*cdStartOffset=*/ 1, /*dstOffset=*/ 2)
|
|
780
777
|
]
|
|
781
778
|
},
|
|
782
779
|
{
|
|
@@ -795,7 +792,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
795
792
|
}
|
|
796
793
|
],
|
|
797
794
|
targetInstructions: ()=>[
|
|
798
|
-
new CalldataCopy(/*
|
|
795
|
+
new CalldataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*cdStartOffset=*/ 1, /*dstOffset=*/ 2)
|
|
799
796
|
]
|
|
800
797
|
},
|
|
801
798
|
{
|
|
@@ -812,7 +809,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
812
809
|
}
|
|
813
810
|
],
|
|
814
811
|
targetInstructions: ()=>[
|
|
815
|
-
new CalldataCopy(/*
|
|
812
|
+
new CalldataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*cdStartOffset=*/ 1, /*dstOffset=*/ 2)
|
|
816
813
|
]
|
|
817
814
|
}
|
|
818
815
|
],
|
|
@@ -820,7 +817,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
820
817
|
{
|
|
821
818
|
setup: [],
|
|
822
819
|
targetInstructions: ()=>[
|
|
823
|
-
new SuccessCopy(/*
|
|
820
|
+
new SuccessCopy(/*addressing_mode=*/ 0, /*dstOffset=*/ 0)
|
|
824
821
|
]
|
|
825
822
|
}
|
|
826
823
|
],
|
|
@@ -828,7 +825,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
828
825
|
{
|
|
829
826
|
setup: [],
|
|
830
827
|
targetInstructions: ()=>[
|
|
831
|
-
new ReturndataSize(/*
|
|
828
|
+
new ReturndataSize(/*addressing_mode=*/ 0, /*dstOffset=*/ 0)
|
|
832
829
|
]
|
|
833
830
|
}
|
|
834
831
|
],
|
|
@@ -847,7 +844,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
847
844
|
}
|
|
848
845
|
],
|
|
849
846
|
targetInstructions: ()=>[
|
|
850
|
-
new ReturndataCopy(/*
|
|
847
|
+
new ReturndataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*rdStartOffset=*/ 1, /*dstOffset=*/ 2)
|
|
851
848
|
]
|
|
852
849
|
},
|
|
853
850
|
{
|
|
@@ -866,7 +863,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
866
863
|
}
|
|
867
864
|
],
|
|
868
865
|
targetInstructions: ()=>[
|
|
869
|
-
new ReturndataCopy(/*
|
|
866
|
+
new ReturndataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*rdStartOffset=*/ 1, /*dstOffset=*/ 2)
|
|
870
867
|
]
|
|
871
868
|
},
|
|
872
869
|
{
|
|
@@ -883,7 +880,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
883
880
|
}
|
|
884
881
|
],
|
|
885
882
|
targetInstructions: ()=>[
|
|
886
|
-
new ReturndataCopy(/*
|
|
883
|
+
new ReturndataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*rdStartOffset=*/ 1, /*dstOffset=*/ 2)
|
|
887
884
|
]
|
|
888
885
|
}
|
|
889
886
|
],
|
|
@@ -897,10 +894,14 @@ const STATIC_CALL_CONFIG = {
|
|
|
897
894
|
{
|
|
898
895
|
offset: 0,
|
|
899
896
|
value: new Field(Fr.random())
|
|
900
|
-
}
|
|
897
|
+
},
|
|
898
|
+
()=>[
|
|
899
|
+
// Get current contract address into offset 1
|
|
900
|
+
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 1, /*varEnum=*/ 0).as(Opcode.GETENVVAR_16, GetEnvVar.wireFormat16)
|
|
901
|
+
]
|
|
901
902
|
],
|
|
902
903
|
targetInstructions: ()=>[
|
|
903
|
-
new SLoad(/*
|
|
904
|
+
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*contractAddressOffset=*/ 1, /*dstOffset=*/ 2)
|
|
904
905
|
]
|
|
905
906
|
},
|
|
906
907
|
{
|
|
@@ -910,15 +911,19 @@ const STATIC_CALL_CONFIG = {
|
|
|
910
911
|
{
|
|
911
912
|
offset: 0,
|
|
912
913
|
value: new Field(WARM_STORAGE_SLOT)
|
|
913
|
-
}
|
|
914
|
+
},
|
|
915
|
+
()=>[
|
|
916
|
+
// Get current contract address into offset 1
|
|
917
|
+
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 1, /*varEnum=*/ 0).as(Opcode.GETENVVAR_16, GetEnvVar.wireFormat16)
|
|
918
|
+
]
|
|
914
919
|
],
|
|
915
920
|
targetInstructions: ()=>[
|
|
916
|
-
new SLoad(/*
|
|
921
|
+
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*contractAddressOffset=*/ 1, /*dstOffset=*/ 2)
|
|
917
922
|
]
|
|
918
923
|
},
|
|
919
924
|
{
|
|
920
925
|
label: 'Warm read (SSTORE first, unique slot per SLOAD)',
|
|
921
|
-
// Memory layout: slot (incremented), value, constant 1, revertSize, loaded value
|
|
926
|
+
// Memory layout: slot (incremented), value, constant 1, contract address (from GETENVVAR), revertSize, loaded value
|
|
922
927
|
setup: [
|
|
923
928
|
{
|
|
924
929
|
offset: 0,
|
|
@@ -932,18 +937,22 @@ const STATIC_CALL_CONFIG = {
|
|
|
932
937
|
offset: 2,
|
|
933
938
|
value: new Field(1n)
|
|
934
939
|
},
|
|
940
|
+
()=>[
|
|
941
|
+
// Get current contract address into offset 3
|
|
942
|
+
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 3, /*varEnum=*/ 0).as(Opcode.GETENVVAR_16, GetEnvVar.wireFormat16)
|
|
943
|
+
],
|
|
935
944
|
{
|
|
936
|
-
offset:
|
|
945
|
+
offset: 4,
|
|
937
946
|
value: new Uint32(0n)
|
|
938
947
|
}
|
|
939
948
|
],
|
|
940
949
|
targetInstructions: ()=>[
|
|
941
|
-
new SStore(/*
|
|
942
|
-
new SLoad(/*
|
|
943
|
-
new Add(/*
|
|
950
|
+
new SStore(/*addressing_mode=*/ 0, /*srcOffset=*/ 1, /*slotOffset=*/ 0),
|
|
951
|
+
new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*contractAddressOffset=*/ 3, /*dstOffset=*/ 5),
|
|
952
|
+
new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 2, /*dstOffset=*/ 0).as(Opcode.ADD_8, Add.wireFormat8)
|
|
944
953
|
],
|
|
945
954
|
cleanupInstructions: ()=>[
|
|
946
|
-
new Revert(/*
|
|
955
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 4, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
947
956
|
],
|
|
948
957
|
limit: MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
949
958
|
}
|
|
@@ -964,7 +973,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
964
973
|
}
|
|
965
974
|
],
|
|
966
975
|
targetInstructions: ()=>[
|
|
967
|
-
new NoteHashExists(/*
|
|
976
|
+
new NoteHashExists(/*addressing_mode=*/ 0, /*noteHashOffset=*/ 0, /*leafIndexOffset=*/ 1, /*existsOffset=*/ 2)
|
|
968
977
|
]
|
|
969
978
|
},
|
|
970
979
|
{
|
|
@@ -981,74 +990,37 @@ const STATIC_CALL_CONFIG = {
|
|
|
981
990
|
}
|
|
982
991
|
],
|
|
983
992
|
targetInstructions: ()=>[
|
|
984
|
-
new NoteHashExists(/*
|
|
993
|
+
new NoteHashExists(/*addressing_mode=*/ 0, /*noteHashOffset=*/ 0, /*leafIndexOffset=*/ 1, /*existsOffset=*/ 2)
|
|
985
994
|
]
|
|
986
995
|
}
|
|
987
996
|
],
|
|
988
997
|
[Opcode.NULLIFIEREXISTS]: [
|
|
989
998
|
{
|
|
990
999
|
label: 'Non-existent nullifier',
|
|
1000
|
+
// NULLIFIEREXISTS now takes a siloed nullifier directly (no address parameter)
|
|
991
1001
|
setup: [
|
|
992
1002
|
{
|
|
993
1003
|
offset: 0,
|
|
994
1004
|
value: new Field(Fr.random())
|
|
995
|
-
},
|
|
996
|
-
{
|
|
997
|
-
offset: 1,
|
|
998
|
-
value: new Field(Fr.random())
|
|
999
1005
|
}
|
|
1000
1006
|
],
|
|
1001
1007
|
targetInstructions: ()=>[
|
|
1002
|
-
new NullifierExists(/*
|
|
1008
|
+
new NullifierExists(/*addressing_mode=*/ 0, /*siloedNullifierOffset=*/ 0, /*existsOffset=*/ 1)
|
|
1003
1009
|
]
|
|
1004
1010
|
},
|
|
1005
1011
|
{
|
|
1006
1012
|
label: 'Existing nullifier (warm - from tree)',
|
|
1007
|
-
// Uses pre-inserted nullifier from insertWarmTreeEntries()
|
|
1013
|
+
// Uses pre-inserted siloed nullifier from insertWarmTreeEntries()
|
|
1014
|
+
// NULLIFIEREXISTS now takes a siloed nullifier directly
|
|
1008
1015
|
setup: [
|
|
1009
1016
|
{
|
|
1010
1017
|
offset: 0,
|
|
1011
|
-
value: new Field(
|
|
1012
|
-
},
|
|
1013
|
-
{
|
|
1014
|
-
offset: 1,
|
|
1015
|
-
value: new Field(WARM_NULLIFIER_ADDRESS.toField())
|
|
1018
|
+
value: new Field(WARM_SILOED_NULLIFIER)
|
|
1016
1019
|
}
|
|
1017
1020
|
],
|
|
1018
1021
|
targetInstructions: ()=>[
|
|
1019
|
-
new NullifierExists(/*
|
|
1022
|
+
new NullifierExists(/*addressing_mode=*/ 0, /*siloedNullifierOffset=*/ 0, /*existsOffset=*/ 1)
|
|
1020
1023
|
]
|
|
1021
|
-
},
|
|
1022
|
-
{
|
|
1023
|
-
label: 'Existing nullifier (warm - EMITNULLIFIER first)',
|
|
1024
|
-
// Memory layout: nullifier (incremented), constant 1, current address (from GETENVVAR), revertSize, exists result
|
|
1025
|
-
setup: [
|
|
1026
|
-
{
|
|
1027
|
-
offset: 0,
|
|
1028
|
-
value: new Field(Fr.random())
|
|
1029
|
-
},
|
|
1030
|
-
{
|
|
1031
|
-
offset: 1,
|
|
1032
|
-
value: new Field(1n)
|
|
1033
|
-
},
|
|
1034
|
-
()=>[
|
|
1035
|
-
// Get current contract address into offset 2
|
|
1036
|
-
new GetEnvVar(/*indirect=*/ 0, /*dstOffset=*/ 2, /*varEnum=*/ 0).as(Opcode.GETENVVAR_16, GetEnvVar.wireFormat16)
|
|
1037
|
-
],
|
|
1038
|
-
{
|
|
1039
|
-
offset: 3,
|
|
1040
|
-
value: new Uint32(0n)
|
|
1041
|
-
}
|
|
1042
|
-
],
|
|
1043
|
-
targetInstructions: ()=>[
|
|
1044
|
-
new EmitNullifier(/*indirect=*/ 0, /*nullifierOffset=*/ 0),
|
|
1045
|
-
new NullifierExists(/*indirect=*/ 0, /*nullifierOffset=*/ 0, /*addressOffset=*/ 2, /*existsOffset=*/ 4),
|
|
1046
|
-
new Add(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.ADD_8, Add.wireFormat8)
|
|
1047
|
-
],
|
|
1048
|
-
cleanupInstructions: ()=>[
|
|
1049
|
-
new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 3, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
1050
|
-
],
|
|
1051
|
-
limit: MAX_NULLIFIERS_PER_TX - 1
|
|
1052
1024
|
}
|
|
1053
1025
|
],
|
|
1054
1026
|
[Opcode.L1TOL2MSGEXISTS]: [
|
|
@@ -1065,7 +1037,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1065
1037
|
}
|
|
1066
1038
|
],
|
|
1067
1039
|
targetInstructions: ()=>[
|
|
1068
|
-
new L1ToL2MessageExists(/*
|
|
1040
|
+
new L1ToL2MessageExists(/*addressing_mode=*/ 0, /*msgHashOffset=*/ 0, /*msgLeafIndexOffset=*/ 1, /*existsOffset=*/ 2)
|
|
1069
1041
|
]
|
|
1070
1042
|
},
|
|
1071
1043
|
{
|
|
@@ -1082,7 +1054,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1082
1054
|
}
|
|
1083
1055
|
],
|
|
1084
1056
|
targetInstructions: ()=>[
|
|
1085
|
-
new L1ToL2MessageExists(/*
|
|
1057
|
+
new L1ToL2MessageExists(/*addressing_mode=*/ 0, /*msgHashOffset=*/ 0, /*msgLeafIndexOffset=*/ 1, /*existsOffset=*/ 2)
|
|
1086
1058
|
]
|
|
1087
1059
|
}
|
|
1088
1060
|
],
|
|
@@ -1092,12 +1064,12 @@ const STATIC_CALL_CONFIG = {
|
|
|
1092
1064
|
// This ensures we're querying a valid deployed contract
|
|
1093
1065
|
setup: [
|
|
1094
1066
|
()=>[
|
|
1095
|
-
new GetEnvVar(/*
|
|
1067
|
+
new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 0, /*varEnum=*/ 0).as(Opcode.GETENVVAR_16, GetEnvVar.wireFormat16)
|
|
1096
1068
|
]
|
|
1097
1069
|
],
|
|
1098
1070
|
// memberEnum 0 = DEPLOYER
|
|
1099
1071
|
targetInstructions: ()=>[
|
|
1100
|
-
new GetContractInstance(/*
|
|
1072
|
+
new GetContractInstance(/*addressing_mode=*/ 0, /*addressOffset=*/ 0, /*dstOffset=*/ 1, /*memberEnum=*/ 0)
|
|
1101
1073
|
]
|
|
1102
1074
|
}
|
|
1103
1075
|
],
|
|
@@ -1117,10 +1089,10 @@ const STATIC_CALL_CONFIG = {
|
|
|
1117
1089
|
}
|
|
1118
1090
|
],
|
|
1119
1091
|
targetInstructions: ()=>[
|
|
1120
|
-
new EmitNoteHash(/*
|
|
1092
|
+
new EmitNoteHash(/*addressing_mode=*/ 0, /*noteHashOffset=*/ 0)
|
|
1121
1093
|
],
|
|
1122
1094
|
cleanupInstructions: ()=>[
|
|
1123
|
-
new Revert(/*
|
|
1095
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 1, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
1124
1096
|
],
|
|
1125
1097
|
limit: MAX_NOTE_HASHES_PER_TX
|
|
1126
1098
|
}
|
|
@@ -1144,11 +1116,11 @@ const STATIC_CALL_CONFIG = {
|
|
|
1144
1116
|
}
|
|
1145
1117
|
],
|
|
1146
1118
|
targetInstructions: ()=>[
|
|
1147
|
-
new EmitNullifier(/*
|
|
1148
|
-
new Add(/*
|
|
1119
|
+
new EmitNullifier(/*addressing_mode=*/ 0, /*nullifierOffset=*/ 0),
|
|
1120
|
+
new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.ADD_8, Add.wireFormat8)
|
|
1149
1121
|
],
|
|
1150
1122
|
cleanupInstructions: ()=>[
|
|
1151
|
-
new Revert(/*
|
|
1123
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 2, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
1152
1124
|
],
|
|
1153
1125
|
limit: MAX_NULLIFIERS_PER_TX - 1
|
|
1154
1126
|
}
|
|
@@ -1170,10 +1142,10 @@ const STATIC_CALL_CONFIG = {
|
|
|
1170
1142
|
}
|
|
1171
1143
|
],
|
|
1172
1144
|
targetInstructions: ()=>[
|
|
1173
|
-
new SendL2ToL1Message(/*
|
|
1145
|
+
new SendL2ToL1Message(/*addressing_mode=*/ 0, /*recipientOffset=*/ 0, /*contentOffset=*/ 1)
|
|
1174
1146
|
],
|
|
1175
1147
|
cleanupInstructions: ()=>[
|
|
1176
|
-
new Revert(/*
|
|
1148
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 2, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
1177
1149
|
],
|
|
1178
1150
|
limit: MAX_L2_TO_L1_MSGS_PER_TX
|
|
1179
1151
|
}
|
|
@@ -1199,10 +1171,10 @@ const STATIC_CALL_CONFIG = {
|
|
|
1199
1171
|
}
|
|
1200
1172
|
],
|
|
1201
1173
|
targetInstructions: ()=>[
|
|
1202
|
-
new SStore(/*
|
|
1174
|
+
new SStore(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*slotOffset=*/ 1)
|
|
1203
1175
|
],
|
|
1204
1176
|
cleanupInstructions: ()=>[
|
|
1205
|
-
new Revert(/*
|
|
1177
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 2, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
1206
1178
|
]
|
|
1207
1179
|
},
|
|
1208
1180
|
{
|
|
@@ -1226,17 +1198,17 @@ const STATIC_CALL_CONFIG = {
|
|
|
1226
1198
|
}
|
|
1227
1199
|
],
|
|
1228
1200
|
targetInstructions: ()=>[
|
|
1229
|
-
new SStore(/*
|
|
1230
|
-
new Add(/*
|
|
1201
|
+
new SStore(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*slotOffset=*/ 1),
|
|
1202
|
+
new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 1, /*bOffset=*/ 2, /*dstOffset=*/ 1).as(Opcode.ADD_8, Add.wireFormat8)
|
|
1231
1203
|
],
|
|
1232
1204
|
cleanupInstructions: ()=>[
|
|
1233
|
-
new Revert(/*
|
|
1205
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 3, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
1234
1206
|
],
|
|
1235
1207
|
limit: MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
1236
1208
|
}
|
|
1237
1209
|
],
|
|
1238
|
-
//
|
|
1239
|
-
[Opcode.
|
|
1210
|
+
// EMITPUBLICLOG - two configs: minimal (many small logs) and max-size (one large log)
|
|
1211
|
+
[Opcode.EMITPUBLICLOG]: [
|
|
1240
1212
|
{
|
|
1241
1213
|
label: 'Many empty logs, revert, repeat',
|
|
1242
1214
|
setup: [
|
|
@@ -1250,10 +1222,10 @@ const STATIC_CALL_CONFIG = {
|
|
|
1250
1222
|
}
|
|
1251
1223
|
],
|
|
1252
1224
|
targetInstructions: ()=>[
|
|
1253
|
-
new
|
|
1225
|
+
new EmitPublicLog(/*addressing_mode=*/ 0, /*logSizeOffset=*/ 0, /*logOffset=*/ 1)
|
|
1254
1226
|
],
|
|
1255
1227
|
cleanupInstructions: ()=>[
|
|
1256
|
-
new Revert(/*
|
|
1228
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 1, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
1257
1229
|
],
|
|
1258
1230
|
// Max logs with 0-field content: floor(4096 / 2) = 2048
|
|
1259
1231
|
limit: Math.floor(FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH / PUBLIC_LOG_HEADER_LENGTH)
|
|
@@ -1272,10 +1244,10 @@ const STATIC_CALL_CONFIG = {
|
|
|
1272
1244
|
}
|
|
1273
1245
|
],
|
|
1274
1246
|
targetInstructions: ()=>[
|
|
1275
|
-
new
|
|
1247
|
+
new EmitPublicLog(/*addressing_mode=*/ 0, /*logSizeOffset=*/ 0, /*logOffset=*/ 2)
|
|
1276
1248
|
],
|
|
1277
1249
|
cleanupInstructions: ()=>[
|
|
1278
|
-
new Revert(/*
|
|
1250
|
+
new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 1, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8)
|
|
1279
1251
|
],
|
|
1280
1252
|
limit: 1
|
|
1281
1253
|
}
|
|
@@ -1294,7 +1266,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1294
1266
|
})),
|
|
1295
1267
|
// Poseidon hash data at M[0..3], write result to M[0:3] (reuse results as next inputs)
|
|
1296
1268
|
targetInstructions: ()=>[
|
|
1297
|
-
new Poseidon2(/*
|
|
1269
|
+
new Poseidon2(/*addressing_mode=*/ 0, /*inputStateOffset=*/ 0, /*outputStateOffset=*/ 0)
|
|
1298
1270
|
]
|
|
1299
1271
|
}
|
|
1300
1272
|
],
|
|
@@ -1317,7 +1289,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1317
1289
|
}))
|
|
1318
1290
|
],
|
|
1319
1291
|
targetInstructions: ()=>[
|
|
1320
|
-
new Sha256Compression(/*
|
|
1292
|
+
new Sha256Compression(/*addressing_mode=*/ 0, /*outputOffset=*/ 0, /*stateOffset=*/ 0, /*inputsOffset=*/ 8)
|
|
1321
1293
|
]
|
|
1322
1294
|
}
|
|
1323
1295
|
],
|
|
@@ -1331,7 +1303,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1331
1303
|
value: randomWithTag(TypeTag.UINT64)
|
|
1332
1304
|
})),
|
|
1333
1305
|
targetInstructions: ()=>[
|
|
1334
|
-
new KeccakF1600(/*
|
|
1306
|
+
new KeccakF1600(/*addressing_mode=*/ 0, /*dstOffset=*/ 0, /*inputOffset=*/ 0)
|
|
1335
1307
|
]
|
|
1336
1308
|
}
|
|
1337
1309
|
],
|
|
@@ -1365,7 +1337,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1365
1337
|
}
|
|
1366
1338
|
],
|
|
1367
1339
|
targetInstructions: ()=>[
|
|
1368
|
-
new EcAdd(/*
|
|
1340
|
+
new EcAdd(/*addressing_mode=*/ 0, /*p1XOffset=*/ 0, /*p1YOffset=*/ 1, /*p1IsInfiniteOffset=*/ 2, /*p2XOffset=*/ 3, /*p2YOffset=*/ 4, /*p2IsInfiniteOffset=*/ 5, /*dstOffset=*/ 0)
|
|
1369
1341
|
]
|
|
1370
1342
|
}
|
|
1371
1343
|
],
|
|
@@ -1392,7 +1364,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1392
1364
|
}
|
|
1393
1365
|
],
|
|
1394
1366
|
targetInstructions: ()=>[
|
|
1395
|
-
new ToRadixBE(/*
|
|
1367
|
+
new ToRadixBE(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*radixOffset=*/ 1, /*numLimbsOffset=*/ 2, /*outputBitsOffset=*/ 3, /*dstOffset=*/ 4)
|
|
1396
1368
|
]
|
|
1397
1369
|
},
|
|
1398
1370
|
{
|
|
@@ -1416,7 +1388,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1416
1388
|
}
|
|
1417
1389
|
],
|
|
1418
1390
|
targetInstructions: ()=>[
|
|
1419
|
-
new ToRadixBE(/*
|
|
1391
|
+
new ToRadixBE(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*radixOffset=*/ 1, /*numLimbsOffset=*/ 2, /*outputBitsOffset=*/ 3, /*dstOffset=*/ 4)
|
|
1420
1392
|
]
|
|
1421
1393
|
},
|
|
1422
1394
|
{
|
|
@@ -1442,7 +1414,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1442
1414
|
}
|
|
1443
1415
|
],
|
|
1444
1416
|
targetInstructions: ()=>[
|
|
1445
|
-
new ToRadixBE(/*
|
|
1417
|
+
new ToRadixBE(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*radixOffset=*/ 1, /*numLimbsOffset=*/ 2, /*outputBitsOffset=*/ 3, /*dstOffset=*/ 4)
|
|
1446
1418
|
]
|
|
1447
1419
|
}
|
|
1448
1420
|
],
|
|
@@ -1473,7 +1445,7 @@ const STATIC_CALL_CONFIG = {
|
|
|
1473
1445
|
],
|
|
1474
1446
|
// messageSize = 0
|
|
1475
1447
|
targetInstructions: ()=>[
|
|
1476
|
-
new DebugLog(/*
|
|
1448
|
+
new DebugLog(/*addressing_mode=*/ 0, /*levelOffset=*/ 0, /*messageOffset=*/ 1, /*fieldsOffset=*/ 2, /*fieldsSizeOffset=*/ 3, /*messageSize=*/ 0)
|
|
1477
1449
|
]
|
|
1478
1450
|
}
|
|
1479
1451
|
]
|