Mining-Hardware

執行單執行緒 SHA256 散列的最快設備

  • June 17, 2017

我正在設計一個依賴於單執行緒SHA256雜湊計算的加密儲存證明 (PoS)。在實踐中,我的算法相當於為某個字元串計算Svalue SHA256^N(S) = SHA256(SHA256(SHA256(...(SHA256(S))))

這會強制計算該函式的任何東西只使用一個執行緒,因為每個SHA256步驟都需要前一個步驟的輸出作為輸入。

現在,我知道存在 ASIC 礦工可以SHA256以巨大的速度計算散列。然而,這是由於它們的並行性:完成工作量證明(即找到散列函式的零點)是一個令人尷尬的並行問題,並且可以在大規模並行設備上非常快速地計算。這不是我要找的。

我正在尋找的是能夠計算我的函式的最快設備,即單執行緒計算 a SHA256,然後SHA256是其輸出的 ,SHA256結果的 等等。

我認為在這種情況下,就單執行緒性能而言,最好的硬體可能是最快的 CPU:我發現這裡可能Intel Core i7-7700K是一個開始尋找的好地方。

是否有任何其他已知的專用硬體設備可以更快地執行任務?

好吧,現有的比特幣挖礦硬體確實對迭代散列沒有任何好處,因為它不是為此而設計的。但是,SHA-256 不是硬體抗性雜湊函式。雜湊函式中最複雜的運算是模 2³² 的加法運算,這在硬體中很容易實現。

攻擊者可以在晶片上實現快速 SHA 核心,這將包括盡可能快地計算單輪。這是與比特幣礦工相反的優化:礦工更喜歡以較慢的時鐘速度執行的非常多的並行核心,以節省每個雜湊的能量。這樣一個假設的晶片在計算迭代雜湊時肯定會比 CPU 快得多。

您想要的是一個記憶硬散列函式,例如Argon2。它的執行需要快速記憶體,這在商用 CPU 上很豐富,但建構到其他硬體中的成本很高。它有一個並行參數,您可以在其中最多允許 4 個核心。函式的迭代速度不會超過該核心數量,並且定制硬體不會增加攻擊者的速度。

maservant 是正確的,您可以建構專門的硬體來更快地計算它。我假設您只對現成的硬體感興趣。

英特爾已提議在其 CPU 中添加SHA256 擴展,以使它們能夠更快地計算 SHA256。目前市場上沒有這些,但未經證實的猜測稱 Cannonlake CPU 將具有 SHA 指令。(您可以通過執行來檢查 CPU 是否支持這些cpuid | grep SHA。)

此外,您正在以一種不尋常的方式使用 CPU。例如,大多數工作負載不適合 L1 記憶體,因此它們受益於更好、更多的記憶體。這對你來說根本不重要。

SHA256 的某些方面可以並行化。例如,壓縮功能和消息擴展可以同時執行。

我認為,但不確定,也有可能在SHA256 壓縮輪次之間獲得某種程度的並行性。請注意,唯一因計算而改變的變數是 A 和 E;其餘的都只是移動了一個空格。

您可能需要考慮將 CPU 超頻到會使大多數係統不穩定的程度。雖然計算重複的 SHA256 需要快速的串列性能,但可以並行進行驗證。

PS。我很好奇您正在建構什麼,以及為什麼這與它相關。

引用自:https://bitcoin.stackexchange.com/questions/50781