## 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"
}
}