1

我想检查提供的字符串是否是有效的 IPFS 或 IPNS 路径。

例如,当我这样做时:

ipfs ls <invalid-hash>
//waits keep searching ... 

这不会返回任何东西,只会在程序中停止,所以我需要等待不知道给定的哈希是否有效。

我使用过:https ://github.com/xicombd/is-ipfs但我提供给函数的无效哈希字符串返回 true,所以它在我这边无法正常工作,有什么建议吗?

我可以等待 N 秒作为 ipfs 返回结果的阈值ipfs cat valid-hashipfs ls valid-hashipfs cat valid-hashor的结果ipfs ls valid-hash可能需要比 N 秒更长的时间,这是不值得信赖的。

例如:(我在节点应用程序中运行命令。)

[$] node 
const isIPFS = require('is-ipfs')
> isIPFS.multihash('QmYooooooooooooooooooooooooooooooooaoooooooooo')
true //returns true but it is an invalid ipfs hash, should have returned false.

感谢您宝贵的时间和帮助。

4

1 回答 1

2

似乎该isIPFS库仅在语法级别验证哈希的有效性(它是否以 Qm 开头?它是预期的长度吗?),但不检查是否可以使用此哈希处理文件。

事实上,除了等待 N 秒得到答案之外,我认为断言无法使用某个哈希检索任何文件在技术上是不可行的。

以您对 HTTP 的相同方式来考虑 IPFS。有时,由于某些原因,HTTP 请求需要几分钟才能完成,但这并不意味着您尝试连接的 IP+端口无处可去。您的浏览器或应用程序将在任意时间后决定超时,以免永远等待,但您无法科学证明使用某个 HTTP 地址/IPFS 哈希无法访问任何内容。

于 2017-08-23T07:26:16.620 回答