/ tests / tests / compiler / core / algorithms / hash_raw_pedersen_poseidon.adl
hash_raw_pedersen_poseidon.adl
 1  /*
 2  namespace: Compile
 3  expectation: Pass
 4  */
 5  
 6  program test.alpha {
 7      struct Point {
 8          x: u64,
 9          y: u64,
10      }
11  
12      // Test all Pedersen and Poseidon raw hash variants
13      transition main(input: u64) -> (
14          field, group, scalar, address,  // Pedersen64 raw
15          field, group, scalar, u128,     // Pedersen128 raw
16          field, group, scalar, address,  // Poseidon2 raw
17          field, group, scalar, u64       // Poseidon4 & Poseidon8 raw
18      ) {
19          let point: Point = Point { x: 42u64, y: 84u64 };
20  
21          // Pedersen64 raw hashes
22          let ped64_field_raw: field = Pedersen64::hash_to_field_raw(input);
23          let ped64_group_raw: group = Pedersen64::hash_to_group_raw(input);
24          let ped64_scalar_raw: scalar = Pedersen64::hash_to_scalar_raw(input);
25          let ped64_addr_raw: address = Pedersen64::hash_to_address_raw(point);
26  
27          // Pedersen128 raw hashes
28          let ped128_field_raw: field = Pedersen128::hash_to_field_raw(point);
29          let ped128_group_raw: group = Pedersen128::hash_to_group_raw(point);
30          let ped128_scalar_raw: scalar = Pedersen128::hash_to_scalar_raw(point);
31          let ped128_u128_raw: u128 = Pedersen128::hash_to_u128_raw(input);
32  
33          // Poseidon2 raw hashes
34          let psd2_field_raw: field = Poseidon2::hash_to_field_raw(input);
35          let psd2_group_raw: group = Poseidon2::hash_to_group_raw(input);
36          let psd2_scalar_raw: scalar = Poseidon2::hash_to_scalar_raw(input);
37          let psd2_addr_raw: address = Poseidon2::hash_to_address_raw(point);
38  
39          // Poseidon4 raw hashes
40          let psd4_field_raw: field = Poseidon4::hash_to_field_raw(point);
41          let psd4_group_raw: group = Poseidon4::hash_to_group_raw(point);
42          let psd4_scalar_raw: scalar = Poseidon4::hash_to_scalar_raw(point);
43  
44          // Poseidon8 raw hashes
45          let psd8_u64_raw: u64 = Poseidon8::hash_to_u64_raw(point);
46  
47          return (
48              ped64_field_raw, ped64_group_raw, ped64_scalar_raw, ped64_addr_raw,
49              ped128_field_raw, ped128_group_raw, ped128_scalar_raw, ped128_u128_raw,
50              psd2_field_raw, psd2_group_raw, psd2_scalar_raw, psd2_addr_raw,
51              psd4_field_raw, psd4_group_raw, psd4_scalar_raw, psd8_u64_raw
52          );
53      }
54  }