14个版本
0.2.9 | 2024年6月12日 |
---|---|
0.2.8 | 2023年11月13日 |
0.2.7 | 2023年10月18日 |
0.2.2 | 2023年7月26日 |
0.1.1 | 2023年3月20日 |
#434 in 密码学
307,139 个月下载
在 326 个crate中使用(58直接使用)
105KB
2K SLoC
libp2p工作的中心仓库
此仓库是libp2p规范Rust开发的中心位置。
入门
-
主要文档 可在 https://docs.rs/libp2p 找到。
-
示例 文件夹包含展示此仓库中许多协议的小二进制程序。
-
对于 与安全相关的问题 请 提交一个私人安全漏洞报告 。请不要在GitHub上提交公共问题。
-
为了 报告错误、建议改进或请求新功能 请在此仓库中打开一个GitHub问题。
-
对于 rust-libp2p特定问题 请使用GitHub 讨论 线程 https://github.com/libp2p/rust-libp2p/discussions。
-
对于 与多个libp2p实现相关的讨论和问题 请使用libp2p 讨论 线程 https://discuss.libp2p.io。
-
为了同步讨论,请加入 公开rust-libp2p维护者电话会议 或 每周两次的libp2p社区电话会议。
仓库结构
此仓库的主要组件结构如下
-
core/
:实现了具有其Transport
和StreamMuxer
API的libp2p-core
,几乎所有其他crate都依赖于它。 -
transports/
:基于libp2p-core
的Transport
API实现的传输协议(例如TCP)和协议升级(例如用于认证加密、压缩等)。 -
muxers/
:实现了libp2p-core
的StreamMuxer
接口,例如在(通常是TCP)连接上实现的(子)流多路复用协议。多路复用协议是(必需的)Transport
升级。 -
swarm/
:基于libp2p-core
,使用核心接口NetworkBehaviour
和ConnectionHandler
实现应用协议的libp2p-swarm
实现(见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 - 比特币–门罗币跨链原子交换。
- Forest - 使用Rust编写的Filecoin实现。
- fuel-core - Rust实现的Fuel协议。
- HotShot - 由Espresso Systems开发的Rust语言编写的去中心化序列器。
- ipfs-embed - 由Actyx使用和维护的小型可嵌入ipfs实现。
- Homestar - 由Fission使用和维护的星际虚拟机(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在内部使用其他crate(例如 ed25519_dalek
),但这些细节不会作为libp2p公共接口的一部分公开,以保持其易于升级或替换(例如,到ed25519_zebra
)。因此,外部ed25519或secp256k1 crate的密钥不能直接转换为libp2p网络身份。相反,加载固定密钥必须使用特定密钥类型的标准、更便携的二进制表示(例如ed25519二进制格式)。所有密钥类型都有函数可以启用它们与其二进制表示之间的转换。
依赖项
~0.5-10MB
~123K SLoC