存放数据至去中心化服务器IPFS上
一、IPFS简介
IPFS(InterPlanetary File System)是一个基于libp2p库的去中心化服务器,遵循P2P协议。
二、前端使用IPFS
安装依赖
yarn add ipfs-core
在前端文件里引入IPFS
import * as IPFS from ‘ipfs-core’;
写数据到IPFS
1
2
3
4
5const ipfs = await IPFS.create()
const { cid } = await ipfs.add("Stay hungry, stay foolish")
console.info(cid.toString())
// QmTxPaRKovztC9assAEas69CMTxagzPuYBq2TirSHYCjz9从IPFS中读取数据
1
2
3
4
5
6
7
8
9
10const stream = ipfs.cat(cid.toString())
let data = ''
for await (const chunk of stream) {
// chunks of data are returned as a Buffer, convert it back to a string
data += chunk.toString()
}
console.log(data)
// "Stay hungry, stay foolish"结果预览
通过http查看:https://ipfs.io/ipfs/QmTxPaRKovztC9assAEas69CMTxagzPuYBq2TirSHYCjz9
- 存储数组等其他数据格式
写:
ipfs.add(JSON.stringify(mockArray))
读:
console.log(JSON.parse(data))
- 关于地址
一个地址只对应一个数据,例如QmTxPaRKovztC9assAEas69CMTxagzPuYBq2TirSHYCjz9
这个地址对应的就是Stay hungry, stay foolish
这句话,如果更改了这句话的内容,比如Hello world!!!
, ipfs将会创建一个新的地址用来存放新的数据。
所以对于原先不用的数据,如果未及时删除,就会被永久存储在ipfs上的某个地址,造成浪费。
- 其他
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