Ipfs

如何檢查提供的字元串是有效的 IPFS 或 IPNS 路徑?

  • June 28, 2017

我想檢查提供的字元串是有效的 IPFS 或 IPNS 路徑還是不在 ipfs 域下。

例如,當我這樣做時:

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

這不會返回任何東西,只會在程序中停止,所以我需要等待不知道給定的雜湊是否有效。

我可以等待 N 秒作為 ipfs 返回結果的門檻值ipfs cat valid-hashipfs ls valid-hashipfs cat valid-hashor的結果ipfs ls valid-hash可能需要比 N 秒更長的時間,這是不值得信賴的。

[~]$ ipfs cat <hash-id that exists in the ipfs domain>
//returns a results maybe after 10 minutes if the hash-id string is valid.

[~]$ ipfs cat <hash-id that does not exists in the ipfs domain>
//HALTS. and does not return me that hash-id is invalid.

我使用過:https ://github.com/xicombd/is-ipfs但我提供給函式的無效雜湊字元串返回 true,所以它在我這邊無法正常工作,有什麼建議嗎?

例如:(我在節點應用程序中執行命令。)

[$] node 
const isIPFS = require('is-ipfs')
> isIPFS.multihash('QmYooooooooooooooooooooooooooooooooaoooooooooo')
true //returns true but it is an invalid ipfs hash that does not exist in the ipfs domain and should have returned false.

感謝您寶貴的時間和幫助。

你真的沒有辦法做你想做的事。如果你再想一想,並考慮到分佈式 p2p 系統(如 IPFS)的架構——“有效”或“存在”的定義並不那麼明顯。

如果您向 IPFS 詢問與給定雜湊匹配的文件 - 它會遍歷網路中的一組可用節點,試圖找到具有可用文件的節點。但如果它找不到任何 - 它可能是由於各種原因。對於不被許多節點記憶體並且只有少數節點固定它的不受歡迎的內容,發布此文件的節點有可能在這個特定時刻簡單地關閉。

正如您所描述的-您可以嘗試超時-但它們會給您帶來誤報。

不過,您可以做的是使用 IPNS 命名文件(更準確地說是文件的雜湊)並使用名稱導航到它。當然,如果您發布了錯誤的雜湊值,您可以破壞它,但通過自動將文件添加到 IPFS 並在 IPNS 中命名它很容易避免。

引用自:https://ethereum.stackexchange.com/questions/10376