Delete SlotClock errs from block_processing, tidy.
This commit is contained in:
		
							parent
							
								
									1e6f85a5eb
								
							
						
					
					
						commit
						9d1f98ba8f
					
				| @ -1,6 +1,5 @@ | |||||||
| use super::{BeaconChain, ClientDB, DBError, SlotClock}; | use super::{BeaconChain, ClientDB, DBError, SlotClock}; | ||||||
| use log::debug; | use log::debug; | ||||||
| use slot_clock::{SystemTimeSlotClockError, TestingSlotClockError}; |  | ||||||
| use ssz::{ssz_encode, Encodable}; | use ssz::{ssz_encode, Encodable}; | ||||||
| use types::{ | use types::{ | ||||||
|     beacon_state::{BlockProcessingError, SlotProcessingError}, |     beacon_state::{BlockProcessingError, SlotProcessingError}, | ||||||
| @ -10,32 +9,46 @@ use types::{ | |||||||
| 
 | 
 | ||||||
| #[derive(Debug, PartialEq)] | #[derive(Debug, PartialEq)] | ||||||
| pub enum ValidBlock { | pub enum ValidBlock { | ||||||
|  |     /// The block was sucessfully processed.
 | ||||||
|     Processed, |     Processed, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[derive(Debug, PartialEq)] | #[derive(Debug, PartialEq)] | ||||||
| pub enum InvalidBlock { | pub enum InvalidBlock { | ||||||
|  |     /// The block slot is greater than the present slot.
 | ||||||
|     FutureSlot, |     FutureSlot, | ||||||
|  |     /// The block state_root does not match the generated state.
 | ||||||
|     StateRootMismatch, |     StateRootMismatch, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[derive(Debug, PartialEq)] | #[derive(Debug, PartialEq)] | ||||||
| pub enum Outcome { | pub enum Outcome { | ||||||
|  |     /// The block was sucessfully validated.
 | ||||||
|     ValidBlock(ValidBlock), |     ValidBlock(ValidBlock), | ||||||
|  |     /// The block was not sucessfully validated.
 | ||||||
|     InvalidBlock(InvalidBlock), |     InvalidBlock(InvalidBlock), | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[derive(Debug, PartialEq)] | #[derive(Debug, PartialEq)] | ||||||
| pub enum Error { | pub enum Error { | ||||||
|  |     /// There was in internal database error.
 | ||||||
|     DBError(String), |     DBError(String), | ||||||
|  |     /// The block SSZ encoding is unreadable.
 | ||||||
|     UnableToDecodeBlock, |     UnableToDecodeBlock, | ||||||
|     SlotClockError(SystemTimeSlotClockError), |     /// The blocks parent state is not in the database. This is an internal error.
 | ||||||
|     MissingParentState(Hash256), |     MissingParentState(Hash256), | ||||||
|  |     /// The blocks parent state is in the database, but invalid. This is an internal error.
 | ||||||
|     InvalidParentState(Hash256), |     InvalidParentState(Hash256), | ||||||
|  |     /// The blocks parent state is in the database, but invalid. This is an internal error.
 | ||||||
|     MissingBeaconBlock(Hash256), |     MissingBeaconBlock(Hash256), | ||||||
|  |     /// The parent block is not in the database. The block should not be processed.
 | ||||||
|     InvalidBeaconBlock(Hash256), |     InvalidBeaconBlock(Hash256), | ||||||
|  |     /// The parent block is not in the database, but invalid. This is an internal error.
 | ||||||
|     MissingParentBlock(Hash256), |     MissingParentBlock(Hash256), | ||||||
|  |     /// There was an error whilst advancing the parent state to the present slot. This is an
 | ||||||
|  |     /// internal error.
 | ||||||
|     SlotProcessingError(SlotProcessingError), |     SlotProcessingError(SlotProcessingError), | ||||||
|  |     /// There was an error whilst processing the block against it's state. The block is invalid.
 | ||||||
|     PerBlockProcessingError(BlockProcessingError), |     PerBlockProcessingError(BlockProcessingError), | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -43,8 +56,10 @@ impl<T, U> BeaconChain<T, U> | |||||||
| where | where | ||||||
|     T: ClientDB, |     T: ClientDB, | ||||||
|     U: SlotClock, |     U: SlotClock, | ||||||
|     Error: From<<U as SlotClock>::Error>, |  | ||||||
| { | { | ||||||
|  |     /// Accept some block and attempt to add it to block DAG.
 | ||||||
|  |     ///
 | ||||||
|  |     /// Will accept blocks from prior slots, however it will reject any block from a future slot.
 | ||||||
|     pub fn process_block<V>(&self, block: V) -> Result<Outcome, Error> |     pub fn process_block<V>(&self, block: V) -> Result<Outcome, Error> | ||||||
|     where |     where | ||||||
|         V: BeaconBlockReader + Encodable + Sized, |         V: BeaconBlockReader + Encodable + Sized, | ||||||
| @ -94,12 +109,14 @@ where | |||||||
|         self.block_store.put(&block_root, &ssz_encode(&block)[..])?; |         self.block_store.put(&block_root, &ssz_encode(&block)[..])?; | ||||||
|         self.state_store.put(&state_root, &ssz_encode(&state)[..])?; |         self.state_store.put(&state_root, &ssz_encode(&state)[..])?; | ||||||
| 
 | 
 | ||||||
|  |         // Update the block DAG.
 | ||||||
|         self.block_graph |         self.block_graph | ||||||
|             .add_leaf(&parent_block_root, block_root.clone()); |             .add_leaf(&parent_block_root, block_root.clone()); | ||||||
| 
 | 
 | ||||||
|         // If the parent block was the parent_block, automatically update the canonical head.
 |         // If the parent block was the parent_block, automatically update the canonical head.
 | ||||||
|         //
 |         //
 | ||||||
|         // TODO: this is a first-in-best-dressed scenario that is not ideal -- find a solution.
 |         // TODO: this is a first-in-best-dressed scenario that is not ideal; fork_choice should be
 | ||||||
|  |         // run instead.
 | ||||||
|         if self.head().beacon_block_root == parent_block_root { |         if self.head().beacon_block_root == parent_block_root { | ||||||
|             self.update_canonical_head( |             self.update_canonical_head( | ||||||
|                 block.clone(), |                 block.clone(), | ||||||
| @ -107,10 +124,10 @@ where | |||||||
|                 state.clone(), |                 state.clone(), | ||||||
|                 state_root.clone(), |                 state_root.clone(), | ||||||
|             ); |             ); | ||||||
|  |             // Update the local state variable.
 | ||||||
|             *self.state.write() = state.clone(); |             *self.state.write() = state.clone(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // The block was sucessfully processed.
 |  | ||||||
|         Ok(Outcome::ValidBlock(ValidBlock::Processed)) |         Ok(Outcome::ValidBlock(ValidBlock::Processed)) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -132,15 +149,3 @@ impl From<BlockProcessingError> for Error { | |||||||
|         Error::PerBlockProcessingError(e) |         Error::PerBlockProcessingError(e) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 |  | ||||||
| impl From<TestingSlotClockError> for Error { |  | ||||||
|     fn from(_: TestingSlotClockError) -> Error { |  | ||||||
|         unreachable!(); // Testing clock never throws an error.
 |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl From<SystemTimeSlotClockError> for Error { |  | ||||||
|     fn from(e: SystemTimeSlotClockError) -> Error { |  | ||||||
|         Error::SlotClockError(e) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -1,6 +1,5 @@ | |||||||
| use super::BenchingBeaconNode; | use super::BenchingBeaconNode; | ||||||
| use attester::{BeaconNode as AttesterBeaconNode, BeaconNodeError as NodeError, PublishOutcome}; | use attester::{BeaconNode as AttesterBeaconNode, BeaconNodeError as NodeError, PublishOutcome}; | ||||||
| use beacon_chain::block_processing::Error as ProcessingError; |  | ||||||
| use beacon_chain::block_production::Error as BlockProductionError; | use beacon_chain::block_production::Error as BlockProductionError; | ||||||
| use db::ClientDB; | use db::ClientDB; | ||||||
| use slot_clock::SlotClock; | use slot_clock::SlotClock; | ||||||
| @ -9,7 +8,6 @@ use types::{AttestationData, FreeAttestation}; | |||||||
| impl<T: ClientDB, U: SlotClock> AttesterBeaconNode for BenchingBeaconNode<T, U> | impl<T: ClientDB, U: SlotClock> AttesterBeaconNode for BenchingBeaconNode<T, U> | ||||||
| where | where | ||||||
|     BlockProductionError: From<<U>::Error>, |     BlockProductionError: From<<U>::Error>, | ||||||
|     ProcessingError: From<<U as SlotClock>::Error>, |  | ||||||
| { | { | ||||||
|     fn produce_attestation_data( |     fn produce_attestation_data( | ||||||
|         &self, |         &self, | ||||||
|  | |||||||
| @ -1,5 +1,4 @@ | |||||||
| use super::BenchingBeaconNode; | use super::BenchingBeaconNode; | ||||||
| use beacon_chain::block_processing::Error as ProcessingError; |  | ||||||
| use beacon_chain::block_production::Error as BlockProductionError; | use beacon_chain::block_production::Error as BlockProductionError; | ||||||
| use block_producer::{ | use block_producer::{ | ||||||
|     BeaconNode as BeaconBlockNode, BeaconNodeError as BeaconBlockNodeError, PublishOutcome, |     BeaconNode as BeaconBlockNode, BeaconNodeError as BeaconBlockNodeError, PublishOutcome, | ||||||
| @ -11,7 +10,6 @@ use types::{BeaconBlock, PublicKey, Signature}; | |||||||
| impl<T: ClientDB, U: SlotClock> BeaconBlockNode for BenchingBeaconNode<T, U> | impl<T: ClientDB, U: SlotClock> BeaconBlockNode for BenchingBeaconNode<T, U> | ||||||
| where | where | ||||||
|     BlockProductionError: From<<U>::Error>, |     BlockProductionError: From<<U>::Error>, | ||||||
|     ProcessingError: From<<U as SlotClock>::Error>, |  | ||||||
| { | { | ||||||
|     /// Requests the `proposer_nonce` from the `BeaconChain`.
 |     /// Requests the `proposer_nonce` from the `BeaconChain`.
 | ||||||
|     fn proposer_nonce(&self, pubkey: &PublicKey) -> Result<u64, BeaconBlockNodeError> { |     fn proposer_nonce(&self, pubkey: &PublicKey) -> Result<u64, BeaconBlockNodeError> { | ||||||
|  | |||||||
| @ -2,7 +2,6 @@ use attester::{Attester, Error as AttestationPollError}; | |||||||
| use beacon_chain::BeaconChain; | use beacon_chain::BeaconChain; | ||||||
| use block_producer::{BlockProducer, Error as BlockPollError}; | use block_producer::{BlockProducer, Error as BlockPollError}; | ||||||
| use db::MemoryDB; | use db::MemoryDB; | ||||||
| use log::trace; |  | ||||||
| use signer::TestSigner; | use signer::TestSigner; | ||||||
| use slot_clock::TestingSlotClock; | use slot_clock::TestingSlotClock; | ||||||
| use std::sync::Arc; | use std::sync::Arc; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user