code: def broadcast(
      self,
      src: int = 0,
      options: typing.Optional[dict] = None,
      tag: str = "phe_cipher",
  ):
      if src == self.ctx.rank:
          cipher = self.setup(options)
          cipher_public = cipher.to_public()
          for p in self.ctx.parties:
              if p.rank != src:
                  p.put(tag, cipher_public)
          return cipher
      else:
          return self.ctx.parties[src].get(name=tag)
  
imports: import logging
  import typing
  from fate.arch.config import cfg
  from ..unify import device
label_desc: Use image node_id 2 for calling the PHECipherBuilder obj's underlying member method code with example usage: obj.broadcast(src, options, tag) and returns: cipher, self