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
No known key found for this signature in database
GPG key ID: F9F1386DB1E119B6
4 changed files with 15 additions and 1 deletions

1
Cargo.lock generated
View file

@ -8774,6 +8774,7 @@ version = "0.1.0"
dependencies = [
"async-trait",
"parity-scale-codec",
"sp-runtime",
"tokio",
]

View file

@ -25,7 +25,7 @@ sp-api = { git = "https://github.com/serai-dex/substrate" }
sp-consensus = { git = "https://github.com/serai-dex/substrate" }
sc-consensus = { git = "https://github.com/serai-dex/substrate" }
tendermint-machine = { path = "../tendermint" }
tendermint-machine = { path = "../tendermint", features = ["substrate"] }
# --

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 {