Private-Blockchain

生成 DAG 的更快方法?

  • December 29, 2017

來自乙太坊官方文件

DAG 每 30000 個區塊(一個 100 小時的視窗,稱為一個 epoch)完全不同,並且需要一段時間才能生成。由於 DAG 僅取決於塊高度,因此可以預先生成,但如果不是,則客戶端需要等待此過程結束才能生成塊。在客戶端實際提前預記憶體 dag 之前,網路可能會在每個 epoch 轉換時遇到巨大的塊延遲。

有人提到 DAG 需要一段時間才能生成。影響這一代時間的因素是什麼?有沒有更快的方法來生成 DAG?此外,如果 DAG 沒有被預記憶體,那麼在這個 epoch 轉換期間會觀察到什麼樣的差異。

PS:就我而言(私有區塊鏈),乙太坊節點在為 epoch 1 生成 DAG 時崩潰,原因如下:

panic: ethash_full_new IO or memory error

我在具有 3GB RAM 的 Ubuntu (16.04) 虛擬機上執行 geth。

加速中

您無法加快 DAG 創建速度,除非:

  1. 專用的mote處理能力CPU
  2. 專用更多 GPU。

如果你可以優化,

好吧,您實際上可以將其作為乙太坊改進提案提出 - EIP

什麼是 DAG?

Dagger Hashimoto 是針對乙太坊 1.0 的探勘算法提出的規範。Dagger Hashimoto 旨在同時滿足兩個目標:

  • ASIC 阻力:為算法創建專用硬體的好處應該盡可能小,理想情況下,即使在已經開發 ASIC 的經濟體中,加速也足夠小,對於普通電腦上的使用者來說仍然是微利的用備用 CPU 電源進行挖礦。
  • 輕客戶端可驗證性:輕客戶端應該相對有效地驗證一個塊。

話雖如此,DAG 的主要目的是驗證工作;所謂的 PoW(工作證明)。意味著其他節點使用您已完成的 PoW 驗證您的塊,即 DAG。

選擇 1 GB DAG 大小是為了需要比大多數專用記憶體和記憶體的建構大小更大的記憶體級別,但仍然足夠小,普通電腦可以使用它進行探勘。有關更多資訊,請查看Ethash 設計原理

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