199 all_calldata_fields[i].reserve(calldata_fuzzer_instance.num_fields);
201 std::min(
static_cast<size_t>(calldata_fuzzer_instance.num_fields), input.
init_calldata_values.size());
203 for (
size_t j = 0; j < max_index; j++) {
207 for (
size_t j = input.
init_calldata_values.size(); j < calldata_fuzzer_instance.num_fields; j++) {
209 auto entry_idx = (calldata_fuzzer_instance.selection_encoding >> j) % all_calldata_fields[i].size();
210 auto entry_value = all_calldata_fields[i].at(entry_idx);
212 all_calldata_fields[i].emplace_back(modified_value);
215 switch (calldata_fuzzer_instance.mutation) {
218 all_calldata_fields[i] = all_calldata_fields[(i - 1) % input.
num_events_input];
223 all_calldata_fields[i] = {};
232 return all_calldata_fields;
365 for (
size_t i = 0; i < num_events; i++) {
368 calldata_interface->assert_calldata_hash(cd_hash, calldata_fields[i]);
370 }
catch (
const std::exception& e) {
392 if (getenv(
"AVM_DEBUG") !=
nullptr) {
393 info(
"Debugging trace:");
398 check_relation<calldata_rel>(trace);
399 check_relation<calldata_hashing_rel>(trace);
401 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_range_check_context_id_diff_settings>(trace);
402 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_get_calldata_field_0_settings>(trace);
403 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_get_calldata_field_1_settings>(trace);
404 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_get_calldata_field_2_settings>(trace);
405 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_check_final_size_settings>(trace);
406 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_poseidon2_hash_settings>(trace);
410 for (uint32_t i = 1; i < trace.
get_column_rows(avm2::Column::calldata_sel); i++) {
413 { avm2::Column::calldata_sel, 0 },
414 { avm2::Column::calldata_context_id, 0 },
415 { avm2::Column::calldata_value, 0 },
416 { avm2::Column::calldata_index, 0 },
417 { avm2::Column::calldata_latch, 0 },
418 { avm2::Column::calldata_diff_context_id, 0 },
422 for (uint32_t i = 1; i < trace.
get_column_rows(avm2::Column::calldata_hashing_sel); i++) {
425 { avm2::Column::calldata_hashing_sel, 0 },
426 { avm2::Column::calldata_hashing_start, 0 },
427 { avm2::Column::calldata_hashing_sel_not_start, 0 },
428 { avm2::Column::calldata_hashing_context_id, 0 },
429 { avm2::Column::calldata_hashing_calldata_size, 0 },
430 { avm2::Column::calldata_hashing_input_len, 0 },
431 { avm2::Column::calldata_hashing_rounds_rem, 0 },
432 { avm2::Column::calldata_hashing_index_0_, 0 },
433 { avm2::Column::calldata_hashing_index_1_, 0 },
434 { avm2::Column::calldata_hashing_index_2_, 0 },
435 { avm2::Column::calldata_hashing_input_0_, 0 },
436 { avm2::Column::calldata_hashing_input_1_, 0 },
437 { avm2::Column::calldata_hashing_input_2_, 0 },
438 { avm2::Column::calldata_hashing_output_hash, 0 },
439 { avm2::Column::calldata_hashing_sel_not_padding_1, 0 },
440 { avm2::Column::calldata_hashing_sel_not_padding_2, 0 },
441 { avm2::Column::calldata_hashing_latch, 0 },