ZBLOG

从哈希到有向无环图,以太坊挖矿的变革与DAG的核心角色

在区块链的世界里,“挖矿”曾是加密领域最具代表性的词汇之一,提到挖矿,人们首先想到的可能是比特币的SHA-256算法,或是早期以太坊的Ethash算法——后者曾凭借抗ASIC设计的理念,吸引了全球无数矿工用显卡参与其中,随着以太坊向“权益证明”(PoS)的全面转型,传统意义上的“挖矿”逐渐退出历史舞台,而支撑其早期算力竞争的核心机制——DAG(有向无环图),却始终是理解以太坊演进逻辑的关键一环,本文将从DAG的诞生背景、技术原理、在挖矿中的作用,以及以太坊转型后的角色变迁出发,解析这一特殊数据结构如何塑造了以太坊的过去,并仍在影响着其未来。

为什么需要DAG?——从“工作量证明”到“内存硬算”

以太坊自2015年上线初期,便采用了与比特币不同的共识算法:Ethash,与比特币依赖纯计算能力的SHA-256不同,Ethash的核心设计目标是“抗ASIC化”——即让普通用户能用消费级显卡(GPU)参与挖矿,避免算力被专业矿机垄断,从而维护网络的去中心化特性。

要实现这一目标,Ethash需要一种机制,让挖矿过程不仅依赖算力,还依赖大量内存数据的随机读取,这便是DAG登场的原因,在Ethash中,每个“epoch”(时期,约3.8万个区块,约等于5天)会生成一个巨大的DAG文件,这个文件随着时间推移不断增大(当前已超过50GB),矿工在挖矿时,必须将整个DAG加载到显卡内存中,然后通过算法从DAG中随机选取数据,与当前区块头进行哈希运算,最终寻找符合难度目标的“nonce值”。

DAG就像一个“巨大的数据池”,挖矿过程相当于“从池子里随机捞数据+算哈希”,由于DAG文件极大且持续增长,GPU的大内存优势得以发挥,而ASIC矿机虽然算力强,但内存容量有限,难以高效处理DAG数据——这正是Ethash“抗ASIC化”的核心设计。

DAG是什么?——有向无环图的技术本质

要理解DAG在挖矿中的作用,首先需要明确其技术定义。DAG(Directed Acyclic Graph),即“有向无环图”,是一种数据结构,由一组“顶点”(Vertex)和“边”(Edge)组成,其中边具有方向性(从一个顶点指向另一个顶点),且图中不存在“环”(即无法从某个顶点出发,经过一系列边后回到该顶点)。

在Ethash中,DAG的生成遵循严格的数学规则:每个epoch的DAG由前一epoch的DAG“衍生”而来,通过伪随机函数确定顶点的生成顺序和连接关系,DAG包含两种顶点:

  • 缓存(Cache):较小的数据集(当前约4GB),用于生成DAG的顶点;
  • 数据集(Dataset):较大的数据集(即我们常说的“DAG文件”),由缓存顶点通过“Merkle-Damgård”哈希函数扩展生成,每个顶点的大小为32字节。

这种设计确保了DAG的“确定性”——只要输入相同的epoch参数,所有节点生成的DAG完全一致,从而保证了全网挖矿数据的一致性,DAG的“无环”特性避免了数据循环依赖,使得内存加载和随机读取过程可以高效进行。

DAG如何驱动挖矿?——算力竞争的“内存战场”

在Ethash挖矿中,DAG的角色远不止“数据池”那么简单,它是算力竞争的核心“战场”,具体流程如下:

  1. DAG生成与加载:每个epoch开始前,矿工需提前下载并生成该epoch的DAG文件,并将其加载到显卡的显存(VRAM)中,DAG的大小直接决定了显存需求——当DAG达到50GB时,矿工至少需要配备8GB显存的显卡(因为显卡需要同时处理系统任务和挖矿数据)。

  2. 哈希运算与随机读取:挖矿时,矿工算法会从DAG中随机选取两个顶点(通过“哈希种子”确定位置),将这两个顶点的数据与当前区块头拼接,进行多次哈希运算(如Keccak-256),最终输出一个哈希值,如果哈希值小于当前网络的“目标值”(即难度要求),则挖矿成功,矿工获得区块奖励和交易手续费。

  3. DAG大小与挖矿难度:随着epoch推进,DAG大小每3.8万个区块增加约8GB,这意味着矿工需要不断升级显卡显存——早期4GB显存的显卡在DAG超过4GB后便无法参与挖矿,而8GB显存的显卡在DAG达到16GB时也会被淘汰,这种“显军备竞赛”客观上提高了挖矿门槛,但也迫使矿工更新硬件,间接推动了GPU市场的更新换代。

值得注意的是,DAG的“随机读取”特性让GPU的大内存带宽优势得以充分发挥,相比于CPU的缓存架构,GPU拥有数千个并行计算单元,能同时处理大量内存数据的读写,因此在DAG驱动的挖矿中效率远高于CPU——这也是为什么Ethash挖矿几乎完全依赖GPU的原因。

以太坊转型后,DAG还重要吗?

2022年9月,以太坊通过“合并”(The Merge)完成了从“工作量证明”(PoW)到“权益证明”(PoS)的共识机制转型,传统意义上依赖算力竞争的“挖矿”成为历史,取而代之的是验证者通过质押ETH参与区块打包和共识,DAG是否也随之退出了历史舞台?

答案是:DAG仍存在于以太坊网络中,但角色已发生根本性变化,在PoS机制下,验证者不再需要加载巨大的DAG文件进行哈希运算,而是通过验证区块签名、检查状态转换等方式参与共识,DAG并未被删除,而是被保留用于“轻客户端”(Light Client)和某些历史数据查询场景。

DAG的生成逻辑仍在延续——每个epoch仍会生成新的DAG文件,但其作用已从“驱动挖矿”变为“维护网络兼容性”,对于普通用户而言,若想运行以太坊全节点,仍需存储历史DAG文件(尽管PoS节点对硬件要求已大幅降低);而对于开发者而言,DAG的结构仍可用于某些历史数据验证的算法优化。

值得一提的是,在PoW时代,DAG的大小增长曾引发矿工对“显存瓶颈”的担忧,而PoS的转型彻底解决了这一问题——这也从侧面反映了以太坊团队对“去中心化”与“可扩展性”平衡的考量:通过放弃算力竞争,换取更低的能耗和更高的效率,而DAG作为历史遗产,则以一种更“温和”的方式继续存在。

从“挖矿引擎”到“历史印记”

DAG的诞生,是以太坊早期“抗ASIC化”理念的技术结晶,它让GPU挖矿成为可能,在全球范围内推动了以太坊的节点去中心化,尽管随着以太坊向PoS转型,DAG已不再是挖矿的核心,但它作为以太坊发展史上的关键数据结构,记录了区块链从“算力竞争”到“权益共识”的演进轨迹。

分享:
扫描分享到社交APP