EOS [EOS DAPP 开发进阶] 04 - 使用 PIN 服务让文件永久保存在 IPFS 网络

pendingauth · 2019年09月10日 · 13 次阅读

本文转载自币乎,作者松果,原文链接: https://bihu.com/article/1681733911

上一篇文章中介绍了如何使用ipfs-api把文件上传到IPFS网络,但IPFS本身存在垃圾回收机制,每隔一段时间就会回收没有固定(PIN)的文件;

这篇文章介绍如何在DAPP中使用第三方提供的PIN服务固定已上传到IPFS网络的文件。

安装axios

axios是一个Http Client,用于发起http请求。在项目目录,使用如下命令安装axios:

cd weiwen-dapp2/frontend
npm install axios --save

安装好后,package.json的dependencies如下:

除去React自带的react、react-dom、react-scripts外,已安装18个第三方模块。

下面介绍两个固定ipfs hash的第三方服务:infurapinata

使用infura固定服务

使用axios向infura API发送get请求,即可固定指定hash值,在src/api/ipfsApi.js中编写使用infura的代码:

/**
 * 使用Infura固定服务
 */
export const pinByInfura = (hash) => {
  axios.get('https://ipfs.infura.io:5001/api/v0/pin/add?arg=/ipfs/' + hash)
  .then(res => {
    console.log(res);
  })
  .catch(error => {
    console.log(error);
  });
};

src/components/Header.js中,在saveFileToIPFS函数异步调用完成后调用:

ipfsApi.pinByInfura(hash);


使用pinata固定服务

使用pinata的固定服务需要使用API KEY和SECRET API KEY,在pinata.cloud/account页面可以查到。

在src/api/ipfsApi.js中编写使用pinata的代码:

/**
 * 使用Pinata固定服务
 */
export const pinByPinata = (hash) => {
  axios.post('https://api.pinata.cloud/pinning/pinHashToIPFS',
    { hashToPin: hash },
    { headers: 
      {
        'pinata_api_key': pinataApiKey,
        'pinata_secret_api_key': pinataSecretApiKey,
      }
    }).then(res => {
      console.log(res);    
    }).catch(function (error) {
      console.log(error);
    });
}

Pinata提供1GB免费固定容量,超过该容量需要付费,价格查看这里

Tips

项目代码在Github同步更新:https://github.com/songguo6/weiwen-dapp2

更多内容

EOS开发系列目录

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册