-
Notifications
You must be signed in to change notification settings - Fork 233
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
libp2p - Update Implementations Chapter #49
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,57 @@ | ||
8 Implementations | ||
================= | ||
|
||
This is a list of known libp2p module implementations. They are components that respect the interfaces and expectations defined in the "Interfaces" chapter, and can be composed to make a working libp2p library. | ||
An libp2p implementation should(recommended) follow a certain level of granulatiry when implementing different modules and functionalities, so that common interfaces are easy to expose, test and check for interoperability with other implementations. | ||
|
||
This is the list of current modules available for libp2p: | ||
|
||
- libp2p (entry point) | ||
- **Swarm** | ||
- libp2p-swarm | ||
- libp2p-identify | ||
- libp2p-ping | ||
- Transports | ||
- [interface-transport](https://github.com/diasdavid/interface-transport) | ||
- [interface-connection](https://github.com/diasdavid/interface-connection) | ||
- libp2p-tcp | ||
- libp2p-udp | ||
- libp2p-udt | ||
- libp2p-utp | ||
- libp2p-webrtc | ||
- libp2p-cjdns | ||
- Stream Muxing | ||
- [interface-stream-muxer](https://github.com/diasdavid/interface-stream-muxer) | ||
- libp2p-spdy | ||
- libp2p-multiplex | ||
- Crypto Channel | ||
- libp2p-tls | ||
- libp2p-secio | ||
- **Peer Routing** | ||
- libp2p-kad-routing | ||
- libp2p-mDNS-routing | ||
- **Discovery** | ||
- libp2p-mdns-discovery | ||
- libp2p-random-walk | ||
- libp2p-railing | ||
- **Distributed Record Store** | ||
- libp2p-record | ||
- [interface-record-store](https://github.com/diasdavid/interface-record-store) | ||
- libp2p-distributed-record-store | ||
- libp2p-kad-record-store | ||
- **Generic** | ||
- PeerInfo | ||
- PeerId | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. maybe these could be part of a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What is |
||
- multihash | ||
- multiaddr | ||
- multistream | ||
- multicodec | ||
- ipld | ||
- repo | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ❤️ love this list |
||
|
||
Current know implementations (or WIP) are: | ||
|
||
- JavaScript - https://github.com/diasdavid/js-libp2p | ||
- Go - https://github.com/ipfs/go-ipfs | ||
- Python - https://github.com/candeira/py-ipfs/blob/readme-roadmap/README.md | ||
- Rust - https://github.com/diasdavid/rust-libp2p | ||
|
||
## 8.1 libp2p | ||
|
||
- https://github.com/diasdavid/node-libp2p | ||
- https://github.com/diasdavid/node-ipfs-logger | ||
|
||
## 8.2 Peer Discovery | ||
|
||
- https://github.com/diasdavid/node-ipfs-mdns | ||
- https://github.com/diasdavid/node-ipfs-railing | ||
- https://github.com/diasdavid/node-ipfs-random-walk | ||
|
||
## 8.3 Peer Routing | ||
|
||
- https://github.com/diasdavid/node-ipfs-kad-router | ||
|
||
## 8.4 Swarm | ||
|
||
- https://github.com/diasdavid/node-ipfs-swarm | ||
- https://github.com/diasdavid/node-ipfs-ping | ||
- https://github.com/diasdavid/node-spdy-stream-muxer | ||
- https://github.com/diasdavid/abstract-stream-muxer | ||
|
||
## 8.5 Record Store | ||
|
||
- https://github.com/diasdavid/node-ipfs-record | ||
- https://github.com/diasdavid/node-ipfs-record-store | ||
|
||
## 8.6 Data Structures | ||
|
||
- https://github.com/diasdavid/node-ipfs-peer-id | ||
- https://github.com/diasdavid/node-ipfs-peer | ||
|
||
## 8.7 Implementations of Specs libp2p depends on | ||
|
||
- https://github.com/diasdavid/node-multistream |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be nice if each of these parts had a list of implementations in the different languages attached to it, like this:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if we're going to use the "abstract-X" modules for more than just javascript, can we:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 for defining types in Haskell from my side
bikeshed: 👍 for
interface
, 👎 forprotocol
(too generic, too much overlap with network protocols)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I remember having this conversation and agreeing with you, should have added it as a TODO right away.
I like
interface-X
.👍 for Haskell too, however, we will have a mapping for each language as implementations appear :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Haskell :)