Proof-of-Work
為 CPU 設計的工作證明?
我對工作量證明算法的天真理解是,它們本質上是 ap=np 類型的問題,其中很容易檢查解決方案,但很難產生解決方案。
我最近讀到一些加密貨幣基於旨在抵抗 ASIC 挖礦的算法——它們是為在 GPU 上執行而建構的。這讓我想知道是否有可以設計為在 CPU 上執行的工作量證明算法(因此使用 GPU/ASIC 會導致性能下降)?
我的第一直覺是不,但後來我想起我們不使用 GPU 來進行電腦的主要操作,這可能是有原因的。那麼是否有可能製作不會轉換為 GPU 或 ASIC 的基於 CPU 的工作量證明算法?
CryptoNight,門羅幣使用的 pow 函式就是這樣一個函式。 https://monerodocs.org/proof-of-work/cryptonight/ 基本上它需要更多的隨機記憶體訪問,而 GPU 記憶體不是為此而設計的。所以瓶頸不是計算能力,而是對記憶體的訪問。CPU 需要始終快速和隨機地訪問記憶體來執行程序,因此它被設計為擅長於此。此外,CryptoNight 旨在與大多數 CPU 的 L3 記憶體大小配合使用,以實現真正的快速訪問。
編輯:正如我在評論中所說的那樣,門羅幣現在使用的是 RandomX 而不是 CryptoNight。依賴隨機記憶體訪問的原理保持不變。此外,用於計算的指令取決於輸入,這對 gpu 來說真的很糟糕,因為核心只能執行相同的指令(它們沒有單獨的程序計數器)