Hash

雜湊率:代數方程

  • February 27, 2019

我最近在堆棧上發表了一篇文章,在 IOS中計算雜湊率,希望破譯在基準性能測試時如何計算雜湊率。我想這樣做的原因是與是否有可能用 iPhone 開採加密貨幣中給出的結果進行比較?在網際網路上搜尋了幾天后,我得出一個結論,計算雜湊率並不像看起來那麼簡單。

我的想法

我印象深刻,尤其是在閱讀如何計算每秒生成多少雜湊?解釋加密貨幣中的雜湊率或算力以及如何計算挖礦硬體的雜湊率,計算雜湊率如下:

Have collection of x number of messages (M) 80 bytes in size
Loop through records, and calculate the sha256(sha256(M))
Divide the number of computed hashes against elapsed time
   # the result is hash rate ( in seconds, given your elapsed time is in s )

這樣做之後,我看到的結果高達每秒 24000 個雜湊值,即 24KH/s。顯然,這是令人震驚的,因為我試圖比較的參考文章有以下結果:

iPhone 6 具有 25/30 雜湊率 (H/s)

iPhone 8 55 小時/秒

iPhone X (iPhone 10) 每秒 65 次雜湊

後來我繼續尋找,偶然發現這篇 Stack 文章如何計算你的鑽機的雜湊率?,並且接受的答案提到雜湊率是根據經驗定義的。雖然我不懷疑作者,但我現在發現很難確定真正的雜湊率是多少。(“nonce”對計算雜湊率有影響嗎?即標準雜湊率是通過計算我的機器可以確保雜湊結果以1中的3(或5,或7)前導零開始的次數確定的嗎?第二? )

TL; 博士

我想計算我的 IOS 設備的雜湊率。我應該使用什麼算法和代數表達式來計算雜湊率,以便能夠將我的結果與其他設備(如筆記型電腦和顯卡)進行比較?

雜湊率實際上是您每秒可以嘗試多少不同的塊頭雜湊。不多也不少。請注意,我說的是“嘗試”而不是“計算”。確定一個特定的塊頭是否有趣比完全計算雜湊要快一些:

  • 您可以放棄最後幾輪雜湊實現,只計算輸出的前 32 位(如果這 32 位為 0,則在優化程度較低的軟體中重新計算雜湊以確定它是否是完全有效的塊)。
  • 您可以利用連續嘗試的塊頭僅在幾個字節上不同的事實,重用部分計算。
  • 您可以預先計算事物以找到多個塊頭嘗試的組合,這些嘗試共享比隨機部分更多的評估部分(這是 AsicBoost 的基礎)。

因此,由於上述原因,確定某些硬體的確切雜湊率是一項非常重要的工程工作,並且由於架構特定優化和利用特殊硬體指令等事情而變得複雜。

這樣的工程顯然沒有為 iPhone 完成,因為它是一個荒謬的計算目標。我的信封背面計算表明它可能會達到幾 MH/s,但這仍然意味著大約 5000 萬年才能找到一個區塊,因此不會花費太多精力。

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