Add FreeAttesation type

This commit is contained in:
Paul Hauner
2019-01-28 16:21:33 +11:00
parent 5bbffcb053
commit be7e326c33
11 changed files with 92 additions and 66 deletions

View File

@@ -3,7 +3,7 @@ mod traits;
use slot_clock::SlotClock;
use std::sync::Arc;
use types::{AttestationData, Signature};
use types::{AttestationData, FreeAttestation, Signature};
pub use self::traits::{
BeaconNode, BeaconNodeError, DutiesReader, DutiesReaderError, PublishOutcome, Signer,
@@ -111,8 +111,14 @@ impl<T: SlotClock, U: BeaconNode, V: DutiesReader, W: Signer> Attester<T, U, V,
None => return Ok(PollOutcome::ValidatorIsUnknown(slot)),
};
let free_attestation = FreeAttestation {
data: attestation_data,
signature,
validator_index,
};
self.beacon_node
.publish_attestation_data(attestation_data, signature, validator_index)?;
.publish_attestation_data(free_attestation)?;
Ok(PollOutcome::AttestationProduced(slot))
}

View File

@@ -1,6 +1,6 @@
use crate::traits::{BeaconNode, BeaconNodeError, PublishOutcome};
use std::sync::RwLock;
use types::{AttestationData, Signature};
use types::{AttestationData, FreeAttestation};
type ProduceResult = Result<Option<AttestationData>, BeaconNodeError>;
type PublishResult = Result<PublishOutcome, BeaconNodeError>;
@@ -11,7 +11,7 @@ pub struct TestBeaconNode {
pub produce_input: RwLock<Option<(u64, u64)>>,
pub produce_result: RwLock<Option<ProduceResult>>,
pub publish_input: RwLock<Option<(AttestationData, Signature, u64)>>,
pub publish_input: RwLock<Option<FreeAttestation>>,
pub publish_result: RwLock<Option<PublishResult>>,
}
@@ -34,13 +34,8 @@ impl BeaconNode for TestBeaconNode {
}
}
fn publish_attestation_data(
&self,
attestation_data: AttestationData,
signature: Signature,
validator_index: u64,
) -> PublishResult {
*self.publish_input.write().unwrap() = Some((attestation_data, signature, validator_index));
fn publish_attestation_data(&self, free_attestation: FreeAttestation) -> PublishResult {
*self.publish_input.write().unwrap() = Some(free_attestation.clone());
match *self.publish_result.read().unwrap() {
Some(ref r) => r.clone(),
None => panic!("TestBeaconNode: publish_result == None"),

View File

@@ -1,4 +1,4 @@
use types::{AttestationData, Signature};
use types::{AttestationData, FreeAttestation, Signature};
#[derive(Debug, PartialEq, Clone)]
pub enum BeaconNodeError {
@@ -22,9 +22,7 @@ pub trait BeaconNode: Send + Sync {
fn publish_attestation_data(
&self,
attestation_data: AttestationData,
signature: Signature,
validator_index: u64,
free_attestation: FreeAttestation,
) -> Result<PublishOutcome, BeaconNodeError>;
}