一、IPFS简介

IPFS(InterPlanetary File System)是一个基于libp2p库的去中心化服务器,遵循P2P协议。

二、前端使用IPFS

  1. 安装依赖

    yarn add ipfs-core

  2. 在前端文件里引入IPFS

    import * as IPFS from ‘ipfs-core’;

  3. 写数据到IPFS ```javascript const ipfs = await IPFS.create() const { cid } = await ipfs.add(“Stay hungry, stay foolish”)

console.info(cid.toString()) // QmTxPaRKovztC9assAEas69CMTxagzPuYBq2TirSHYCjz9

  1. 4. IPFS中读取数据
  2. ```javascript
  3. const stream = ipfs.cat(cid.toString())
  4. let data = ''
  5. for await (const chunk of stream) {
  6. // chunks of data are returned as a Buffer, convert it back to a string
  7. data += chunk.toString()
  8. }
  9. console.log(data)
  10. // "Stay hungry, stay foolish"
  1. 结果预览

image.png
通过http查看:https://ipfs.io/ipfs/QmTxPaRKovztC9assAEas69CMTxagzPuYBq2TirSHYCjz9

  1. 存储数组等其他数据格式

写:

ipfs.add(JSON.stringify(mockArray))

读:

console.log(JSON.parse(data))

  1. 关于地址

一个地址只对应一个数据,例如QmTxPaRKovztC9assAEas69CMTxagzPuYBq2TirSHYCjz9这个地址对应的就是Stay hungry, stay foolish这句话,如果更改了这句话的内容,比如Hello world!!!, ipfs将会创建一个新的地址用来存放新的数据。
所以对于原先不用的数据,如果未及时删除,就会被永久存储在ipfs上的某个地址,造成浪费。

  1. 其他

IPFS官网:https://js.ipfs.io/zh-CN/
IPFS支持的操作: https://github.com/ipfs/js-ipfs/pull/107
IPFS Core Api:https://github.com/ipfs/js-ipfs/tree/master/docs/core-api