tasm_lib/rust_shadowing_helper_functions/
claim.rs

1use std::collections::HashMap;
2
3use num::Zero;
4use triton_vm::prelude::*;
5
6use crate::prelude::*;
7use crate::structure::tasm_object::decode_from_memory_with_size;
8
9pub fn load_claim_from_memory(
10    claim_pointer: BFieldElement,
11    memory: &HashMap<BFieldElement, BFieldElement>,
12) -> Claim {
13    let output_field_size_pointer = claim_pointer;
14    let output_field_size = memory
15        .get(&output_field_size_pointer)
16        .unwrap_or(&BFieldElement::zero())
17        .value();
18    let input_field_size_pointer = claim_pointer + BFieldElement::new(output_field_size + 1);
19    let input_field_size = memory
20        .get(&input_field_size_pointer)
21        .unwrap_or(&BFieldElement::zero())
22        .value();
23    let version_field_size = 1;
24    let size = input_field_size + output_field_size + version_field_size + Digest::LEN as u64 + 2;
25
26    // Load `Claim` struct into memory
27    // Notice that it's important to use the `Claim` type from Triton VM here, as it
28    // gives a reasonable assurance that the `Claim` type specified in snippets here
29    // matches that used in Triton VM.
30    *decode_from_memory_with_size(memory, claim_pointer, size as usize).unwrap()
31}