Networking sub-protocols for Ceramic
Ceramic streams and nodes are grouped into independent networks. These networks can be either for public use or for use by a specific community. There are currently a few commonly shared and default networks. When a stream is published in a network, other nodes in the same network are able to query and discover the stream, receive the latest stream events (tips), and sync the entire event set for a stream. Each of the these network functions are defined by a sub protocol listed below.
Networks are collections of Ceramic nodes that share specific configurations and communicate over dedicated libp2p pubsub topics. They are easily identified by a path string, for example
When a stream is updated, the latest event (tip) is gossiped and propagated out to all the nodes in a network that are interested in that particular stream. Listening for all tips, allows a node to learn about streams it did not know about.
Nodes in a network with a specific StreamId can query for the most recent event (tip) of that given stream. Queries enable a node that know about a stream to find the latest event (tip).
Nodes that have the tip (latest event) of a stream, can use the tip to fetch all prior events in that stream. Fetching enables a node that knows a tip to sync the entire event set for a stream and learn its latest state.