Networks & Clusters
Networks in Zero represent a shared namespace that can be set as public or private. Public Networks can be joined automatically, whereas private Networks require an invitation. All Messages in public Networks are readable as raw text, whereas Messages in private Networks are encrypted. Individuals that belong to a Network are called Network Members.
Creating a Network in Zero spawns a new zChain and unique zId. Responsibilities are shared by maintaining a list of authorized Actions for each Network Member within the Network's zChain. This is stored inside of a mapping array within the content of a Message. Each Action represents something a Member can or cannot do within the Network. Individual Actions map directly to Message types. For instance, only Members that are permitted to use 'action::invite', are able to append Messages of type 'invite' to the Network's zChain. If a Member attempts to sign a Message of type 'invite' and does not have the corresponding Action and zId in the Network's permissions map, the entry will fail and return an error.
One of the benefits of having a distinct zChain for each Network, rather than including Network Transactions within a single zChain, is to provide an additional level of efficacy for Message propagation. This architecture enables a Network to choose to only gossip and store Messages with Nodes who are Members in the Network.
If a Member leaves a Network, their access is simply removed by adding a new Message to the Network's zChain, and freeing up all disk space on the Member's local device that was associated with the Network. When a Member leaves a Network, the local Network chain is automatically destroyed and is no longer propagated to other Members of the Network.
The Infinite Economy
Networks can optionally be linked together into Clusters. Similar to how two or more linked Identities form an Account, two or more linked Networks form a Cluster. This pattern is fractal, enabling any Cluster to become associated with any other Cluster, which may contain other Networks or Clusters of Networks.
For instance, the Zero application represents Networks and Clusters as 'Worlds, Galaxies and Universes', in order to make Networks easier to represent and traverse. Worlds represent a single Network, Galaxies represent a Cluster of Networks, and Universes represent multiple Clusters of multiple Networks. This is a flexible structure that enables Members to spatially visualize the relationship and hierarchy between Networks.
Globally unique Network names, also called domains, can be purchased using ZNS, as outlined in the Zero Name Service (ZNS) Protocol.