Skip to content

Commit 4a6194c

Browse files
committed
fri verify config
1 parent 1d574e5 commit 4a6194c

8 files changed

+76
-17
lines changed

src/fri.cairo

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
mod fri_formula;
22
mod fri_group;
3+
mod fri_layer;
4+
mod fri_config;
35

46
#[cfg(test)]
57
mod tests;

src/fri/fri_config.cairo

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
use core::option::OptionTrait;
2+
use core::array::SpanTrait;
3+
use core::traits::Into;
4+
use cairo_verifier::structs::table_commitment_config::TableCommitmentConfig;
5+
6+
const MAX_LAST_LAYER_LOG_DEGREE_BOUND: u32 = 15;
7+
const MAX_FRI_LAYERS: u32 = 15;
8+
const MAX_FRI_STEP: u32 = 4;
9+
10+
struct FriConfig {
11+
// Log2 of the size of the input layer to FRI.
12+
log_input_size: felt252,
13+
// Number of layers in the FRI. Inner + last layer.
14+
n_layers: felt252,
15+
// Array of size n_layers - 1, each entry is a configuration of a table commitment for the
16+
// corresponding inner layer.
17+
inner_layers: Span<TableCommitmentConfig>,
18+
// Array of size n_layers, each entry represents the FRI step size,
19+
// i.e. the number of FRI-foldings between layer i and i+1.
20+
fri_step_sizes: Span<felt252>,
21+
log_last_layer_degree_bound: felt252,
22+
}
23+
24+
fn fri_config_validate(
25+
config: FriConfig, log_n_cosets: felt252, n_verifier_friendly_commitment_layers: felt252
26+
) -> felt252 {
27+
assert(0_u256 <= config.log_last_layer_degree_bound.into(), '');
28+
assert(config.log_last_layer_degree_bound.try_into().unwrap() <= MAX_LAST_LAYER_LOG_DEGREE_BOUND, '');
29+
30+
assert(2_u256 <= config.n_layers.into(), '');
31+
assert(config.n_layers.try_into().unwrap() <= MAX_FRI_LAYERS + 1, '');
32+
33+
assert(*(config.fri_step_sizes[0]) == 0, '');
34+
35+
let len: u32 = config.n_layers.try_into().unwrap();
36+
let mut i = 0_u32;
37+
let mut sum_of_step_sizes: felt252 = 0;
38+
let mut log_input_size = config.log_input_size;
39+
loop {
40+
if i == len { break; }
41+
let fri_step: felt252 = *(config.fri_step_sizes.at(i));
42+
assert(1_u32 <= fri_step.try_into().unwrap(), '');
43+
assert(fri_step.try_into().unwrap() <= MAX_FRI_STEP + 1, '');
44+
assert((*(config.inner_layers.at(i))).columns == fri_step * fri_step, '');
45+
i += 1;
46+
log_input_size -= fri_step;
47+
sum_of_step_sizes += fri_step;
48+
// validate_vector_commitment(
49+
// config=layers[0].vector,
50+
// expected_height=log_input_size,
51+
// n_verifier_friendly_commitment_layers=n_verifier_friendly_commitment_layers,
52+
// );
53+
};
54+
55+
56+
let log_expected_input_degree = sum_of_step_sizes + config.log_last_layer_degree_bound;
57+
assert(log_expected_input_degree + log_n_cosets == config.log_input_size, '');
58+
log_expected_input_degree
59+
}

src/fri/fri_layer.cairo

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Constant parameters for computing the next FRI layer.
2+
struct FriLayerComputationParams {
3+
coset_size: felt252,
4+
fri_group: Span<felt252>,
5+
eval_point: felt252,
6+
}
7+
8+
struct FriLayerQuery {
9+
index: felt252,
10+
y_value: felt252,
11+
x_inv_value: felt252,
12+
}

src/structs.cairo

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
mod fri_config;
21
mod proof_of_work_config;
32
mod stark_config;
43
mod stark_proof;

src/structs/fri_config.cairo

-15
This file was deleted.

src/structs/stark_config.cairo

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use cairo_verifier::structs::traces_config::TracesConfig;
22
use cairo_verifier::structs::table_commitment_config::TableCommitmentConfig;
3-
use cairo_verifier::structs::fri_config::FriConfig;
3+
use cairo_verifier::fri::fri_config::FriConfig;
44
use cairo_verifier::structs::proof_of_work_config::ProofOfWorkConfig;
55

66
struct StarkConfig {

src/structs/table_commitment_config.cairo

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use cairo_verifier::structs::vector_commitment_config::VectorCommitmentConfig;
22

3+
#[derive(Drop, Copy)]
34
struct TableCommitmentConfig {
45
columns: felt252,
56
vector: VectorCommitmentConfig

src/structs/vector_commitment_config.cairo

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#[derive(Drop, Copy)]
12
struct VectorCommitmentConfig {
23
height: felt252,
34
verifier_friendly_commitment_layers: felt252,

0 commit comments

Comments
 (0)