code: def cache_id(self) -> str:
          
  
          if self._cache_id:
              return self._cache_id
  
          with open(join(expanduser('~'), '.indy_client', 'pool', self.name, '{}.txn'.format(self.name))) as fh_genesis:
              genesis = [json.loads(line) for line in fh_genesis.readlines() if line]
  
          hps = []
          for gen_txn in genesis:
              hps.append(self.protocol.genesis_host_port(gen_txn))
          hps.sort()  # canonicalize to make order irrelevant
          self._cache_id = ':'.join('{}:{}'.format(hp[0], hp[1]) for hp in hps)
  
          return self._cache_id
docs: Return identifier for archivable caches, computing it first and retaining it if need be.
          Raise AbsentPool if ledger configuration is not yet available.
  
          :param name: pool name
          :return: archivable cache identifier