我想检查提供的字符串是否是有效的IPFS或IPNS路径。
例如,当我这样做时:
ipfs ls <invalid-hash>
//waits keep searching ...
这不会返回任何东西而是在程序中停止,所以我需要等待不知道给定散列是否有效。
我使用过:https://github.com/xicombd/is-ipfs但是我在函数中给出的无效哈希字符串返回true,所以它在我这方面不能正常工作,有什么建议吗?
我可以等待N秒作为ipfs的阈值返回ipfs cat valid-hash
,ipfs ls valid-hash
的结果,但ipfs cat valid-hash
或ipfs 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.
感谢您宝贵的时间和帮助。
答案 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哈希无法达到任何结果的科学证据。