mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-18 21:38:31 +00:00
Electra attestation changes sean review (#5972)
* instantiate empty bitlist in unreachable code * clean up error conversion * fork enabled bool cleanup * remove a couple todos * return bools instead of options in `aggregate` and use the result * delete commented out code * use map macros in simple transformations * remove signers_disjoint_from * get ef tests compiling * get ef tests compiling * update intentionally excluded files
This commit is contained in:
@@ -165,22 +165,22 @@ impl<E: EthSpec> CompactIndexedAttestation<E> {
|
||||
CompactIndexedAttestation::Electra(this),
|
||||
CompactIndexedAttestation::Electra(other),
|
||||
) => this.should_aggregate(other),
|
||||
// TODO(electra) is a mix of electra and base compact indexed attestations an edge case we need to deal with?
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn aggregate(&mut self, other: &Self) -> Option<()> {
|
||||
/// Returns `true` if aggregated, otherwise `false`.
|
||||
pub fn aggregate(&mut self, other: &Self) -> bool {
|
||||
match (self, other) {
|
||||
(CompactIndexedAttestation::Base(this), CompactIndexedAttestation::Base(other)) => {
|
||||
this.aggregate(other)
|
||||
this.aggregate(other);
|
||||
true
|
||||
}
|
||||
(
|
||||
CompactIndexedAttestation::Electra(this),
|
||||
CompactIndexedAttestation::Electra(other),
|
||||
) => this.aggregate_same_committee(other),
|
||||
// TODO(electra) is a mix of electra and base compact indexed attestations an edge case we need to deal with?
|
||||
_ => None,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -192,7 +192,7 @@ impl<E: EthSpec> CompactIndexedAttestationBase<E> {
|
||||
.is_zero()
|
||||
}
|
||||
|
||||
pub fn aggregate(&mut self, other: &Self) -> Option<()> {
|
||||
pub fn aggregate(&mut self, other: &Self) {
|
||||
self.attesting_indices = self
|
||||
.attesting_indices
|
||||
.drain(..)
|
||||
@@ -201,8 +201,6 @@ impl<E: EthSpec> CompactIndexedAttestationBase<E> {
|
||||
.collect();
|
||||
self.aggregation_bits = self.aggregation_bits.union(&other.aggregation_bits);
|
||||
self.signature.add_assign_aggregate(&other.signature);
|
||||
|
||||
Some(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,9 +214,10 @@ impl<E: EthSpec> CompactIndexedAttestationElectra<E> {
|
||||
.is_zero()
|
||||
}
|
||||
|
||||
pub fn aggregate_same_committee(&mut self, other: &Self) -> Option<()> {
|
||||
/// Returns `true` if aggregated, otherwise `false`.
|
||||
pub fn aggregate_same_committee(&mut self, other: &Self) -> bool {
|
||||
if self.committee_bits != other.committee_bits {
|
||||
return None;
|
||||
return false;
|
||||
}
|
||||
self.aggregation_bits = self.aggregation_bits.union(&other.aggregation_bits);
|
||||
self.attesting_indices = self
|
||||
@@ -228,7 +227,7 @@ impl<E: EthSpec> CompactIndexedAttestationElectra<E> {
|
||||
.dedup()
|
||||
.collect();
|
||||
self.signature.add_assign_aggregate(&other.signature);
|
||||
Some(())
|
||||
true
|
||||
}
|
||||
|
||||
pub fn aggregate_with_disjoint_committees(&mut self, other: &Self) -> Option<()> {
|
||||
@@ -318,8 +317,7 @@ impl<E: EthSpec> AttestationMap<E> {
|
||||
|
||||
for existing_attestation in attestations.iter_mut() {
|
||||
if existing_attestation.should_aggregate(&indexed) {
|
||||
existing_attestation.aggregate(&indexed);
|
||||
aggregated = true;
|
||||
aggregated = existing_attestation.aggregate(&indexed);
|
||||
} else if *existing_attestation == indexed {
|
||||
aggregated = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user