Ipfs

驗證 IPFS 雜湊字元串

  • May 1, 2019

從這個問題我們知道我們無法預先驗證 ipfs 雜湊是否存在。

IPFS 是一個去中心化的系統,沒有可以查找雜湊的中央域。查找文件時,您要求網路查找將內容儲存在唯一雜湊後面的節點。你無法事先知道它是否存在。

當我們將文件夾或文件添加到 IPFS 中時,它會生成一些 ipfs 雜湊,例如:QmXjkFQjnD8i8ntmwehoAHBfJEApETx8ebScyVzAHqgjpD. 似乎所有雜湊都以“Qm”開頭並且有 46 個字元(如果我沒有算錯的話)。這些案例總是真實的嗎?

$ ipfs add -r folder
added QmXjkFQjnD8i8ntmwehoAHBfJEApETx8ebScyVzAHqgjpD folder/avatar/avatar.c

**$$ Q $$**如果字元串總是有一些屬性是 ipfs 雜湊,我如何驗證輸入字元串?這樣做的目的是強制使用者至少輸入與 ipfs 雜湊大小和其他屬性(如果存在)相匹配的字元串。

如:

  • 字元串應以“Qm”開頭
  • 字元串應為 46 個字元。

IPFS 指定雜湊應該是多重雜湊。這由一個指示散列算法的字節組成,後跟另一個字節表示長度。然後進行 base58 編碼。

雜湊算法一般為sha256,標識為0x12,長度為0x20。這編碼為“Qm”。

理論上,其他算法在 IPFS 中是合法的,所以如果你有程式碼,你將無法更改需要在未來工作的程式碼,你不應該假設“Qm”。您可以通過檢查長度字節並查看它是否與長度匹配來檢測一些非法情況。這裡列出了一些庫可以為您執行此操作,或者您可以查看它們以了解它們是如何工作的。

但是我認為目前其他算法並不常用,因此如果您更擔心輸入錯誤而不是未來兼容性,您可能只需檢查這種格式並在人們開始大量使用其他算法時更新您的程式碼。

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