如何检查提供的字符串是有效的IPFS还是IPNS路径?

时间:2016-11-30 02:46:29

标签: validation hash ipfs

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

例如,当我这样做时:

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

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

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

我可以等待N秒作为ipfs的阈值返回ipfs cat valid-hashipfs ls valid-hash的结果,但ipfs cat valid-hashipfs ls valid-hash的结果可能需要超过N秒,这是不值得信赖的。

例如:(我在节点app中运行命令。)

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

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

1 个答案:

答案 0 :(得分:1)

似乎sourceSets { test.java.srcDir 'src/unitTest/java' test.resources.srcDir 'src/unitTest/resources' unitTest { java { srcDir 'src/unitTest/java' } resources { srcDir 'src/unitTest/resources' } } } 库只在语法级别上验证哈希的有效性(它是以Qm开头吗?它是预期长度吗?),但是不检查文件是否可以使用此哈希来解决。

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

以与思考HTTP相同的方式思考IPFS。有时,由于某些原因,HTTP请求需要几分钟才能完成,但它并不代表您尝试连接潜在客户的IP +端口。您的浏览器或应用程序将决定在任意时间后超时,以免永远等待,但您无法获得使用某个HTTP地址/ IPFS哈希无法达到任何结果的科学证据。