mirror of https://github.com/zcash/orchard.git
mul.rs: Explain ordering of mul::incomplete advice columns.
This commit is contained in:
parent
0ade539441
commit
b696163e31
|
@ -70,6 +70,10 @@ impl Config {
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn output_columns(&self) -> HashSet<Column<Advice>> {
|
||||||
|
core::array::IntoIter::new([self.x_qr, self.y_qr]).collect()
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn create_gate(&self, meta: &mut ConstraintSystem<pallas::Base>) {
|
pub(crate) fn create_gate(&self, meta: &mut ConstraintSystem<pallas::Base>) {
|
||||||
meta.create_gate("complete addition gates", |meta| {
|
meta.create_gate("complete addition gates", |meta| {
|
||||||
let q_add = meta.query_selector(self.q_add);
|
let q_add = meta.query_selector(self.q_add);
|
||||||
|
|
|
@ -80,15 +80,20 @@ impl From<&EccConfig> for Config {
|
||||||
"y_p is shared across hi and lo halves."
|
"y_p is shared across hi and lo halves."
|
||||||
);
|
);
|
||||||
|
|
||||||
let add_config_advices = config.add_config.advice_columns();
|
// For both hi_config and lo_config:
|
||||||
assert!(
|
// z and lambda1 are assigned on the same row as the add_config output.
|
||||||
!add_config_advices.contains(&config.hi_config.z),
|
// Therefore, z and lambda1 must not overlap with add_config.x_qr, add_config.y_qr.
|
||||||
"hi_config z cannot overlap with complete addition columns."
|
let add_config_outputs = config.add_config.output_columns();
|
||||||
);
|
for config in [&(*config.hi_config), &(*config.lo_config)].iter() {
|
||||||
assert!(
|
assert!(
|
||||||
!add_config_advices.contains(&config.complete_config.z_complete),
|
!add_config_outputs.contains(&config.z),
|
||||||
"complete_config z cannot overlap with complete addition columns."
|
"incomplete config z cannot overlap with complete addition columns."
|
||||||
);
|
);
|
||||||
|
assert!(
|
||||||
|
!add_config_outputs.contains(&config.lambda1),
|
||||||
|
"incomplete config lambda1 cannot overlap with complete addition columns."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
config
|
config
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue