61个版本 (重大更新)
0.45.0 | 2024年8月9日 |
---|---|
0.44.2 | 2024年5月1日 |
0.44.1 | 2023年12月9日 |
0.44.0 | 2023年11月5日 |
0.6.0 | 2019年3月29日 |
#954 在 网络编程
每月245,426次下载
用于 220 个包 (直接使用9个)
800KB
16K SLoC
libp2p工作的中心仓库
此仓库是Rust对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)
知名用户
(如果您想将自己的项目添加到这里,请提交一个 pull request)
- COMIT - Bitcoin–Monero 跨链原子交换。
- Forest - Filecoin 的 Rust 实现。
- fuel-core - Fuel 协议的 Rust 实现。
- HotShot - 由 Espresso Systems 开发的 Rust 编写的去中心化 sequencer。
- ipfs-embed - 由 Actyx 使用和维护的小型可嵌入的 ipfs 实现。
- Homestar - Fission 维护和使用的 InterPlanetary Virtual Machine (IPVM) 实现。
- beetle - 为云和移动平台实现的下一代 IPFS 实现。
- Lighthouse - Rust 编写的 Ethereum 共识客户端。
- 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
:
实现了 Identify 协议。
本协议的实现定期在已建立的连接上交换 Info
消息。
在新建的连接上至少发送一个身份验证请求,之后的行为不会保持连接活跃。
重要差异
- 与其他协议使用Identify 与一些其他libp2p实现不同,rust-libp2p 并不将Identify视为核心协议。这意味着其他协议不能依赖于Identify的存在,需要手动将其与Identify连接起来才能利用其功能。
用法
Behaviour
结构体实现了一个 NetworkBehaviour
,该结构体在每个建立的连接上协商和执行协议,并发出 Event
。
依赖项
~8–16MB
~207K SLoC