// Copyright 2019-2021 Parity Technologies (UK) Ltd. // This file is part of Parity Bridges Common. // Parity Bridges Common 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. // Parity Bridges Common 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 Parity Bridges Common. If not, see . //! One-way message lane types. Within single one-way lane we have three 'races' where we try to: //! //! 1) relay new messages from source to target node; //! 2) relay proof-of-delivery from target to source node. use num_traits::{SaturatingAdd, Zero}; use relay_utils::{BlockNumberBase, HeaderId}; use std::{fmt::Debug, ops::Sub}; /// One-way message lane. pub trait MessageLane: 'static + Clone + Send + Sync { /// Name of the messages source. const SOURCE_NAME: &'static str; /// Name of the messages target. const TARGET_NAME: &'static str; /// Messages proof. type MessagesProof: Clone + Debug + Send + Sync; /// Messages receiving proof. type MessagesReceivingProof: Clone + Debug + Send + Sync; /// The type of the source chain token balance, that is used to: /// /// 1) pay transaction fees; /// 2) pay message delivery and dispatch fee; /// 3) pay relayer rewards. type SourceChainBalance: Clone + Copy + Debug + PartialOrd + Sub + SaturatingAdd + Zero + Send + Sync; /// Number of the source header. type SourceHeaderNumber: BlockNumberBase; /// Hash of the source header. type SourceHeaderHash: Clone + Debug + Default + PartialEq + Send + Sync; /// Number of the target header. type TargetHeaderNumber: BlockNumberBase; /// Hash of the target header. type TargetHeaderHash: Clone + Debug + Default + PartialEq + Send + Sync; } /// Source header id within given one-way message lane. pub type SourceHeaderIdOf = HeaderId<::SourceHeaderHash, ::SourceHeaderNumber>; /// Target header id within given one-way message lane. pub type TargetHeaderIdOf = HeaderId<::TargetHeaderHash, ::TargetHeaderNumber>;
= HeaderId<
::SourceHeaderHash,
::SourceHeaderNumber>; /// Target header id within given one-way message lane. pub type TargetHeaderIdOf
::TargetHeaderHash,
::TargetHeaderNumber>;