Proof-of-Work

標準電腦的工作證明

  • February 14, 2014

我對在不使用 GPU 的標準電腦上執行良好的工作量證明系統感興趣。

系統應具備的屬性:

  1. 基於種子的工作量證明。

沒有傑出的挑戰者可以有效地解決問題。典型的種子是公鑰的 256 位散列。 2. 最小化攻擊者從專用硬體中獲得的優勢。

合法員工擁有標準台式機或筆記型電腦。他願意投入大約 1GB 的記憶體和他的 CPU 來計算證明。他花費的時間是幾分鐘到幾個小時,這取決於證明應該有什麼等級。

攻擊者可以使用專用硬體,包括 GPU、FPGA 和 ASIC。他花在硬體和電力上來計算證明的金額應該是最大的。 3. 有效

的驗證 驗證證明應該很便宜。例如佔用 1ms 和 1MB 的記憶體。 4. 小證明

16 字節的證明是理想的,但幾千字節也可以。 5. 可預測的持續時間

對於許多證明系統來說,每次嘗試都是獨立的,因此很難預測何時成功。成功在平均時間左右達到頂峰會很好。這只是一個不錯的功能,我會滿足於只滿足 1 到 4 的系統。

我知道的系統,但不能滿足我的要求:

  1. 標準散列函式的散列前綴,例如 SHA-2。這滿足了 1、3 和 4,但完全失敗了 2。專用硬體目標硬體效率更高。
  2. scrypt 的雜湊前綴。這滿足了 1、2 和 4。但它失敗了 3,因為驗證需要與工作一樣多的記憶體,而且驗證時間也有點長。

我相信有可能創建一個滿足四個主要要求的系統。我的想法是解決一個原則上可以用很少的記憶體解決的問題,但成功的機會很小,因此工作量非常大,在這種情況下。但是,如果您願意投入大量 RAM,則可以執行不同的算法,從而有效地解決問題。

$ \quad $ scrypt的選擇前綴部分衝突

這在#3 中比您的第二個選項要好一些,因為

工作需要儲存先前獲得的 scrypt 輸出。

(我認為最好在輸出之間要求一個給定的漢明距離,而

不是輸出的一組特定位的相等性。 $ : $ 其中第一個需要儲存

全部輸出,而第二個只需要儲存輸出的相關位。)

我在https://github.com/tromp/cuckoo設計了 Cuckoo Cycle作為第一個可簡單驗證、可擴展且時間記憶權衡硬的工作量證明系統。它可以很好地並行化至少 12 個 CPU 執行緒,但由於其中一些小倍數的隨機訪問延遲,預計會使記憶體飽和。GPU 擁有大量頻寬的記憶體,但隨機訪問延遲要差得多,因此可能無法與之競爭。有關詳細資訊,請參閱白皮書。

引用自:https://crypto.stackexchange.com/questions/3104