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 网络编程

Download history 40826/week @ 2024-04-29 39762/week @ 2024-05-06 47462/week @ 2024-05-13 47614/week @ 2024-05-20 53522/week @ 2024-05-27 49132/week @ 2024-06-03 44341/week @ 2024-06-10 42323/week @ 2024-06-17 47574/week @ 2024-06-24 41698/week @ 2024-07-01 42225/week @ 2024-07-08 53991/week @ 2024-07-15 55765/week @ 2024-07-22 50091/week @ 2024-07-29 56215/week @ 2024-08-05 70145/week @ 2024-08-12

234,556 每月下载量
207 个包(4个直接) 中使用

MIT 协议

1MB
24K SLoC

libp2p工作的中央仓库

dependency status Crates.io docs.rs docs.rs master

此仓库是libp2p规范的Rust开发中央地点。

入门

仓库结构

此仓库的主要组件结构如下

  • core/: 实现 libp2p-core 的库,包括其 TransportStreamMuxer API,几乎所有的其他crate都依赖于它。

  • transports/:基于 libp2p-coreTransport API 实现传输协议(例如 TCP)和协议升级(例如认证加密、压缩等)。

  • muxers/:实现 libp2p-coreStreamMuxer 接口,例如在(通常是 TCP)连接之上进行(子)流复用协议。复用协议是(强制性的)Transport 升级。

  • swarm/:基于 libp2p-corelibp2p-swarm 实现,使用核心接口 NetworkBehaviourConnectionHandler 来实现应用协议(见 protocols/)。

  • protocols/:基于 libp2p-swarm API 的应用协议实现。

  • misc/:实用库。

  • libp2p/examples/:内置应用协议的工作示例(见 protocols/),包含常见的 Transport 配置。

社区指南

libp2p 项目遵循 IPFS 行为准则

tl;dr

  • 保持尊重。
  • 我们在这里帮助您: [email protected]
  • 容忍不礼貌的行为。
  • 违反此准则可能导致迅速且永久地被从 IPFS [和 libp2p] 社区中开除。
  • "太长,没读" 不能成为不了解本文件内容的借口。

维护者

(按字母顺序排列。)

知名用户

(如果您想将自己的项目添加到这里,请提交一个拉取请求)

  • 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