74个版本 (45个重大更新)
新增 0.46.1 | 2024年8月19日 |
---|---|
0.45.3 | 2023年12月9日 |
0.45.1 | 2023年11月12日 |
0.44.3 | 2023年7月24日 |
0.6.0 | 2019年3月29日 |
#366 in 网络编程
234,556 每月下载量
在 207 个包(4个直接) 中使用
1MB
24K SLoC
libp2p工作的中央仓库
此仓库是libp2p规范的Rust开发中央地点。
入门
-
主要文档 可以在 https://docs.rs/libp2p 上找到。
-
示例 文件夹包含展示此仓库中许多协议的小型二进制文件。
-
对于 安全问题 请 提交一个私人安全漏洞报告。请不要在GitHub上提交公开问题。
-
为了 报告错误、建议改进或请求新功能 请在此仓库中打开GitHub问题。
-
对于 rust-libp2p特定问题 请使用GitHub 讨论 论坛 https://github.com/libp2p/rust-libp2p/discussions。
-
对于 与多个libp2p实现相关的讨论和问题 请使用libp2p Discourse 论坛 https://discuss.libp2p.io。
-
为了同步讨论,请加入 公开rust-libp2p维护者会议 或 每周两次的libp2p社区会议。
仓库结构
此仓库的主要组件结构如下
-
core/
: 实现libp2p-core
的库,包括其Transport
和StreamMuxer
API,几乎所有的其他crate都依赖于它。 -
transports/
:基于libp2p-core
的Transport
API 实现传输协议(例如 TCP)和协议升级(例如认证加密、压缩等)。 -
muxers/
:实现libp2p-core
的StreamMuxer
接口,例如在(通常是 TCP)连接之上进行(子)流复用协议。复用协议是(强制性的)Transport
升级。 -
swarm/
:基于libp2p-core
的libp2p-swarm
实现,使用核心接口NetworkBehaviour
和ConnectionHandler
来实现应用协议(见protocols/
)。 -
protocols/
:基于libp2p-swarm
API 的应用协议实现。 -
misc/
:实用库。 -
libp2p/examples/
:内置应用协议的工作示例(见protocols/
),包含常见的Transport
配置。
社区指南
libp2p 项目遵循 IPFS 行为准则。
tl;dr
- 保持尊重。
- 我们在这里帮助您: [email protected]
- 容忍不礼貌的行为。
- 违反此准则可能导致迅速且永久地被从 IPFS [和 libp2p] 社区中开除。
- "太长,没读" 不能成为不了解本文件内容的借口。
维护者
(按字母顺序排列。)
- Guillaume Michel (@guillaumemichel)
- João Oliveira (@jxs)
知名用户
(如果您想将自己的项目添加到这里,请提交一个拉取请求)
- COMIT - 比特币–门罗币跨链原子交换。
- Forest - 使用 Rust 编写的 Filecoin 实现。
- fuel-core - Fuel 协议的 Rust 实现。
- HotShot - 由 Espresso Systems 开发的 Rust 编写的去中心化 sequencer。
- ipfs-embed - 由 Actyx 使用和维护的小型可嵌入 ipfs 实现。
- Homestar - Fission 使用和维护的 InterPlanetary Virtual Machine (IPVM) 实现。
- beetle - 针对云和移动平台的新一代 IPFS 实现。
- Lighthouse - Rust 编写的以太坊共识客户端。
- Locutus - 全球、可观察、去中心化的键值存储。
- OpenMina - 浏览器中的 Mina Rust 实现。
- rust-ipfs - Rust 编写的 IPFS 实现。
- Safe Network - 使用 Rust 编写的 Safe Network 实现。
- Starcoin - 通过分层扩展的智能合约区块链网络。
- Subspace - Subspace 网络参考实现
- Substrate - 区块链创新框架,由 Polkadot 使用。
- Taple - OpenCanarias 开发的可持续 DLT 资产和过程可追溯性。
- Ceylon - 多智能体系统 (MAS) 开发框架。
lib.rs
:
libp2p 特定 Kademlia 协议的实现。
重要差异
- 使用 Identify 进行节点发现 在其他 libp2p 实现中,Identify 协议可能被视为核心协议。Rust-libp2p 尽可能保持通用性,不做出这种假设。这意味着必须通过调用
Behaviour::add_address
手动将 Identify 协议连接到 Kademlia。如果您选择不使用 Identify 协议,并且不提供替代的节点发现机制,Kademlia 节点将无法发现网络之外的节点。没有 Identify 协议,kademlia 网络中现有的节点无法获取查询它们的节点的监听地址,因此无法将其添加到它们的路由表中。
依赖项
~8–15MB
~212K SLoC