1

我目前正在开发一个网站的后端,该网站的工作类似于 YouTube,但只使用 IPFS 进行存储,这意味着如果你想将视频“上传”到该网站,它必须已经在 IPFS 网络上。实际功能更像是一个索引而不是其他任何东西,但这是我想要解决的问题。

我正在处理的部分旨在通过确保网络上仍有该特定内容的提供者来验证 CID 哈希的完整性。如果没有,则 CID 和任何相关信息将从我的数据库中删除,但我目前在尝试使用该ipfs.dhs.findProvs功能时遇到问题。

这是我的代码的一部分:

const ipfs = await IPFS.create({
  libp2p: { config: { dht: { enabled: true } } },
});
for (var i of integrityData) {
  let cid = new CID(i.CID);
  console.log(cid);
  let providers = ipfs.dht.findProvs(cid, { numProviders: 2 });
  for await (const provider of providers) {
    console.log(provider);
  }
}

错误日志:

C:\Users\...\node_modules\libp2p-kad-dht\src\providers.js:202
      this._log('getProviders %s', cid.toBaseEncodedString())
                                       ^

TypeError: cid.toBaseEncodedString is not a function

为了进一步解释我的代码,for 循环在查询数据库中的所有 CID 后迭代接收数据库的 JSON 内容。i.CID 确实将正确的 CID 作为字符串返回,然后我从中创建一个 CID 对象并将其传递给此处的函数ipfs.dht.findProvs(cid, { numProviders: 2 });。嵌套的 for 循环用于迭代接收到的对象,但我还没有进入那个阶段,因为我不断收到相同的错误。

4

0 回答 0