Run rustfmt on entire codebase

Signed-off-by: Paul Hauner <paul@paulhauner.com>
This commit is contained in:
Paul Hauner 2019-01-21 18:41:07 +11:00
parent ab502de8ec
commit 24a27891b8
14 changed files with 90 additions and 50 deletions

View File

@ -14,9 +14,9 @@ mod justified_slot;
mod shard_block; mod shard_block;
mod signature; mod signature;
pub use crate::enums::{Invalid, Outcome, Error};
pub use crate::block_inclusion::validate_attestation_for_block; pub use crate::block_inclusion::validate_attestation_for_block;
pub use crate::justified_slot::validate_attestation_justified_slot; pub use crate::enums::{Error, Invalid, Outcome};
pub use crate::justified_block::validate_attestation_justified_block_hash; pub use crate::justified_block::validate_attestation_justified_block_hash;
pub use crate::signature::validate_attestation_signature; pub use crate::justified_slot::validate_attestation_justified_slot;
pub use crate::shard_block::validate_attestation_data_shard_block_hash; pub use crate::shard_block::validate_attestation_data_shard_block_hash;
pub use crate::signature::validate_attestation_signature;

View File

@ -3,8 +3,8 @@ extern crate types;
extern crate validator_induction; extern crate validator_induction;
extern crate validator_shuffling; extern crate validator_shuffling;
mod beacon_state;
mod beacon_block; mod beacon_block;
mod beacon_state;
pub use crate::beacon_block::genesis_beacon_block; pub use crate::beacon_block::genesis_beacon_block;
pub use crate::beacon_state::{genesis_beacon_state, Error as GenesisError}; pub use crate::beacon_state::{genesis_beacon_state, Error as GenesisError};

View File

