mirror of
https://github.com/vacp2p/specs.git
synced 2026-01-08 23:08:09 -05:00
The added link goes to a full formal specification for GossipSub provided in ACL2s, an automated theorem proving environment.
2.7 KiB
2.7 KiB
gossipsub: An extensible baseline pubsub protocol
Gossipsub is an extensible baseline pubsub protocol, based on randomized topic meshes and gossip. It is a general purpose pubsub protocol with moderate amplification factors and good scaling properties. The protocol is designed to be extensible by more specialized routers, which may add protocol messages and gossip in order to provide behaviour optimized for specific application profiles.
If you are new to Gossipsub and/or PubSub in general, we recommend you to first:
- Read the Publish/Subscribe guide at docs.libp2p.io
- Watch the Scalable PubSub with GossipSub talk by Dimitris Vyzovitis
Specification
- gossipsub-v1.0: v1.0 of the gossipsub protocol. This is a revised specification, to use a more normative language. The original v1.0 specification is here, still a good read.
- gossipsub-v1.1: v1.1 of the gossipsub protocol.
- (not in use) episub: a research note on a protocol building on top of gossipsub to implement epidemic broadcast trees.
Implementation status
Legend: ✅ = complete, 🏗 = in progress, ❕ = not started yet
| Name | v1.0 | v1.1 |
|---|---|---|
| go-libp2p-pubsub (Golang) | ✅ | ✅ |
| js-libp2p-gossipsub (JavaScript) | ✅ | ✅ |
| rust-libp2p (Rust) | ✅ | ✅ |
| py-libp2p (Python) | ✅ | 🏗 |
| jvm-libp2p (Java/Kotlin) | ✅ | 🏗 |
| nim-libp2p (Nim) | ✅ | 🏗 |
Additional tooling:
- Simulator developed in Gerbil: vyzo/gerbil-simsub
- Formal specification developed in ACL2s: gossipsubfm/gossipsubfm
