pub async fn vm_block_info(
        &mut self,
        ctx: &ctx::Ctx,
        number: validator::BlockNumber,
    ) -> ctx::Result<(ResolvedBlockInfo, BatchFeeInput)> {
        let block = L2BlockNumber(
            u32::try_from(number.0)
                .context("overflow when converting validator::BlockNumber to L2BlockNumber")?,
        );
        let block_info = ctx
            .wait(BlockInfo::for_existing_block(&mut self.0, block))
            .await?
            .context("BlockInfo")?;
        let resolved_block_info = ctx
            .wait(block_info.resolve(&mut self.0))
            .await?
            .context("resolve()")?;
        let fee_input = ctx
            .wait(block_info.historical_fee_input(&mut self.0))
            .await?
            .context("historical_fee_input()")?;
        Ok((resolved_block_info, fee_input))
    }
Constructs `BlockArgs` for the given block number.
core/node/consensus/src/storage/connection.rs