@ -6,12 +6,13 @@ pub mod address;
pub mod aggregate_signature; pub mod aggregate_signature;
pub mod bitfield; pub mod bitfield;
pub mod hash256; pub mod hash256;
pub mod signature;
pub mod secret_key;
pub mod public_key; pub mod public_key;
pub mod secret_key;
pub mod signature;
pub trait TestRandom<T> pub trait TestRandom<T>
where T: RngCore where
T: RngCore,
{ {
fn random_for_test(rng: &mut T) -> Self; fn random_for_test(rng: &mut T) -> Self;
} }
@ -35,7 +36,8 @@ impl<T: RngCore> TestRandom<T> for usize {
} }
impl<T: RngCore, U> TestRandom<T> for Vec<U> impl<T: RngCore, U> TestRandom<T> for Vec<U>
where U: TestRandom<T> where
U: TestRandom<T>,
{ {
fn random_for_test(rng: &mut T) -> Self { fn random_for_test(rng: &mut T) -> Self {
vec![ vec![

View File

@ -1,5 +1,5 @@
use super::bls::PublicKey; use super::bls::PublicKey;
use super::{Hash256}; use super::Hash256;
use crate::test_utils::TestRandom; use crate::test_utils::TestRandom;
use rand::RngCore; use rand::RngCore;
use ssz::{Decodable, DecodeError, Encodable, SszStream}; use ssz::{Decodable, DecodeError, Encodable, SszStream};
@ -40,7 +40,7 @@ pub struct ValidatorRecord {
pub exit_count: u64, pub exit_count: u64,
pub custody_commitment: Hash256, pub custody_commitment: Hash256,
pub latest_custody_reseed_slot: u64, pub latest_custody_reseed_slot: u64,
pub penultimate_custody_reseed_slot: u64 pub penultimate_custody_reseed_slot: u64,
} }
impl ValidatorRecord { impl ValidatorRecord {
@ -132,7 +132,7 @@ impl Decodable for ValidatorRecord {
exit_count, exit_count,
custody_commitment, custody_commitment,
latest_custody_reseed_slot, latest_custody_reseed_slot,
penultimate_custody_reseed_slot penultimate_custody_reseed_slot,
}, },
i, i,
)) ))

View File

@ -19,8 +19,8 @@ pub use self::bls_aggregates::AggregatePublicKey;
pub const BLS_AGG_SIG_BYTE_SIZE: usize = 97; pub const BLS_AGG_SIG_BYTE_SIZE: usize = 97;
use hashing::canonical_hash; use hashing::canonical_hash;
use std::default::Default;
use ssz::ssz_encode; use ssz::ssz_encode;
use std::default::Default;
fn extend_if_needed(hash: &mut Vec<u8>) { fn extend_if_needed(hash: &mut Vec<u8>) {
// NOTE: bls_aggregates crate demands 48 bytes, this may be removed as we get closer to production // NOTE: bls_aggregates crate demands 48 bytes, this may be removed as we get closer to production

View File

@ -1,19 +1,19 @@
use bls::{verify_proof_of_possession}; use bls::verify_proof_of_possession;
use types::{BeaconState, Deposit, ValidatorRecord, ValidatorStatus};
use spec::ChainSpec; use spec::ChainSpec;
use types::{BeaconState, Deposit, ValidatorRecord, ValidatorStatus};
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub enum ValidatorInductionError { pub enum ValidatorInductionError {
InvalidShard, InvalidShard,
InvaidProofOfPossession, InvaidProofOfPossession,
InvalidWithdrawalCredentials InvalidWithdrawalCredentials,
} }
pub fn process_deposit( pub fn process_deposit(
state: &mut BeaconState, state: &mut BeaconState,
deposit: &Deposit, deposit: &Deposit,
spec: &ChainSpec) spec: &ChainSpec,
-> Result<usize, ValidatorInductionError> { ) -> Result<usize, ValidatorInductionError> {
let deposit_input = &deposit.deposit_data.deposit_input; let deposit_input = &deposit.deposit_data.deposit_input;
let deposit_data = &deposit.deposit_data; let deposit_data = &deposit.deposit_data;
@ -22,18 +22,22 @@ pub fn process_deposit(
return Err(ValidatorInductionError::InvaidProofOfPossession); return Err(ValidatorInductionError::InvaidProofOfPossession);
} }
let validator_index = state.validator_registry.iter() let validator_index = state
.validator_registry
.iter()
.position(|validator| validator.pubkey == deposit_input.pubkey); .position(|validator| validator.pubkey == deposit_input.pubkey);
match validator_index { match validator_index {
Some(i) => { Some(i) => {
if state.validator_registry[i].withdrawal_credentials == deposit_input.withdrawal_credentials { if state.validator_registry[i].withdrawal_credentials
== deposit_input.withdrawal_credentials
{
state.validator_balances[i] += deposit_data.value; state.validator_balances[i] += deposit_data.value;
return Ok(i); return Ok(i);
} }
Err(ValidatorInductionError::InvalidWithdrawalCredentials) Err(ValidatorInductionError::InvalidWithdrawalCredentials)
}, }
None => { None => {
let validator = ValidatorRecord { let validator = ValidatorRecord {
pubkey: deposit_input.pubkey.clone(), pubkey: deposit_input.pubkey.clone(),
@ -45,7 +49,7 @@ pub fn process_deposit(
exit_count: 0, exit_count: 0,
custody_commitment: deposit_input.custody_commitment, custody_commitment: deposit_input.custody_commitment,
latest_custody_reseed_slot: 0, latest_custody_reseed_slot: 0,
penultimate_custody_reseed_slot: 0 penultimate_custody_reseed_slot: 0,
}; };
match min_empty_validator_index(state, spec) { match min_empty_validator_index(state, spec) {
@ -53,7 +57,7 @@ pub fn process_deposit(
state.validator_registry[i] = validator; state.validator_registry[i] = validator;
state.validator_balances[i] = deposit_data.value; state.validator_balances[i] = deposit_data.value;
Ok(i) Ok(i)
}, }
None => { None => {
state.validator_registry.push(validator); state.validator_registry.push(validator);
state.validator_balances.push(deposit_data.value); state.validator_balances.push(deposit_data.value);
@ -64,14 +68,13 @@ pub fn process_deposit(
} }
} }
fn min_empty_validator_index( fn min_empty_validator_index(state: &BeaconState, spec: &ChainSpec) -> Option<usize> {
state: &BeaconState,
spec: &ChainSpec
) -> Option<usize> {
for i in 0..state.validator_registry.len() { for i in 0..state.validator_registry.len() {
if state.validator_balances[i] == 0 if state.validator_balances[i] == 0
&& state.validator_registry[i].latest_status_change_slot && state.validator_registry[i].latest_status_change_slot
+ spec.zero_balance_validator_ttl <= state.slot { + spec.zero_balance_validator_ttl
<= state.slot
{
return Some(i); return Some(i);
} }
} }
@ -107,7 +110,10 @@ mod tests {
(dep.deposit_data.deposit_input.pubkey == val.pubkey) (dep.deposit_data.deposit_input.pubkey == val.pubkey)
& (dep.deposit_data.deposit_input.withdrawal_credentials == val.withdrawal_credentials) & (dep.deposit_data.deposit_input.withdrawal_credentials == val.withdrawal_credentials)
& (dep.deposit_data.deposit_input.randao_commitment == val.randao_commitment) & (dep.deposit_data.deposit_input.randao_commitment == val.randao_commitment)
& (verify_proof_of_possession(&dep.deposit_data.deposit_input.proof_of_possession, &val.pubkey)) & (verify_proof_of_possession(
&dep.deposit_data.deposit_input.proof_of_possession,
&val.pubkey,
))
} }
#[test] #[test]
@ -120,7 +126,10 @@ mod tests {
let result = process_deposit(&mut state, &deposit, &spec); let result = process_deposit(&mut state, &deposit, &spec);
assert_eq!(result.unwrap(), 0); assert_eq!(result.unwrap(), 0);
assert!(deposit_equals_record(&deposit, &state.validator_registry[0])); assert!(deposit_equals_record(
&deposit,
&state.validator_registry[0]
));
assert_eq!(state.validator_registry.len(), 1); assert_eq!(state.validator_registry.len(), 1);
assert_eq!(state.validator_balances.len(), 1); assert_eq!(state.validator_balances.len(), 1);
} }
@ -135,7 +144,10 @@ mod tests {
let result = process_deposit(&mut state, &deposit, &spec); let result = process_deposit(&mut state, &deposit, &spec);
deposit.deposit_data.value = DEPOSIT_GWEI; deposit.deposit_data.value = DEPOSIT_GWEI;
assert_eq!(result.unwrap(), i); assert_eq!(result.unwrap(), i);
assert!(deposit_equals_record(&deposit, &state.validator_registry[i])); assert!(deposit_equals_record(
&deposit,
&state.validator_registry[i]
));
assert_eq!(state.validator_registry.len(), i + 1); assert_eq!(state.validator_registry.len(), i + 1);
assert_eq!(state.validator_balances.len(), i + 1); assert_eq!(state.validator_balances.len(), i + 1);
} }
@ -151,7 +163,8 @@ mod tests {
deposit.deposit_data.value = DEPOSIT_GWEI; deposit.deposit_data.value = DEPOSIT_GWEI;
validator.pubkey = deposit.deposit_data.deposit_input.pubkey.clone(); validator.pubkey = deposit.deposit_data.deposit_input.pubkey.clone();
validator.withdrawal_credentials = deposit.deposit_data.deposit_input.withdrawal_credentials; validator.withdrawal_credentials =
deposit.deposit_data.deposit_input.withdrawal_credentials;
validator.randao_commitment = deposit.deposit_data.deposit_input.randao_commitment; validator.randao_commitment = deposit.deposit_data.deposit_input.randao_commitment;
state.validator_registry.push(validator); state.validator_registry.push(validator);
@ -160,7 +173,10 @@ mod tests {
let result = process_deposit(&mut state, &deposit, &spec); let result = process_deposit(&mut state, &deposit, &spec);
assert_eq!(result.unwrap(), 0); assert_eq!(result.unwrap(), 0);
assert!(deposit_equals_record(&deposit, &state.validator_registry[0])); assert!(deposit_equals_record(
&deposit,
&state.validator_registry[0]
));
assert_eq!(state.validator_balances[0], DEPOSIT_GWEI * 2); assert_eq!(state.validator_balances[0], DEPOSIT_GWEI * 2);
assert_eq!(state.validator_registry.len(), 1); assert_eq!(state.validator_registry.len(), 1);
assert_eq!(state.validator_balances.len(), 1); assert_eq!(state.validator_balances.len(), 1);
@ -183,7 +199,10 @@ mod tests {
let result = process_deposit(&mut state, &deposit, &spec); let result = process_deposit(&mut state, &deposit, &spec);
assert_eq!(result.unwrap(), 0); assert_eq!(result.unwrap(), 0);
assert!(deposit_equals_record(&deposit, &state.validator_registry[0])); assert!(deposit_equals_record(
&deposit,
&state.validator_registry[0]
));
assert_eq!(state.validator_balances[0], DEPOSIT_GWEI); assert_eq!(state.validator_balances[0], DEPOSIT_GWEI);
assert_eq!(state.validator_registry.len(), 1); assert_eq!(state.validator_registry.len(), 1);
assert_eq!(state.validator_balances.len(), 1); assert_eq!(state.validator_balances.len(), 1);
@ -195,11 +214,15 @@ mod tests {
let mut deposit = get_deposit(); let mut deposit = get_deposit();
let spec = ChainSpec::foundation(); let spec = ChainSpec::foundation();
deposit.deposit_data.value = DEPOSIT_GWEI; deposit.deposit_data.value = DEPOSIT_GWEI;
deposit.deposit_data.deposit_input.proof_of_possession = create_proof_of_possession(&Keypair::random()); deposit.deposit_data.deposit_input.proof_of_possession =
create_proof_of_possession(&Keypair::random());
let result = process_deposit(&mut state, &deposit, &spec); let result = process_deposit(&mut state, &deposit, &spec);
assert_eq!(result, Err(ValidatorInductionError::InvaidProofOfPossession)); assert_eq!(
result,
Err(ValidatorInductionError::InvaidProofOfPossession)
);
assert_eq!(state.validator_registry.len(), 0); assert_eq!(state.validator_registry.len(), 0);
assert_eq!(state.validator_balances.len(), 0); assert_eq!(state.validator_balances.len(), 0);
} }

View File

@ -1,8 +1,8 @@
extern crate bls; extern crate bls;
extern crate hashing; extern crate hashing;
extern crate types;
extern crate spec; extern crate spec;
extern crate types;
mod inductor; mod inductor;
pub use crate::inductor::{ValidatorInductionError, process_deposit}; pub use crate::inductor::{process_deposit, ValidatorInductionError};

View File

@ -44,7 +44,8 @@ impl DiskDB {
let db = match columns { let db = match columns {
None => DB::open(&options, db_path), None => DB::open(&options, db_path),
Some(columns) => DB::open_cf(&options, db_path, columns), Some(columns) => DB::open_cf(&options, db_path, columns),
}.expect("Unable to open local database");; }
.expect("Unable to open local database");;
Self { db } Self { db }
} }

View File

@ -42,10 +42,10 @@ mod tests {
use super::super::super::MemoryDB; use super::super::super::MemoryDB;
use super::*; use super::*;
use std::sync::Arc;
use ssz::ssz_encode; use ssz::ssz_encode;
use types::Hash256; use std::sync::Arc;
use types::test_utils::{SeedableRng, TestRandom, XorShiftRng}; use types::test_utils::{SeedableRng, TestRandom, XorShiftRng};
use types::Hash256;
test_crud_for_store!(BeaconStateStore, DB_COLUMN); test_crud_for_store!(BeaconStateStore, DB_COLUMN);

View File

@ -137,9 +137,9 @@ impl From<BeaconNodeError> for Error {
mod tests { mod tests {
use super::test_node::TestBeaconNode; use super::test_node::TestBeaconNode;
use super::*; use super::*;
use crate::duties::EpochDuties;
use slot_clock::TestingSlotClock; use slot_clock::TestingSlotClock;
use types::test_utils::{SeedableRng, TestRandom, XorShiftRng}; use types::test_utils::{SeedableRng, TestRandom, XorShiftRng};
use crate::duties::EpochDuties;
// TODO: implement more thorough testing. // TODO: implement more thorough testing.
// //

View File

@ -16,7 +16,9 @@ impl<T: SlotClock, U: BeaconNode> BlockProducerService<T, U> {
Err(error) => { Err(error) => {
error!(self.log, "Block producer poll error"; "error" => format!("{:?}", error)) error!(self.log, "Block producer poll error"; "error" => format!("{:?}", error))
} }
Ok(BlockProducerPollOutcome::BlockProduced(slot)) => info!(self.log, "Produced block"; "slot" => slot), Ok(BlockProducerPollOutcome::BlockProduced(slot)) => {
info!(self.log, "Produced block"; "slot" => slot)
}
Ok(BlockProducerPollOutcome::SlashableBlockNotProduced(slot)) => { Ok(BlockProducerPollOutcome::SlashableBlockNotProduced(slot)) => {
warn!(self.log, "Slashable block was not signed"; "slot" => slot) warn!(self.log, "Slashable block was not signed"; "slot" => slot)
} }

View File

@ -1,6 +1,6 @@
use super::traits::{BeaconNode, BeaconNodeError}; use super::traits::{BeaconNode, BeaconNodeError};
use types::BeaconBlock;
use std::sync::RwLock; use std::sync::RwLock;
use types::BeaconBlock;
type ProduceResult = Result<Option<BeaconBlock>, BeaconNodeError>; type ProduceResult = Result<Option<BeaconBlock>, BeaconNodeError>;
type PublishResult = Result<bool, BeaconNodeError>; type PublishResult = Result<bool, BeaconNodeError>;
@ -28,7 +28,7 @@ impl BeaconNode for TestBeaconNode {
*self.produce_input.write().unwrap() = Some(slot); *self.produce_input.write().unwrap() = Some(slot);
match *self.produce_result.read().unwrap() { match *self.produce_result.read().unwrap() {
Some(ref r) => r.clone(), Some(ref r) => r.clone(),
None => panic!("TestBeaconNode: produce_result == None") None => panic!("TestBeaconNode: produce_result == None"),
} }
} }
@ -36,7 +36,7 @@ impl BeaconNode for TestBeaconNode {
*self.publish_input.write().unwrap() = Some(block); *self.publish_input.write().unwrap() = Some(block);
match *self.publish_result.read().unwrap() { match *self.publish_result.read().unwrap() {
Some(ref r) => r.clone(), Some(ref r) => r.clone(),
None => panic!("TestBeaconNode: publish_result == None") None => panic!("TestBeaconNode: publish_result == None"),
} }
} }
} }

View File

@ -1,12 +1,16 @@
use super::EpochDuties;
use super::traits::{BeaconNode, BeaconNodeError}; use super::traits::{BeaconNode, BeaconNodeError};
use super::EpochDuties;
use protos::services::ValidatorAssignmentRequest; use protos::services::ValidatorAssignmentRequest;
use protos::services_grpc::BeaconBlockServiceClient; use protos::services_grpc::BeaconBlockServiceClient;
use ssz::ssz_encode; use ssz::ssz_encode;
use types::{PublicKey}; use types::PublicKey;
impl BeaconNode for BeaconBlockServiceClient { impl BeaconNode for BeaconBlockServiceClient {
fn request_shuffling(&self, epoch: u64, public_key: &PublicKey) -> Result<Option<EpochDuties>, BeaconNodeError> { fn request_shuffling(
&self,
epoch: u64,
public_key: &PublicKey,
) -> Result<Option<EpochDuties>, BeaconNodeError> {
let mut req = ValidatorAssignmentRequest::new(); let mut req = ValidatorAssignmentRequest::new();
req.set_epoch(epoch); req.set_epoch(epoch);
req.set_public_key(ssz_encode(public_key).to_vec()); req.set_public_key(ssz_encode(public_key).to_vec());
@ -24,7 +28,9 @@ impl BeaconNode for BeaconBlockServiceClient {
None None
}; };
let duties = EpochDuties { block_production_slot }; let duties = EpochDuties {
block_production_slot,
};
Ok(Some(duties)) Ok(Some(duties))
} else { } else {

View File

@ -104,7 +104,13 @@ fn main() {
let beacon_node = client.clone(); let beacon_node = client.clone();
let pubkey = keypair.pk.clone(); let pubkey = keypair.pk.clone();
thread::spawn(move || { thread::spawn(move || {
let manager = DutiesManager { duties_map, pubkey, spec, slot_clock, beacon_node }; let manager = DutiesManager {
duties_map,
pubkey,
spec,
slot_clock,
beacon_node,
};
let mut duties_manager_service = DutiesManagerService { let mut duties_manager_service = DutiesManagerService {
manager, manager,
poll_interval_millis, poll_interval_millis,