完全用JavaScript编写的完整P2P协议

P2P JavaScript协议

js-ipfs为浏览器实现IPFS协议铺平了道路。 它完全用JavaScript编写,运行在浏览器、Service Worker、Web扩展和Node.js中,打开了通向无限可能世界的大门。

js-ipfs 运行在浏览器、Service Worker、Web扩展和Node.js中,打开了通向无限可能世界的大门!

关闭动画
js-ipfs库当前为Alpha版本。代码库未经安全专家审核,请勿用于存储、共享或者发布敏感信息。

功能特性

js-ipfs实现你所了解和喜爱的IPFS的全部功能。同时,还专门为浏览器开发了特有功能,js-ipfs为分布式web应用开发提供了强大的工具支持。

运行在Node.js和浏览器中

js-ipfs在Node.js,Electron和任何现代浏览器上开箱即用。 同时,它可以通过定制化设计满足您的个性化使用需求。

实现完整的IPFS技术栈

js-ipfs不是一个轻量级的客户端,它完整的实现了IPFS协议的全部功能,没有任何功能被遗漏。

利用PubSub功能与其它节点进行实时通信

IPFS节点基于兴趣主题创建网络拓扑结构,以实时广播相关事件。

从IPFS网络中的任何位置添加和检索文件

IPFS被设计用来通过内容寻址能力去从网络中寻找有你想要内容的节点。其它节点也能通过同样的方式找到你添加的数据。

利用DAG API遍历任意哈希链数据结构

IPFS使用IPLD(星际链接数据模型)使您能够与多种数据源(如git,区块链等)的数据进行交互。

内建libp2p功能

libp2p是一个模块化网络栈。它是为IPFS所开发的网络层功能,现在您可以通过IPFS在应用程序中直接使用。

作为守护程序运行

js-ipfs也可以作为守护进程运行,以便您可以使用已经熟悉的HTTP API(源自于go-ipfs)与其进行交互。

为可变数据创建固定地址

利用IPNS(星际命名系统),在身份验证和认证的基础上,通过创建可变指针(记录)的方式来发布内容更新。

入门指南

IPFS为分布式web上的数据提供了内容寻址。通过CID(内容识别符)使数据在网络上可用或者获取现有数据。试一下!

添加数据到IPFS

const node = new IPFS()

const data = 'Hello, <YOUR NAME HERE>'

// once the node is ready
node.once('ready', () => {
  // convert your data to a Buffer and add it to IPFS
  node.files.add(node.types.Buffer.from(data), (err, files) => {
    if (err) return console.error(err)

    // 'hash', known as CID, is a string uniquely addressing the data
    // and can be used to get it again. 'files' is an array because
    // 'add' supports multiple additions, but we only added one entry
    console.log(files[0].hash)
  })
})

输出结果

从IPFS获取数据

在浏览器或者Node.js中使用JavaScript

const node = new IPFS()

node.once('ready', () => {
  node.files.cat('QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A', (err, data) => {
    if (err) return console.error(err)

    // convert Buffer back to string
    console.log(data.toString())
  })
})

输出结果

使用CLI

npm install ipfs -g
jsipfs cat QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A

使用HTTP网关

https://ipfs.io/ipfs/QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A
了解更多

Service Worker网关

无需借助任何服务器,也无需使用HTTP从IPFS网络获取内容即可将此页面转换为完整的IPFS网关! 是的,你没看错,带有js-ipfs的Service Worker网关可以直接连接到IPFS网络。

启用Service Worker

看看大家正在使用它做什么

Paratii使用js-ipfs和以太坊合约构建了一套用于视频流和内容管理的开源技术。Portal是一个网络应用程序,用来管理运行在IPFS上的加密视频。

Project Preview

你能通过js-ipfs做什么

你有很多种方式来使用js-ipfs。下面的示例给您提供了一个你能通过js-ipfs做什么的想法。试试吧!

Stream Video through IPFS
Upload and send files

您有什么想法或建议吗?在这儿提出来!

内容发布和专题演讲

查看IPFS社区关于JavaScript项目的最近更新,观看演示和其它演讲视频。更多关于IPFS开发者会与的精彩演讲内容会陆续在这里发布。

IPFS on the Brave Browser, Alan Shaw

CRDTs as the foundation for Distributed Web Apps, Pedro Teixeira

A Regular JS Core Dev Call, join us!

社区

js-ipfs是来自于IPFS社区的开源项目,使用了MIT许可协议。您可以通过多种方式为项目作出贡献:编写文档、使用libp2p编写应用和工具、创建示例和教程,加入我们的产品例会与我们一起讨论libp2p。

来吧,快来加入我们!