sidechain_block_search/
impl_block_info.rs1use 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}