mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 20:29:23 +00:00
Move serai_runtime specific code from tendermint/client to node
Renames serai-consensus to sc_tendermint
This commit is contained in:
67
Cargo.lock
generated
67
Cargo.lock
generated
@@ -7321,6 +7321,34 @@ dependencies = [
|
|||||||
"prometheus",
|
"prometheus",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sc_tendermint"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"async-trait",
|
||||||
|
"futures",
|
||||||
|
"log",
|
||||||
|
"sc-client-api",
|
||||||
|
"sc-consensus",
|
||||||
|
"sc-executor",
|
||||||
|
"sc-network",
|
||||||
|
"sc-network-gossip",
|
||||||
|
"sc-service",
|
||||||
|
"sc-transaction-pool",
|
||||||
|
"sp-api",
|
||||||
|
"sp-application-crypto",
|
||||||
|
"sp-blockchain",
|
||||||
|
"sp-consensus",
|
||||||
|
"sp-core",
|
||||||
|
"sp-inherents",
|
||||||
|
"sp-runtime",
|
||||||
|
"sp-staking",
|
||||||
|
"sp-tendermint",
|
||||||
|
"substrate-prometheus-endpoint",
|
||||||
|
"tendermint-machine",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "scale-info"
|
name = "scale-info"
|
||||||
version = "2.2.0"
|
version = "2.2.0"
|
||||||
@@ -7525,40 +7553,6 @@ version = "0.5.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "930c0acf610d3fdb5e2ab6213019aaa04e227ebe9547b0649ba599b16d788bd7"
|
checksum = "930c0acf610d3fdb5e2ab6213019aaa04e227ebe9547b0649ba599b16d788bd7"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serai-consensus"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"async-trait",
|
|
||||||
"frame-support",
|
|
||||||
"futures",
|
|
||||||
"log",
|
|
||||||
"pallet-session",
|
|
||||||
"sc-basic-authorship",
|
|
||||||
"sc-client-api",
|
|
||||||
"sc-client-db",
|
|
||||||
"sc-consensus",
|
|
||||||
"sc-executor",
|
|
||||||
"sc-network",
|
|
||||||
"sc-network-gossip",
|
|
||||||
"sc-service",
|
|
||||||
"sc-transaction-pool",
|
|
||||||
"serai-runtime",
|
|
||||||
"sp-api",
|
|
||||||
"sp-application-crypto",
|
|
||||||
"sp-blockchain",
|
|
||||||
"sp-consensus",
|
|
||||||
"sp-core",
|
|
||||||
"sp-inherents",
|
|
||||||
"sp-runtime",
|
|
||||||
"sp-staking",
|
|
||||||
"sp-tendermint",
|
|
||||||
"sp-timestamp",
|
|
||||||
"substrate-prometheus-endpoint",
|
|
||||||
"tendermint-machine",
|
|
||||||
"tokio",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serai-extension"
|
name = "serai-extension"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
@@ -7587,6 +7581,7 @@ dependencies = [
|
|||||||
name = "serai-node"
|
name = "serai-node"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"async-trait",
|
||||||
"clap 4.0.18",
|
"clap 4.0.18",
|
||||||
"frame-benchmarking",
|
"frame-benchmarking",
|
||||||
"frame-benchmarking-cli",
|
"frame-benchmarking-cli",
|
||||||
@@ -7598,6 +7593,7 @@ dependencies = [
|
|||||||
"sc-basic-authorship",
|
"sc-basic-authorship",
|
||||||
"sc-cli",
|
"sc-cli",
|
||||||
"sc-client-api",
|
"sc-client-api",
|
||||||
|
"sc-client-db",
|
||||||
"sc-consensus",
|
"sc-consensus",
|
||||||
"sc-executor",
|
"sc-executor",
|
||||||
"sc-keystore",
|
"sc-keystore",
|
||||||
@@ -7608,12 +7604,13 @@ dependencies = [
|
|||||||
"sc-telemetry",
|
"sc-telemetry",
|
||||||
"sc-transaction-pool",
|
"sc-transaction-pool",
|
||||||
"sc-transaction-pool-api",
|
"sc-transaction-pool-api",
|
||||||
"serai-consensus",
|
"sc_tendermint",
|
||||||
"serai-runtime",
|
"serai-runtime",
|
||||||
"sp-api",
|
"sp-api",
|
||||||
"sp-application-crypto",
|
"sp-application-crypto",
|
||||||
"sp-block-builder",
|
"sp-block-builder",
|
||||||
"sp-blockchain",
|
"sp-blockchain",
|
||||||
|
"sp-consensus",
|
||||||
"sp-core",
|
"sp-core",
|
||||||
"sp-inherents",
|
"sp-inherents",
|
||||||
"sp-keyring",
|
"sp-keyring",
|
||||||
|
|||||||
@@ -12,28 +12,33 @@ publish = false
|
|||||||
name = "serai-node"
|
name = "serai-node"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
async-trait = "0.1"
|
||||||
|
|
||||||
clap = { version = "4", features = ["derive"] }
|
clap = { version = "4", features = ["derive"] }
|
||||||
jsonrpsee = { version = "0.15", features = ["server"] }
|
jsonrpsee = { version = "0.15", features = ["server"] }
|
||||||
|
|
||||||
sp-core = { git = "https://github.com/serai-dex/substrate" }
|
sp-core = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-application-crypto = { git = "https://github.com/serai-dex/substrate" }
|
sp-application-crypto = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-runtime = { git = "https://github.com/serai-dex/substrate" }
|
|
||||||
sp-timestamp = { git = "https://github.com/serai-dex/substrate" }
|
|
||||||
sp-inherents = { git = "https://github.com/serai-dex/substrate" }
|
|
||||||
sp-keyring = { git = "https://github.com/serai-dex/substrate" }
|
sp-keyring = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-api = { git = "https://github.com/serai-dex/substrate" }
|
sp-inherents = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
sp-timestamp = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
sp-runtime = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-blockchain = { git = "https://github.com/serai-dex/substrate" }
|
sp-blockchain = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
sp-api = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-block-builder = { git = "https://github.com/serai-dex/substrate" }
|
sp-block-builder = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
sp-consensus = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
|
||||||
sc-keystore = { git = "https://github.com/serai-dex/substrate" }
|
sc-keystore = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-transaction-pool = { git = "https://github.com/serai-dex/substrate" }
|
sc-transaction-pool = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-basic-authorship = { git = "https://github.com/serai-dex/substrate" }
|
|
||||||
sc-transaction-pool-api = { git = "https://github.com/serai-dex/substrate" }
|
sc-transaction-pool-api = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
sc-basic-authorship = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-executor = { git = "https://github.com/serai-dex/substrate" }
|
sc-executor = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-service = { git = "https://github.com/serai-dex/substrate" }
|
sc-service = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
sc-client-db = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-client-api = { git = "https://github.com/serai-dex/substrate" }
|
sc-client-api = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-network = { git = "https://github.com/serai-dex/substrate" }
|
sc-network = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-consensus = { git = "https://github.com/serai-dex/substrate" }
|
sc-consensus = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
|
||||||
sc-telemetry = { git = "https://github.com/serai-dex/substrate" }
|
sc-telemetry = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-cli = { git = "https://github.com/serai-dex/substrate" }
|
sc-cli = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
|
||||||
@@ -50,7 +55,7 @@ pallet-transaction-payment-rpc = { git = "https://github.com/serai-dex/substrate
|
|||||||
|
|
||||||
pallet-tendermint = { path = "../tendermint/pallet", default-features = false }
|
pallet-tendermint = { path = "../tendermint/pallet", default-features = false }
|
||||||
serai-runtime = { path = "../runtime" }
|
serai-runtime = { path = "../runtime" }
|
||||||
serai-consensus = { path = "../tendermint/client" }
|
sc_tendermint = { path = "../tendermint/client" }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
substrate-build-script-utils = { git = "https://github.com/serai-dex/substrate.git" }
|
substrate-build-script-utils = { git = "https://github.com/serai-dex/substrate.git" }
|
||||||
|
|||||||
@@ -1,16 +1,25 @@
|
|||||||
use std::sync::Arc;
|
use std::{boxed::Box, sync::Arc, error::Error};
|
||||||
|
|
||||||
|
use sp_runtime::traits::{Block as BlockTrait};
|
||||||
|
use sp_inherents::CreateInherentDataProviders;
|
||||||
|
use sp_consensus::DisableProofRecording;
|
||||||
|
use sp_api::ProvideRuntimeApi;
|
||||||
|
|
||||||
|
use sc_executor::{NativeVersion, NativeExecutionDispatch, NativeElseWasmExecutor};
|
||||||
|
use sc_transaction_pool::FullPool;
|
||||||
|
use sc_network::NetworkService;
|
||||||
|
use sc_service::{error::Error as ServiceError, Configuration, TaskManager, TFullClient};
|
||||||
|
|
||||||
use sc_executor::NativeElseWasmExecutor;
|
|
||||||
use sc_service::{error::Error as ServiceError, Configuration, TaskManager};
|
|
||||||
use sc_telemetry::{Telemetry, TelemetryWorker};
|
use sc_telemetry::{Telemetry, TelemetryWorker};
|
||||||
|
|
||||||
use serai_runtime::{self, opaque::Block, RuntimeApi};
|
pub(crate) use sc_tendermint::{
|
||||||
pub(crate) use serai_consensus::{
|
TendermintClientMinimal, TendermintValidator, TendermintImport, TendermintAuthority,
|
||||||
TendermintImport, TendermintAuthority, ExecutorDispatch, FullClient, TendermintValidatorFirm,
|
TendermintSelectChain, import_queue,
|
||||||
};
|
};
|
||||||
|
use serai_runtime::{self, MILLISECS_PER_BLOCK, opaque::Block, RuntimeApi};
|
||||||
|
|
||||||
type FullBackend = sc_service::TFullBackend<Block>;
|
type FullBackend = sc_service::TFullBackend<Block>;
|
||||||
type FullSelectChain = serai_consensus::TendermintSelectChain<Block, FullBackend>;
|
type FullSelectChain = TendermintSelectChain<Block, FullBackend>;
|
||||||
|
|
||||||
type PartialComponents = sc_service::PartialComponents<
|
type PartialComponents = sc_service::PartialComponents<
|
||||||
FullClient,
|
FullClient,
|
||||||
@@ -21,6 +30,59 @@ type PartialComponents = sc_service::PartialComponents<
|
|||||||
Option<Telemetry>,
|
Option<Telemetry>,
|
||||||
>;
|
>;
|
||||||
|
|
||||||
|
pub struct ExecutorDispatch;
|
||||||
|
impl NativeExecutionDispatch for ExecutorDispatch {
|
||||||
|
#[cfg(feature = "runtime-benchmarks")]
|
||||||
|
type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions;
|
||||||
|
#[cfg(not(feature = "runtime-benchmarks"))]
|
||||||
|
type ExtendHostFunctions = ();
|
||||||
|
|
||||||
|
fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> {
|
||||||
|
serai_runtime::api::dispatch(method, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn native_version() -> NativeVersion {
|
||||||
|
serai_runtime::native_version()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type FullClient = TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<ExecutorDispatch>>;
|
||||||
|
|
||||||
|
pub struct Cidp;
|
||||||
|
#[async_trait::async_trait]
|
||||||
|
impl CreateInherentDataProviders<Block, ()> for Cidp {
|
||||||
|
type InherentDataProviders = (sp_timestamp::InherentDataProvider,);
|
||||||
|
async fn create_inherent_data_providers(
|
||||||
|
&self,
|
||||||
|
_: <Block as BlockTrait>::Hash,
|
||||||
|
_: (),
|
||||||
|
) -> Result<Self::InherentDataProviders, Box<dyn Send + Sync + Error>> {
|
||||||
|
Ok((sp_timestamp::InherentDataProvider::from_system_time(),))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct TendermintValidatorFirm;
|
||||||
|
impl TendermintClientMinimal for TendermintValidatorFirm {
|
||||||
|
const BLOCK_TIME_IN_SECONDS: u32 = { (MILLISECS_PER_BLOCK / 1000) as u32 };
|
||||||
|
|
||||||
|
type Block = Block;
|
||||||
|
type Backend = sc_client_db::Backend<Block>;
|
||||||
|
type Api = <FullClient as ProvideRuntimeApi<Block>>::Api;
|
||||||
|
type Client = FullClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TendermintValidator for TendermintValidatorFirm {
|
||||||
|
type CIDP = Cidp;
|
||||||
|
type Environment = sc_basic_authorship::ProposerFactory<
|
||||||
|
FullPool<Block, FullClient>,
|
||||||
|
Self::Backend,
|
||||||
|
Self::Client,
|
||||||
|
DisableProofRecording,
|
||||||
|
>;
|
||||||
|
|
||||||
|
type Network = Arc<NetworkService<Block, <Block as BlockTrait>::Hash>>;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn new_partial(
|
pub fn new_partial(
|
||||||
config: &Configuration,
|
config: &Configuration,
|
||||||
) -> Result<(TendermintImport<TendermintValidatorFirm>, PartialComponents), ServiceError> {
|
) -> Result<(TendermintImport<TendermintValidatorFirm>, PartialComponents), ServiceError> {
|
||||||
@@ -67,13 +129,13 @@ pub fn new_partial(
|
|||||||
client.clone(),
|
client.clone(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let (authority, import_queue) = serai_consensus::import_queue(
|
let (authority, import_queue) = import_queue(
|
||||||
&task_manager.spawn_essential_handle(),
|
&task_manager.spawn_essential_handle(),
|
||||||
client.clone(),
|
client.clone(),
|
||||||
config.prometheus_registry(),
|
config.prometheus_registry(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let select_chain = serai_consensus::TendermintSelectChain::new(backend.clone());
|
let select_chain = TendermintSelectChain::new(backend.clone());
|
||||||
|
|
||||||
Ok((
|
Ok((
|
||||||
authority,
|
authority,
|
||||||
@@ -161,7 +223,7 @@ pub async fn new_full(config: Configuration) -> Result<TaskManager, ServiceError
|
|||||||
"tendermint",
|
"tendermint",
|
||||||
None,
|
None,
|
||||||
TendermintAuthority::new(authority).authority(
|
TendermintAuthority::new(authority).authority(
|
||||||
serai_consensus::Cidp,
|
Cidp,
|
||||||
sc_basic_authorship::ProposerFactory::new(
|
sc_basic_authorship::ProposerFactory::new(
|
||||||
task_manager.spawn_handle(),
|
task_manager.spawn_handle(),
|
||||||
client,
|
client,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "serai-consensus"
|
name = "sc_tendermint"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "Serai consensus module"
|
description = "Tendermint client for Substrate"
|
||||||
license = "AGPL-3.0-only"
|
license = "AGPL-3.0-only"
|
||||||
repository = "https://github.com/serai-dex/serai/tree/develop/substrate/tendermint/client"
|
repository = "https://github.com/serai-dex/serai/tree/develop/substrate/tendermint/client"
|
||||||
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
|
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
|
||||||
@@ -23,7 +23,6 @@ tokio = { version = "1", features = ["sync", "rt"] }
|
|||||||
sp-core = { git = "https://github.com/serai-dex/substrate" }
|
sp-core = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-application-crypto = { git = "https://github.com/serai-dex/substrate" }
|
sp-application-crypto = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-inherents = { git = "https://github.com/serai-dex/substrate" }
|
sp-inherents = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-timestamp = { git = "https://github.com/serai-dex/substrate" }
|
|
||||||
sp-staking = { git = "https://github.com/serai-dex/substrate" }
|
sp-staking = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-blockchain = { git = "https://github.com/serai-dex/substrate" }
|
sp-blockchain = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sp-runtime = { git = "https://github.com/serai-dex/substrate" }
|
sp-runtime = { git = "https://github.com/serai-dex/substrate" }
|
||||||
@@ -33,20 +32,13 @@ sp-consensus = { git = "https://github.com/serai-dex/substrate" }
|
|||||||
sp-tendermint = { path = "../primitives" }
|
sp-tendermint = { path = "../primitives" }
|
||||||
|
|
||||||
sc-transaction-pool = { git = "https://github.com/serai-dex/substrate" }
|
sc-transaction-pool = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-basic-authorship = { git = "https://github.com/serai-dex/substrate" }
|
|
||||||
sc-executor = { git = "https://github.com/serai-dex/substrate" }
|
sc-executor = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-network = { git = "https://github.com/serai-dex/substrate" }
|
sc-network = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-network-gossip = { git = "https://github.com/serai-dex/substrate" }
|
sc-network-gossip = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-service = { git = "https://github.com/serai-dex/substrate" }
|
sc-service = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-client-db = { git = "https://github.com/serai-dex/substrate" }
|
|
||||||
sc-client-api = { git = "https://github.com/serai-dex/substrate" }
|
sc-client-api = { git = "https://github.com/serai-dex/substrate" }
|
||||||
sc-consensus = { git = "https://github.com/serai-dex/substrate" }
|
sc-consensus = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
|
||||||
frame-support = { git = "https://github.com/serai-dex/substrate" }
|
|
||||||
pallet-session = { git = "https://github.com/serai-dex/substrate" }
|
|
||||||
|
|
||||||
substrate-prometheus-endpoint = { git = "https://github.com/serai-dex/substrate" }
|
substrate-prometheus-endpoint = { git = "https://github.com/serai-dex/substrate" }
|
||||||
|
|
||||||
tendermint-machine = { path = "../machine", features = ["substrate"] }
|
tendermint-machine = { path = "../machine", features = ["substrate"] }
|
||||||
|
|
||||||
serai-runtime = { path = "../../runtime" }
|
|
||||||
|
|||||||
@@ -1,26 +1,12 @@
|
|||||||
use std::{boxed::Box, sync::Arc, error::Error};
|
|
||||||
|
|
||||||
use sp_runtime::traits::Block as BlockTrait;
|
|
||||||
use sp_inherents::CreateInherentDataProviders;
|
|
||||||
use sp_consensus::DisableProofRecording;
|
|
||||||
use sp_api::ProvideRuntimeApi;
|
|
||||||
|
|
||||||
use sc_executor::{NativeVersion, NativeExecutionDispatch, NativeElseWasmExecutor};
|
|
||||||
use sc_transaction_pool::FullPool;
|
|
||||||
use sc_network::NetworkService;
|
|
||||||
use sc_service::TFullClient;
|
|
||||||
|
|
||||||
use serai_runtime::{self, opaque::Block, RuntimeApi};
|
|
||||||
|
|
||||||
mod types;
|
mod types;
|
||||||
use types::{TendermintClientMinimal, TendermintValidator};
|
pub use types::{TendermintClientMinimal, TendermintValidator};
|
||||||
|
|
||||||
mod validators;
|
mod validators;
|
||||||
|
|
||||||
pub(crate) mod tendermint;
|
pub(crate) mod tendermint;
|
||||||
pub use tendermint::TendermintImport;
|
pub use tendermint::TendermintImport;
|
||||||
mod block_import;
|
|
||||||
|
|
||||||
|
mod block_import;
|
||||||
mod import_queue;
|
mod import_queue;
|
||||||
pub use import_queue::{TendermintImportQueue, import_queue};
|
pub use import_queue::{TendermintImportQueue, import_queue};
|
||||||
|
|
||||||
@@ -32,56 +18,3 @@ mod select_chain;
|
|||||||
pub use select_chain::TendermintSelectChain;
|
pub use select_chain::TendermintSelectChain;
|
||||||
|
|
||||||
const CONSENSUS_ID: [u8; 4] = *b"tend";
|
const CONSENSUS_ID: [u8; 4] = *b"tend";
|
||||||
|
|
||||||
pub struct ExecutorDispatch;
|
|
||||||
impl NativeExecutionDispatch for ExecutorDispatch {
|
|
||||||
#[cfg(feature = "runtime-benchmarks")]
|
|
||||||
type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions;
|
|
||||||
#[cfg(not(feature = "runtime-benchmarks"))]
|
|
||||||
type ExtendHostFunctions = ();
|
|
||||||
|
|
||||||
fn dispatch(method: &str, data: &[u8]) -> Option<Vec<u8>> {
|
|
||||||
serai_runtime::api::dispatch(method, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn native_version() -> NativeVersion {
|
|
||||||
serai_runtime::native_version()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type FullClient = TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<ExecutorDispatch>>;
|
|
||||||
|
|
||||||
pub struct Cidp;
|
|
||||||
#[async_trait::async_trait]
|
|
||||||
impl CreateInherentDataProviders<Block, ()> for Cidp {
|
|
||||||
type InherentDataProviders = (sp_timestamp::InherentDataProvider,);
|
|
||||||
async fn create_inherent_data_providers(
|
|
||||||
&self,
|
|
||||||
_: <Block as BlockTrait>::Hash,
|
|
||||||
_: (),
|
|
||||||
) -> Result<Self::InherentDataProviders, Box<dyn Send + Sync + Error>> {
|
|
||||||
Ok((sp_timestamp::InherentDataProvider::from_system_time(),))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct TendermintValidatorFirm;
|
|
||||||
impl TendermintClientMinimal for TendermintValidatorFirm {
|
|
||||||
const BLOCK_TIME_IN_SECONDS: u32 = { (serai_runtime::MILLISECS_PER_BLOCK / 1000) as u32 };
|
|
||||||
|
|
||||||
type Block = Block;
|
|
||||||
type Backend = sc_client_db::Backend<Block>;
|
|
||||||
type Api = <FullClient as ProvideRuntimeApi<Block>>::Api;
|
|
||||||
type Client = FullClient;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl TendermintValidator for TendermintValidatorFirm {
|
|
||||||
type CIDP = Cidp;
|
|
||||||
type Environment = sc_basic_authorship::ProposerFactory<
|
|
||||||
FullPool<Block, FullClient>,
|
|
||||||
Self::Backend,
|
|
||||||
Self::Client,
|
|
||||||
DisableProofRecording,
|
|
||||||
>;
|
|
||||||
|
|
||||||
type Network = Arc<NetworkService<Block, <Block as BlockTrait>::Hash>>;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "sp-tendermint"
|
name = "sp-tendermint"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "Substrate primitives for Tendermint"
|
description = "Tendermint primitives for Substrate"
|
||||||
license = "AGPL-3.0-only"
|
license = "AGPL-3.0-only"
|
||||||
repository = "https://github.com/serai-dex/serai/tree/develop/substrate/tendermint/primitives"
|
repository = "https://github.com/serai-dex/serai/tree/develop/substrate/tendermint/primitives"
|
||||||
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
|
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
|
||||||
|
|||||||
Reference in New Issue
Block a user