## Gossip-ing - **KERI-based networks** do not require a globally ordered total consensus ledger, but network state convergence is not addressed in any existing implementation. This is not a problem of the KERI protocol itself but of disseminating "KERI-products" (KERI events). Current implementations merely enable queries on demand. - **Events dissemination** is a use-case-specific problem, and not all use cases require network convergence. There are three cases where different network nodes aim for convergence: 1. **Witness <-> Witness** 2. **Witness <-> Watcher** 3. **Watcher <-> Watcher** - Current implementations address the first case (Witness <-> Witness) by applying round-robin dissemination from the Controller side. The Controller is responsible for and incentivized to disseminate events to Witnesses. - The second case (Witness <-> Watcher) is addressed via querying on demand, which is reactive and runs only when requested, making it inefficient. - The third case (Watcher <-> Watcher) remains unaddressed. - Gossip-ing enables a proactive approach to event dissemination, assuming that a node is always in one of two states: - Susceptible (looking for events). - Infective (has an event to share). - Standardization is required within and across KERI-based networks to enable effective Gossip-ing mechanisms. --- ## Cross-Governance (Cross-Implementation) Events Exchange Protocol - Existing implementations of KERI-core do not propose a solution for cross-implementation (cross-impl) events exchange that is agnostic of any specific communication protocol. - While all implementations expose HTTP-based interfaces, they use unique concepts, endpoints, and payloads. See an [example](https://github.com/WebOfTrust/kapi/blob/main/kapi.md#web-api-mapping) from `keripy`. ### Proposal for a Cross-Implementation Protocol - A **comm-protocol-agnostic solution** could adopt an OOBI-like concept to create bridges that are evaluated at runtime. - Every node in the network must: - Expose a list of concepts and protocols it supports. - Describe these using a well-known protocol. - Example Protocol Representation: ```json { "protocol": "http", "concept": "query", "payload": "cesrstream", "route": { "type": "post", "address": "/query" } }