make verification module public

This commit is contained in:
Robert Habermeier 2016-11-04 19:21:48 +01:00
parent edf17d00c4
commit 5cabb3008f
6 changed files with 20 additions and 8 deletions

View File

@ -137,7 +137,7 @@ pub mod miner;
pub mod snapshot; pub mod snapshot;
pub mod action_params; pub mod action_params;
pub mod db; pub mod db;
pub mod light; pub mod verification;
#[macro_use] pub mod evm; #[macro_use] pub mod evm;
mod cache_manager; mod cache_manager;
@ -151,7 +151,6 @@ mod account_db;
mod builtin; mod builtin;
mod executive; mod executive;
mod externalities; mod externalities;
mod verification;
mod blockchain; mod blockchain;
mod types; mod types;
mod factory; mod factory;

View File

@ -14,6 +14,8 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
//! Canonical verifier.
use blockchain::BlockProvider; use blockchain::BlockProvider;
use engines::Engine; use engines::Engine;
use error::Error; use error::Error;
@ -21,6 +23,7 @@ use header::Header;
use super::Verifier; use super::Verifier;
use super::verification; use super::verification;
/// A canonial verifier -- this does full verification.
pub struct CanonVerifier; pub struct CanonVerifier;
impl Verifier for CanonVerifier { impl Verifier for CanonVerifier {

View File

@ -14,6 +14,8 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
//! Block verification utilities.
pub mod verification; pub mod verification;
pub mod verifier; pub mod verifier;
pub mod queue; pub mod queue;
@ -44,6 +46,7 @@ impl Default for VerifierType {
} }
} }
/// Create a new verifier based on type.
pub fn new(v: VerifierType) -> Box<Verifier> { pub fn new(v: VerifierType) -> Box<Verifier> {
match v { match v {
VerifierType::Canon | VerifierType::CanonNoSeal => Box::new(CanonVerifier), VerifierType::Canon | VerifierType::CanonNoSeal => Box::new(CanonVerifier),

View File

@ -14,12 +14,15 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
//! No-op verifier.
use blockchain::BlockProvider; use blockchain::BlockProvider;
use engines::Engine; use engines::Engine;
use error::Error; use error::Error;
use header::Header; use header::Header;
use super::Verifier; use super::Verifier;
/// A no-op verifier -- this will verify everything it's given immediately.
#[allow(dead_code)] #[allow(dead_code)]
pub struct NoopVerifier; pub struct NoopVerifier;

View File

@ -14,12 +14,12 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
/// Block and transaction verification functions //! Block and transaction verification functions
/// //!
/// Block verification is done in 3 steps //! Block verification is done in 3 steps
/// 1. Quick verification upon adding to the block queue //! 1. Quick verification upon adding to the block queue
/// 2. Signatures verification done in the queue. //! 2. Signatures verification done in the queue.
/// 3. Final verification against the blockchain done before enactment. //! 3. Final verification against the blockchain done before enactment.
use util::*; use util::*;
use engines::Engine; use engines::Engine;

View File

@ -14,6 +14,8 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Parity. If not, see <http://www.gnu.org/licenses/>.
//! A generic verifier trait.
use blockchain::BlockProvider; use blockchain::BlockProvider;
use engines::Engine; use engines::Engine;
use error::Error; use error::Error;
@ -21,6 +23,8 @@ use header::Header;
/// Should be used to verify blocks. /// Should be used to verify blocks.
pub trait Verifier: Send + Sync { pub trait Verifier: Send + Sync {
/// Verify a block relative to its parent and uncles.
fn verify_block_family(&self, header: &Header, bytes: &[u8], engine: &Engine, bc: &BlockProvider) -> Result<(), Error>; fn verify_block_family(&self, header: &Header, bytes: &[u8], engine: &Engine, bc: &BlockProvider) -> Result<(), Error>;
/// Do a final verification check for an enacted header vs its expected counterpart.
fn verify_block_final(&self, expected: &Header, got: &Header) -> Result<(), Error>; fn verify_block_final(&self, expected: &Header, got: &Header) -> Result<(), Error>;
} }