#ipfs #protocols #bitswap #implemented #content #p2p #ipld

ipfs-bitswap

ipfs中使用的Bitswap协议实现

1 个不稳定版本

0.1.0 2020年9月23日

#8#bitswap


用于 ipfs

MIT/Apache

28KB
619


Rust IPFS

星际文件系统 (IPFS),用Rust实现

Not Maintained

目录

描述

此仓库包含IPFS核心实现的crate,包括blockstore、包含DHT内容发现和pubsub支持的libp2p集成以及HTTP API绑定。我们的目标是利用Rust的独特特性创建强大、高效的软件,即使在资源受限的环境中也能工作,同时最大限度地与其他IPFS“风味”互操作性,即JavaScript和Go。

项目状态 - Alpha 不再维护

您可以在Are We IPFS Yet?上查看已实现的功能、未实现的功能,并了解其他生态系统项目。

有关IPFS的更多信息,请参阅:https://docs.ipfs.io/introduction/overview/

安装

Rust IPFS依赖于protocopenssl

依赖项

首先,安装依赖项。

使用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_PATHJS_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 LabsEquilibrium

已经注意到,Rust-IPFS的名称和知名度可能从“先行者”的角度为其组织服务。然而,存在具有不同哲学的替代方案,我们相信支持多样化的IPFS社区非常重要,最终有助于产生最佳的解决方案。

如果您知道其他实现或与这些努力相邻的其他酷项目,请告诉我们!

贡献者

代码贡献者

本项目得以存在,得益于所有贡献者。[贡献].

财务贡献者

成为财务贡献者,帮助我们维持社区。[贡献]

个人

组织

使用您的组织支持此项目。您的标志将在此处显示,并带有链接到您的网站。[贡献]

许可

双许可下MIT或Apache许可证(版本2.0)。有关详细信息,请参阅LICENSE-MITLICENSE-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