205 all_calldata_fields[i].reserve(calldata_fuzzer_instance.num_fields);
207 std::min(
static_cast<size_t>(calldata_fuzzer_instance.num_fields), input.
init_calldata_values.size());
209 for (
size_t j = 0; j < max_index; j++) {
213 for (
size_t j = input.
init_calldata_values.size(); j < calldata_fuzzer_instance.num_fields; j++) {
215 auto entry_idx = (calldata_fuzzer_instance.selection_encoding >> j) % all_calldata_fields[i].size();
216 auto entry_value = all_calldata_fields[i].at(entry_idx);
218 all_calldata_fields[i].emplace_back(modified_value);
221 switch (calldata_fuzzer_instance.mutation) {
224 all_calldata_fields[i] = all_calldata_fields[(i - 1) % input.
num_events_input];
229 all_calldata_fields[i] = {};
238 return all_calldata_fields;
371 for (
size_t i = 0; i < num_events; i++) {
374 calldata_interface->assert_calldata_hash(cd_hash, calldata_fields[i]);
376 }
catch (
const std::exception& e) {
398 if (getenv(
"AVM_DEBUG") !=
nullptr) {
399 info(
"Debugging trace:");
404 check_relation<calldata_rel>(trace);
405 check_relation<calldata_hashing_rel>(trace);
407 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_range_check_context_id_diff_settings>(trace);
408 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_get_calldata_field_0_settings>(trace);
409 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_get_calldata_field_1_settings>(trace);
410 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_get_calldata_field_2_settings>(trace);
411 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_check_final_size_settings>(trace);
412 check_interaction<CalldataTraceBuilder, bb::avm2::lookup_calldata_hashing_poseidon2_hash_settings>(trace);
416 for (uint32_t i = 1; i < trace.
get_column_rows(avm2::Column::calldata_sel); i++) {
419 { avm2::Column::calldata_sel, 0 },
420 { avm2::Column::calldata_context_id, 0 },
421 { avm2::Column::calldata_value, 0 },
422 { avm2::Column::calldata_index, 0 },
423 { avm2::Column::calldata_latch, 0 },
424 { avm2::Column::calldata_diff_context_id, 0 },
428 for (uint32_t i = 1; i < trace.
get_column_rows(avm2::Column::calldata_hashing_sel); i++) {
431 { avm2::Column::calldata_hashing_sel, 0 },
432 { avm2::Column::calldata_hashing_start, 0 },
433 { avm2::Column::calldata_hashing_sel_not_start, 0 },
434 { avm2::Column::calldata_hashing_context_id, 0 },
435 { avm2::Column::calldata_hashing_calldata_size, 0 },
436 { avm2::Column::calldata_hashing_input_len, 0 },
437 { avm2::Column::calldata_hashing_rounds_rem, 0 },
438 { avm2::Column::calldata_hashing_index_0_, 0 },
439 { avm2::Column::calldata_hashing_index_1_, 0 },
440 { avm2::Column::calldata_hashing_index_2_, 0 },
441 { avm2::Column::calldata_hashing_input_0_, 0 },
442 { avm2::Column::calldata_hashing_input_1_, 0 },
443 { avm2::Column::calldata_hashing_input_2_, 0 },
444 { avm2::Column::calldata_hashing_output_hash, 0 },
445 { avm2::Column::calldata_hashing_sel_not_padding_1, 0 },
446 { avm2::Column::calldata_hashing_sel_not_padding_2, 0 },
447 { avm2::Column::calldata_hashing_latch, 0 },