区块链基础 / 主题阅读

Ethash算法如何通过DAG实现内存硬性要求

Ethash通过生成大型DAG数据集实现内存硬性要求,每30000个区块更新一次,确保矿工需要存储大量数据。验证过程通过轻量级缓存实现,降低硬件要求。Ethash是Dagger-Hashimoto的改进版本,旨在对抗ASIC矿机。

展示DAG有向无环图结构的示意图
主题资料配图,非新闻现场照片 · 配图:dag

Ethash算法如何通过DAG实现内存硬性要求

Ethash算法通过生成一个称为DAG(Directed Acyclic Graph)的大型数据集来实现内存硬性要求。DAG的大小约为几GB,其内容依赖于区块高度和随机种子。这种设计使得矿工需要存储大量数据,从而增加硬件成本,降低专用集成电路(ASIC)的效率。

DAG的生成周期与更新机制

DAG每30000个区块更新一次,这一周期被称为一个epoch,大约持续5.2天。由于DAG仅依赖于区块高度,因此可以提前生成。如果客户端未提前生成DAG,可能会在epoch转换时导致区块生成延迟。

DAG在验证过程中的作用

DAG在验证过程中主要用于生成工作量证明(PoW)的计算。验证者不需要存储完整的DAG,而是通过轻量级的缓存(cache)来生成所需的数据片段。这种设计使得验证过程对内存和CPU的要求较低,从而支持更多节点参与网络验证。

Ethash与Dagger-Hashimoto算法的关系

Ethash是Dagger-Hashimoto算法的改进版本,旨在提高内存硬性要求,以对抗ASIC矿机。尽管Ethash ASIC最终被开发出来,但GPU矿机在PoW阶段仍具有竞争力。Ethash的内存硬性特性使其在以太坊的早期阶段成为主流的共识算法。

资料与延伸阅读

你可以通过以下原始资料核对文中概念,并继续深入阅读。

  1. Ethash | ethereum.org ↗
  2. 配图:dag ↗
← 更多区块链基础文章返回顶部 ↑