mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-07 16:23:12 +00:00
Fix bugs when no ctls
This commit is contained in:
parent
e9260fe457
commit
f9e929a0a9
@ -156,23 +156,29 @@ impl<'a, F: RichField + Extendable<D>, const D: usize>
|
|||||||
) -> Vec<Vec<Self>> {
|
) -> Vec<Vec<Self>> {
|
||||||
let mut ctl_zs = proofs
|
let mut ctl_zs = proofs
|
||||||
.iter()
|
.iter()
|
||||||
.map(|p| {
|
.map(|p| -> Box<dyn Iterator<Item = _>> {
|
||||||
p.proof
|
if p.proof.openings.permutation_lookup_zs.is_some() {
|
||||||
.openings
|
Box::new(
|
||||||
.permutation_lookup_zs
|
|
||||||
.as_ref()
|
|
||||||
.unwrap() // TODO: fix unwrap
|
|
||||||
.iter()
|
|
||||||
.skip(num_permutation_zs)
|
|
||||||
.zip(
|
|
||||||
p.proof
|
p.proof
|
||||||
.openings
|
.openings
|
||||||
.permutation_lookup_zs_right
|
.permutation_lookup_zs
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.iter()
|
.iter()
|
||||||
.skip(num_permutation_zs),
|
.skip(num_permutation_zs)
|
||||||
|
.zip(
|
||||||
|
p.proof
|
||||||
|
.openings
|
||||||
|
.permutation_lookup_zs_right
|
||||||
|
.as_ref()
|
||||||
|
.unwrap()
|
||||||
|
.iter()
|
||||||
|
.skip(num_permutation_zs),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
} else {
|
||||||
|
Box::new(std::iter::empty())
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
use std::iter::once;
|
||||||
|
|
||||||
use plonky2::field::extension_field::{Extendable, FieldExtension};
|
use plonky2::field::extension_field::{Extendable, FieldExtension};
|
||||||
use plonky2::field::field_types::Field;
|
use plonky2::field::field_types::Field;
|
||||||
use plonky2::field::packed_field::PackedField;
|
use plonky2::field::packed_field::PackedField;
|
||||||
@ -90,15 +92,24 @@ pub trait Stark<F: RichField + Extendable<D>, const D: usize>: Sync {
|
|||||||
FriPolynomialInfo::from_range(oracle_indices.next().unwrap(), 0..Self::COLUMNS);
|
FriPolynomialInfo::from_range(oracle_indices.next().unwrap(), 0..Self::COLUMNS);
|
||||||
|
|
||||||
let num_permutation_batches = self.num_permutation_batches(config);
|
let num_permutation_batches = self.num_permutation_batches(config);
|
||||||
let permutation_lookup_index = oracle_indices.next().unwrap();
|
let permutation_lookup_zs_info = (num_permutation_batches + num_ctl_zs > 0).then(|| {
|
||||||
let permutation_lookup_zs_info = FriPolynomialInfo::from_range(
|
let permutation_lookup_index = oracle_indices.next().unwrap();
|
||||||
permutation_lookup_index,
|
FriPolynomialInfo::from_range(
|
||||||
0..num_permutation_batches + num_ctl_zs,
|
permutation_lookup_index,
|
||||||
);
|
0..num_permutation_batches + num_ctl_zs,
|
||||||
let lookup_zs_info = FriPolynomialInfo::from_range(
|
)
|
||||||
permutation_lookup_index,
|
});
|
||||||
num_permutation_batches..num_permutation_batches + num_ctl_zs,
|
|
||||||
);
|
let lookup_zs_info = (num_ctl_zs > 0).then(|| {
|
||||||
|
let index = permutation_lookup_zs_info
|
||||||
|
.as_ref()
|
||||||
|
.map(|info| info[0].oracle_index)
|
||||||
|
.unwrap_or_else(|| oracle_indices.next().unwrap());
|
||||||
|
FriPolynomialInfo::from_range(
|
||||||
|
index,
|
||||||
|
num_permutation_batches..num_permutation_batches + num_ctl_zs,
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
let quotient_info = FriPolynomialInfo::from_range(
|
let quotient_info = FriPolynomialInfo::from_range(
|
||||||
oracle_indices.next().unwrap(),
|
oracle_indices.next().unwrap(),
|
||||||
@ -107,24 +118,29 @@ pub trait Stark<F: RichField + Extendable<D>, const D: usize>: Sync {
|
|||||||
|
|
||||||
let zeta_batch = FriBatchInfo {
|
let zeta_batch = FriBatchInfo {
|
||||||
point: zeta,
|
point: zeta,
|
||||||
polynomials: [
|
polynomials: once(trace_info.clone())
|
||||||
trace_info.clone(),
|
.chain(permutation_lookup_zs_info.clone())
|
||||||
permutation_lookup_zs_info.clone(),
|
.chain(once(quotient_info))
|
||||||
quotient_info,
|
.collect::<Vec<_>>()
|
||||||
]
|
.concat(),
|
||||||
.concat(),
|
|
||||||
};
|
};
|
||||||
let zeta_right_batch = FriBatchInfo {
|
let zeta_right_batch = FriBatchInfo {
|
||||||
point: zeta.scalar_mul(g),
|
point: zeta.scalar_mul(g),
|
||||||
polynomials: [trace_info, permutation_lookup_zs_info].concat(),
|
polynomials: once(trace_info.clone())
|
||||||
|
.chain(permutation_lookup_zs_info.clone())
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.concat(),
|
||||||
};
|
};
|
||||||
let lookup_batch = FriBatchInfo {
|
let lookup_batch = lookup_zs_info.map(|info| FriBatchInfo {
|
||||||
point: F::Extension::primitive_root_of_unity(degree_bits).inverse(),
|
point: F::Extension::primitive_root_of_unity(degree_bits).inverse(),
|
||||||
polynomials: lookup_zs_info,
|
polynomials: info,
|
||||||
};
|
});
|
||||||
FriInstanceInfo {
|
FriInstanceInfo {
|
||||||
oracles: vec![no_blinding_oracle; oracle_indices.next().unwrap()],
|
oracles: vec![no_blinding_oracle; oracle_indices.next().unwrap()],
|
||||||
batches: vec![zeta_batch, zeta_right_batch, lookup_batch],
|
batches: once(zeta_batch)
|
||||||
|
.chain(once(zeta_right_batch))
|
||||||
|
.chain(lookup_batch)
|
||||||
|
.collect::<Vec<_>>(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user