Implement tendermint_machine::Block for Substrate Blocks

Unfortunately, this immediately makes Tendermint machine capable of 
deployment as  crate since it uses a git reference. In the future, a 
Cargo.toml patch section for serai/substrate should be investigated. 
This is being done regardless as it's the quickest way forward and this 
is for Serai.
This commit is contained in:
Luke Parker
2022-10-21 02:06:48 -04:00
parent 280683142a
commit 5c46edbe98
4 changed files with 15 additions and 1 deletions

View File

@@ -12,3 +12,8 @@ parity-scale-codec = { version = "3.2", features = ["derive"] }
async-trait = "0.1"
tokio = { version = "1", features = ["macros", "sync", "time", "rt"] }
sp-runtime = { git = "https://github.com/serai-dex/substrate", optional = true }
[features]
substrate = ["sp-runtime"]

View File

@@ -112,6 +112,14 @@ pub trait Block: Send + Sync + Clone + PartialEq + Debug + Encode + Decode {
fn id(&self) -> Self::Id;
}
#[cfg(feature = "substrate")]
impl<B: sp_runtime::traits::Block> Block for B {
type Id = B::Hash;
fn id(&self) -> B::Hash {
self.hash()
}
}
/// Trait representing the distributed system Tendermint is providing consensus over.
#[async_trait::async_trait]
pub trait Network: Send + Sync {