Initial validator trait. (#14)

* Initial validator trait.

* Add missing docs warning.

* Fix formatting.

* Fix validator output and serialization.

* Get rid of redundant ValidationCode type.
This commit is contained in:
Tomasz Drwięga
2017-11-12 16:48:35 +01:00
committed by Robert Habermeier
parent 9d083be47a
commit e9177294f6
12 changed files with 520 additions and 52 deletions
+46
View File
@@ -0,0 +1,46 @@
// Copyright 2017 Parity Technologies (UK) Ltd.
// This file is part of Polkadot.
// Polkadot is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Polkadot is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Polkadot. If not, see <http://www.gnu.org/licenses/>.
use std::fmt;
use primitives::validator;
use serde::de::DeserializeOwned;
/// Parachain code implementation.
pub trait ParachainCode: fmt::Debug {
/// Deserialized messages type.
type Messages: DeserializeOwned;
/// Deserialized proof type.
type Proof: DeserializeOwned;
/// Given decoded messages and proof validate it and return egress posts.
fn check(&self, messages: Self::Messages, proof: Self::Proof) ->
Option<(validator::IngressPostsDelta, validator::EgressPosts)>;
}
/// Dummy implementation of the first parachain validation.
#[derive(Debug)]
pub struct ParaChain1;
impl ParachainCode for ParaChain1 {
type Messages = ();
type Proof = ();
fn check(&self, _messages: Self::Messages, _proof: Self::Proof)
-> Option<(validator::IngressPostsDelta, validator::EgressPosts)> {
None
}
}