|
1 | 1 | Introduction |
2 | 2 | ============ |
3 | 3 |
|
4 | | -py-libp2p is the Python implementation of the libp2p networking stack. |
5 | | -It hopes to someday be fully compatible with other implementations of libp2p. |
| 4 | +What is Py-libp2p? |
| 5 | +------------------ |
6 | 6 |
|
7 | | -This project is still in its early stages and is not yet ready for production use. |
| 7 | +Py-libp2p is the Python implementation of the libp2p networking stack, a modular peer-to-peer networking framework. It provides a robust foundation for building decentralized applications and protocols in Python, enabling developers to create resilient, secure, and efficient peer-to-peer networks. |
| 8 | + |
| 9 | +The Libp2p Ecosystem |
| 10 | +-------------------- |
| 11 | + |
| 12 | +Libp2p is a collection of networking protocols and specifications that form the foundation of many decentralized systems. Py-libp2p is part of this broader ecosystem, which includes implementations in various languages: |
| 13 | + |
| 14 | +* `js-libp2p <https://github.com/libp2p/js-libp2p>`_ - JavaScript implementation |
| 15 | +* `go-libp2p <https://github.com/libp2p/go-libp2p>`_ - Go implementation |
| 16 | +* `rust-libp2p <https://github.com/libp2p/rust-libp2p>`_ - Rust implementation |
| 17 | + |
| 18 | +While each implementation has its strengths, Py-libp2p offers unique advantages for Python developers and researchers. |
| 19 | + |
| 20 | +Why Choose Py-libp2p? |
| 21 | +--------------------- |
| 22 | + |
| 23 | +Py-libp2p is particularly well-suited for: |
| 24 | + |
| 25 | +* **Protocol Research and Development**: Python's simplicity and readability make it ideal for experimenting with new protocols and network topologies. |
| 26 | +* **Rapid Prototyping**: Quickly build and test peer-to-peer applications with Python's extensive ecosystem. |
| 27 | +* **Educational Purposes**: The Python implementation is often more approachable for learning libp2p concepts. |
| 28 | +* **Integration with Python Projects**: Seamlessly integrate libp2p functionality into existing Python applications. |
| 29 | + |
| 30 | +Current Capabilities |
| 31 | +-------------------- |
| 32 | + |
| 33 | +Py-libp2p currently supports these core libp2p features: |
| 34 | + |
| 35 | +* **Transports**: TCP, QUIC (near completion, in final testing phase) |
| 36 | +* **Protocols**: Gossipsub v1.1, Identify, Ping |
| 37 | +* **Security**: Noise protocol framework |
| 38 | +* **Connection Management**: Connection multiplexing |
| 39 | + |
| 40 | +Features in Development |
| 41 | +----------------------- |
| 42 | + |
| 43 | +Several important features are currently being actively developed: |
| 44 | + |
| 45 | +* **NAT Traversal**: AutoNAT and relay-based hole punching under development |
| 46 | +* **WebSocket Transport**: Design and scoping discussions underway |
| 47 | +* **Peer Discovery**: |
| 48 | + |
| 49 | + * **mDNS**: Implementation planned for upcoming sprints |
| 50 | + * **Bootstrap**: Modular bootstrap system planned after mDNS implementation |
| 51 | + |
| 52 | +Use Cases |
| 53 | +--------- |
| 54 | + |
| 55 | +Py-libp2p can be used to build various decentralized applications: |
| 56 | + |
| 57 | +* Distributed file storage systems |
| 58 | +* Decentralized social networks |
| 59 | +* IoT device networks |
| 60 | +* Blockchain and cryptocurrency networks |
| 61 | +* Research and academic projects |
| 62 | +* Private peer-to-peer messaging systems |
| 63 | + |
| 64 | +Getting Started |
| 65 | +--------------- |
| 66 | + |
| 67 | +Ready to start building with Py-libp2p? Check out our :doc:`getting_started` guide to begin your journey. For more detailed information about specific features and APIs, explore our :doc:`examples` and :doc:`API documentation <libp2p>`. |
| 68 | + |
| 69 | +Contributing |
| 70 | +------------ |
| 71 | + |
| 72 | +We welcome contributions from developers of all experience levels! Whether you're fixing bugs, adding features, or improving documentation, your help is valuable. See our :doc:`contributing` guide for details on how to get involved. |
8 | 73 |
|
9 | 74 | Further Reading |
10 | 75 | --------------- |
| 76 | + |
11 | 77 | * `libp2p main site <https://libp2p.io/>`_ |
12 | 78 | * `Tutorial: Introduction to libp2p <https://proto.school/introduction-to-libp2p>`_ |
| 79 | +* `libp2p Specification <https://github.com/libp2p/specs>`_ |
| 80 | +* `libp2p Documentation <https://docs.libp2p.io/>`_ |
0 commit comments