code: def _detail_channel(
              self,
              participant1: Address,
              participant2: Address,
              block_identifier: BlockSpecification,
              channel_identifier: ChannelID = None,
      ) -> ChannelData:
          
          channel_identifier = self._inspect_channel_identifier(
              participant1=participant1,
              participant2=participant2,
              called_by_fn='_detail_channel(',
              block_identifier=block_identifier,
              channel_identifier=channel_identifier,
          )
  
          channel_data = self._call_and_check_result(
              block_identifier,
              'getChannelInfo',
              channel_identifier=channel_identifier,
              participant1=to_checksum_address(participant1),
              participant2=to_checksum_address(participant2),
          )
  
          return ChannelData(
              channel_identifier=channel_identifier,
              settle_block_number=channel_data[ChannelInfoIndex.SETTLE_BLOCK],
              state=channel_data[ChannelInfoIndex.STATE],
          )
docs: Returns a ChannelData instance with the channel specific information.
  
          If no specific channel_identifier is given then it tries to see if there
          is a currently open channel and uses that identifier.