diff --git a/finality-aleph/src/sync/substrate/finalizer.rs b/finality-aleph/src/sync/substrate/finalizer.rs new file mode 100644 index 0000000000..4bd4c9aa4f --- /dev/null +++ b/finality-aleph/src/sync/substrate/finalizer.rs @@ -0,0 +1,31 @@ +use aleph_primitives::{BlockNumber, ALEPH_ENGINE_ID}; +use sc_client_api::{Backend, Finalizer as SubstrateFinalizer, HeaderBackend, LockImportRun}; +use sp_blockchain::Error as ClientError; +use sp_runtime::traits::{Block as BlockT, Header as SubstrateHeader}; + +use crate::{ + finalization::{AlephFinalizer, BlockFinalizer}, + justification::versioned_encode, + sync::{substrate::Justification, Finalizer}, +}; + +impl Finalizer> for AlephFinalizer +where + B: BlockT, + B::Header: SubstrateHeader, + BE: Backend, + C: HeaderBackend + LockImportRun + SubstrateFinalizer, +{ + type Error = ClientError; + + fn finalize(&self, justification: Justification) -> Result<(), Self::Error> { + self.finalize_block( + justification.header.hash(), + *justification.header.number(), + Some(( + ALEPH_ENGINE_ID, + versioned_encode(justification.raw_justification), + )), + ) + } +} diff --git a/finality-aleph/src/sync/substrate/mod.rs b/finality-aleph/src/sync/substrate/mod.rs index 049ad41c44..2a96b49ed9 100644 --- a/finality-aleph/src/sync/substrate/mod.rs +++ b/finality-aleph/src/sync/substrate/mod.rs @@ -9,6 +9,7 @@ use crate::{ }; mod chain_status; +mod finalizer; mod status_notifier; #[derive(Clone, Debug, PartialEq, Eq)]