validation - 是否有任何最佳时间来检查 ipfs-hash 是否存在?

标签 validation hash ipfs

ipfs object stat :

'ipfs object stat' is a plumbing command to print DAG node statistics. is a base58 encoded multihash.

如果给定的哈希有效,它会返回一些信息(当且仅当共享节点的 ipfs daemon 开启时)。

$ ipfs object stat QmNd4PHGU8Z7fwbEvps5jvVscCDd5husnNgKpaDCfm1tpt
NumLinks: 0
BlockSize: 39
LinksSize: 2
DataSize: 37
CumulativeSize: 39

现在我尝试使用无效的散列或节点(共享 ipfsHash)的 ipfs daemon关闭:我观察到命令停止。

$ ipfs object stat QmNd4PHGU8Z7fwbEvps5jvVscCDd5husnNgKpaDCfm1t88 #invalid hash
#waits.

如果我输入无效的 has 到 ipfs object stat它暂停了。我能做到timeout N终止它:但我不确定我应该等多久。

timeout 30 ipfs object stat QmNd4PHGU8Z7fwbEvps5jvVscCDd5husnNgKpaDCfm1t88

总的来说,我只想检查给定ipfs-hash存在是为了让我检索它的信息。

[Q] 有什么最佳时间让我等到ipfs object stat <ipfsHash>吗?是否返回有效值?等待大约 30 秒是否足够?

请注意:我在欧洲的节点和美国的节点之间进行了尝试,第一次尝试花费了大约 120 秒。但是在我假设在这些节点之间生成路径路由之后,我的下一次尝试在相同节点之间使用不同的哈希值需要不到一秒钟的时间。这可能是什么原因?

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

最佳答案

不能 100% 确定什么会导致这样的延迟,但我认为自 2017 年以来 DHT 已经有了很多改进。发生的事情是您的节点正在有效地查看并询问“谁拥有此 CID?”。一旦找到谁拥有 CID,它就会直接从该节点 p2p 检索它(或使用 p2p-circuit )。

我认为没有完美的“最佳时间”,所以我想你必须决定什么是你觉得可以接受的。如果您预计延迟最多“大约 120 秒”,那么 150-180 秒听起来应该比较合理。在 2021 年,我很少遇到像这样的大延迟,但如果数据在具有限制性 NAT 的节点上,这并非完全闻所未闻。我个人通常会在 30 多岁左右放弃,但如果我相对确定数据难以检索,我有时会让它无限期地尝试,直到我最终获得我正在寻找的数据。

至于为什么从同一节点检索后速度如此之快,您现在可能已经与它们对等,或者与它们对等的另一个节点检索了它们的数据并将其保存在它们的缓存中(例如网关例子)。因此,您的节点可能知道它们,并且可能知道它们声称拥有的 CID,因此它能够更快地查找和检索数据。

关于validation - 是否有任何最佳时间来检查 ipfs-hash 是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607144/

相关文章:

Java 链接哈希集

3d - 将模型从 .PLY 文件加载到半边数据结构中

IPFS:MFS 中的符号链接(symbolic link)

javascript - 无法访问 Vue3JS Vite 项目中的流程变量

regex - HTML5 输入模式与非拉丁字母

javascript - 客户端表单验证和交互的最佳 JavaScript 解决方案?

javascript - 1000hz Bootstrap 验证无法正常工作

javascript - Yii2 中表单验证后的回调 Javascript 函数

Java-语义分析: Implementing a hash table with a key and multiple value

ipfs - 以编程方式检查 IPFS 上的数据传输