208 all_calldata_fields[i].reserve(calldata_fuzzer_instance.num_fields);
210 std::min(
static_cast<size_t>(calldata_fuzzer_instance.num_fields), input.
init_calldata_values.size());
212 for (
size_t j = 0; j < max_index; j++) {
216 for (
size_t j = input.
init_calldata_values.size(); j < calldata_fuzzer_instance.num_fields; j++) {
218 auto entry_idx = (calldata_fuzzer_instance.selection_encoding >> j) % all_calldata_fields[i].size();
219 auto entry_value = all_calldata_fields[i].at(entry_idx);
221 all_calldata_fields[i].emplace_back(modified_value);
224 switch (calldata_fuzzer_instance.mutation) {
227 all_calldata_fields[i] = all_calldata_fields[(i - 1) % input.
num_events_input];
232 all_calldata_fields[i] = {};
241 return all_calldata_fields;
374 for (
size_t i = 0; i < num_events; i++) {
377 calldata_interface->assert_calldata_hash(cd_hash, calldata_fields[i]);
379 }
catch (
const std::exception& e) {
401 if (getenv(
"AVM_DEBUG") !=
nullptr) {
402 info(
"Debugging trace:");
407 check_relation<calldata_rel>(trace);
408 check_relation<calldata_hashing_rel>(trace);
410 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_get_calldata_field_0_settings>(trace);
411 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_get_calldata_field_1_settings>(trace);
412 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_get_calldata_field_2_settings>(trace);
413 check_interaction<CalldataTraceBuilder, bb::avm2::perm_calldata_hashing_check_final_size_settings>(trace);
414 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_poseidon2_hash_settings>(trace);
418 for (uint32_t i = 1; i < trace.
get_column_rows(Column::calldata_sel); i++) {
421 { Column::calldata_sel, 0 },
422 { Column::calldata_context_id, 0 },
423 { Column::calldata_value, 0 },
424 { Column::calldata_index, 0 },
425 { Column::calldata_end, 0 },
429 for (uint32_t i = 1; i < trace.
get_column_rows(Column::calldata_hashing_sel); i++) {
432 { Column::calldata_hashing_sel, 0 },
433 { Column::calldata_hashing_start, 0 },
434 { Column::calldata_hashing_sel_not_start, 0 },
435 { Column::calldata_hashing_context_id, 0 },
436 { Column::calldata_hashing_calldata_size, 0 },
437 { Column::calldata_hashing_input_len, 0 },
438 { Column::calldata_hashing_rounds_rem, 0 },
439 { Column::calldata_hashing_index_0_, 0 },
440 { Column::calldata_hashing_index_1_, 0 },
441 { Column::calldata_hashing_index_2_, 0 },
442 { Column::calldata_hashing_input_0_, 0 },
443 { Column::calldata_hashing_input_1_, 0 },
444 { Column::calldata_hashing_input_2_, 0 },
445 { Column::calldata_hashing_output_hash, 0 },
446 { Column::calldata_hashing_sel_not_padding_1, 0 },
447 { Column::calldata_hashing_sel_not_padding_2, 0 },
448 { Column::calldata_hashing_end, 0 },
449 { Column::calldata_hashing_sel_end_not_empty, 0 },