Nodejs

在 IPFS 中獲取數據的方法更快

  • March 4, 2022

我有一個從 ipfs 網路獲取數據的站點,我目前正在將它與 axios.get(“http://ipfs.io/ipfs...") 一起使用,有時區塊鏈真的很慢,所以我不知道還有另一個獲取這些數據的最佳方法。

也許直接使用 ipfs 協議獲取它,如何使用 nodejs 來做到這一點?

IPFS 與區塊鏈無關。它是一個點對點文件系統。雖然主機 ipfs.io 經常被過度使用,所以它可能很慢。

我會嘗試不同的 IPFS 提供商,例如 Cloudflare 或 infura.io ( https://infura-ipfs.io/ipfs/ )。請注意,它們通常受到速率限制,因此可能更好地扮演您自己的 IPFS 節點。

如果您想通過 nodejs 連接到不同的節點,那麼這裡有一些程式碼可能會有所幫助:

import { create } from 'ipfs-http-client';
const fs = require('fs');

// and then call the below function
async function getIpfsFileAsArchive(ipfs, cid){
   for await (const buf of ipfs.get(cid, {archive: true, compress: true})) {
       const ipfs = await create({host: "replace with ipfs host ip address"});
       fs.createWriteStream(`./ipfs/${cid}.tar.gz`).write(buf);
   }
}

引用自:https://ethereum.stackexchange.com/questions/123017