sidechain_block_search/
impl_block_info.rs

1use sp_api::ApiError;
2
3use super::*;
4
5#[allow(deprecated)]
6impl<C, Block> SidechainInfo<Block> for C
7where
8	C: Client<Block> + Send + Sync + 'static,
9	C::Api: GetSidechainStatus<Block>,
10	Block: BlockT,
11	NumberFor<Block>: From<u32> + Into<u32>,
12{
13	type Error = ApiError;
14
15	fn get_slot_of_block(
16		&self,
17		block_number: NumberFor<Block>,
18	) -> Result<ScSlotNumber, Self::Error> {
19		let api = self.runtime_api();
20		let block_hash = self
21			.hash(block_number)?
22			.ok_or(ApiError::UnknownBlock(format!("Block Number {block_number} does not exist")))?;
23		let sidechain_status = api.get_sidechain_status(block_hash)?;
24		Ok(sidechain_status.slot)
25	}
26
27	fn get_epoch_of_block(
28		&self,
29		block_number: NumberFor<Block>,
30	) -> Result<ScEpochNumber, Self::Error> {
31		let api = self.runtime_api();
32		let block_hash = self
33			.hash(block_number)?
34			.ok_or(ApiError::UnknownBlock(format!("Block Number {block_number} does not exist")))?;
35		let sidechain_status = api.get_sidechain_status(block_hash)?;
36		Ok(sidechain_status.epoch)
37	}
38}