lighthouse/beacon_node/beacon_chain/src/attestation_processing.rs

40 lines
978 B
Rust
Raw Normal View History

use super::{BeaconChain, ClientDB, SlotClock};
pub use crate::attestation_aggregator::{ProcessError as AggregatorError, ProcessOutcome};
use crate::canonical_head::Error as HeadError;
2019-01-28 05:21:33 +00:00
use types::FreeAttestation;
#[derive(Debug, PartialEq)]
pub enum Error {
PresentSlotUnknown,
AggregatorError(AggregatorError),
HeadError(HeadError),
}
impl<T, U> BeaconChain<T, U>
where
T: ClientDB,
U: SlotClock,
{
pub fn process_free_attestation(
&self,
2019-01-28 05:21:33 +00:00
free_attestation: FreeAttestation,
) -> Result<ProcessOutcome, Error> {
self.attestation_aggregator
.write()
.process_free_attestation(&self.state.read(), &free_attestation, &self.spec)
.map_err(|e| e.into())
}
}
impl From<AggregatorError> for Error {
fn from(e: AggregatorError) -> Error {
Error::AggregatorError(e)
}
}
impl From<HeadError> for Error {
fn from(e: HeadError) -> Error {
Error::HeadError(e)
}
}