Notes on Extended Specification =============================== Extended Specification are for SecretFlow only and not application to other privacy-preserving applications. If you are looking for definition like DistData, NodeEvalParam, etc. They are part of `SecretFlow Open Specification `_. SecretFlow Cluster ------------------ Defined in cluster.proto. SFClusterDesc ^^^^^^^^^^^^^ SFClusterDesc stores intrinsic properties of a SecretFlow cluster, including: - sf_version: SecretFlow version - py_version: Python version - parties: Parties participated in computation - devices: Security configs of secret devices like protocol of SPU devices. - ray_fed_config: Backend selection of RayFed. The reason we regard SFClusterDesc as intrinsic properties is because SFClusterDesc is important to data security and integrity. For example, a DistData generated by one cluster could only consumed by another cluster only if their SFClusterDesc are compatible. SFClusterConfig ^^^^^^^^^^^^^^^ A SFClusterConfig contains all information to setup a SecretFlow cluster, besides **SFClusterDesc**, it contains public configs and private configs. **PublicConfig** should be revealed to all parties, including: - ray_fed_config: Addresses for RayFed. Parties need this information to communicate to each other. - spu_configs: Addresses for SPU devices. SPU Runtimes of all parties need this information to connect. **PrivateConfig** is unique to each party, including: - self_party: who am I? - ray_head_addr: The address of Ray cluster. SecretFlow Data Types --------------------- Defined in data.proto. DeviceObjectCollection ^^^^^^^^^^^^^^^^^^^^^^ We usually use **DeviceObjectCollection** to represent an MPC models. We would provide more details for this part later.