1 个不稳定版本
0.1.0 | 2020年9月23日 |
---|
#8 在 #bitswap
用于 ipfs
28KB
619 行
Rust IPFS
星际文件系统 (IPFS),用Rust实现
目录
描述
此仓库包含IPFS核心实现的crate,包括blockstore、包含DHT内容发现和pubsub支持的libp2p集成以及HTTP API绑定。我们的目标是利用Rust的独特特性创建强大、高效的软件,即使在资源受限的环境中也能工作,同时最大限度地与其他IPFS“风味”互操作性,即JavaScript和Go。
项目状态 - Alpha
不再维护
Alpha
您可以在Are We IPFS Yet?上查看已实现的功能、未实现的功能,并了解其他生态系统项目。
有关IPFS的更多信息,请参阅:https://docs.ipfs.io/introduction/overview/
安装
Rust IPFS依赖于protoc
和openssl
。
依赖项
首先,安装依赖项。
使用apt
$ apt-get install protobuf-compiler libssl-dev zlib1g-dev
使用yum
$ yum install protobuf-compiler libssl-dev zlib1g-dev
安装rust-ipfs
可以从源代码构建rust-ipfs
二进制文件。我们的目标是始终与Rust的稳定版兼容。
$ git clone https://github.com/rs-ipfs/rust-ipfs && cd rust-ipfs
$ cargo build --workspace
然后,您将在项目根目录的/target/debug
文件夹内找到这些二进制文件。
入门
我们建议浏览示例、http crate教程和测试,以了解如何在不同的场景中使用Rust-IPFS。
运行测试
项目目前具有单元、集成、一致性测试和互操作性测试。可以使用以下方式运行单元和集成测试
$ cargo test --workspace
--workspace
标志确保也运行http和unixfs crate的测试。
有关如何运行一致性测试的解释可以在此处找到。Go和JS互操作性测试背后有一个功能标志,可以通过以下方式运行
$ cargo test --feature=test_go_interop
$ cargo test --feature=test_js_interop
这些是互斥的,即--all-features
不会按预期工作。
注意:您需要设置环境变量GO_IPFS_PATH
和JS_IPFS_PATH
,使其指向相关的IPFS二进制文件。
贡献
有关更多信息,请参阅贡献文档。
如果您对库的使用或其他问题有任何疑问,欢迎提交问题。
路线图
特别感谢Web3基金会和Protocol Labs提供的devgrant支持。
已完成的工作
- 项目设置
- 测试设置
- 一致性测试
- HTTP API 框架
- UnixFS 支持
/pubsub/{publish,subscribe,peers,ls}
/swarm/{connect,peers,addrs,addrs/local,disconnect}
/id
/version
/shutdown
/block/{get,put,rm,stat}
/dag/{put,resolve}
/refs
和/refs/local
/bitswap/{stat,wantlist}
/cat
/get
/resolve
进行中的工作
/bootstrap
/dht
- 互操作性测试
仍需进行的工作
/name
/ping
/key
/config
/stats
/files
(常规和mfs)- 一些未在此列举的其他杂项端点
维护者
Rust IPFS最初由@dvc94ch编写,并由@koivunej、@aphelionz维护。特别感谢Protocol Labs和Equilibrium。
替代方案和其他相关项目
已经注意到,Rust-IPFS的名称和知名度可能从“先行者”的角度为其组织服务。然而,存在具有不同哲学的替代方案,我们相信支持多样化的IPFS社区非常重要,最终有助于产生最佳的解决方案。
rust-ipfs-api
- 对现有IPFS HTTP API的Rust客户端。支持hyper和actix。ipfs-embed
- 基于sled
的实现rust-ipld
- 支持基本rust ipld库,支持dag-cbor
、dag-json
和dag-pb
格式。- PolkaX的
rust-ipfs
- Parity的
rust-libp2p
,这里做了很多繁重的工作
如果您知道其他实现或与这些努力相邻的其他酷项目,请告诉我们!
贡献者
代码贡献者
本项目得以存在,得益于所有贡献者。[贡献].
财务贡献者
成为财务贡献者,帮助我们维持社区。[贡献]
个人
组织
使用您的组织支持此项目。您的标志将在此处显示,并带有链接到您的网站。[贡献]
许可
双许可下MIT或Apache许可证(版本2.0)。有关详细信息,请参阅LICENSE-MIT和LICENSE-APACHE。
商标
《Rust》标志和文字徽标是Mozilla Foundation拥有和保护的商标。[前往Mozilla Foundation的媒体指南](https://rust-lang.net.cn/policies/media-guide)了解更多信息。Rust和Cargo的标志(位图和矢量)由Mozilla拥有,并按照[Creative Commons Attribution许可协议(CC-BY)](https://creativecommons.org/licenses/by/4.0/)进行分发。
lib.rs
:
Bitswap协议实现
依赖项
~13–18MB
~337K SLoC