以太坊(Ethereum)作为全球第二大加密货币,其挖矿机制一直是社区关注的焦点,在从工作量证明(PoW)向权益证明(PoS)过渡的“合并”(The Merge)之前,ETH挖矿依赖于一种名为Ethash的算法,而内存消耗正是这一算法的核心特征与关键瓶颈,理解ETH挖矿中的内存消耗,对于矿工优化配置、把握挖矿态势以及展望以太坊未来发展都具有重要意义。

Ethash算法与内存的紧密关系:内存硬 fork 的核心

Ethash算法是一种改进的哈希算法,其设计初衷是为了抵抗应用特定集成电路(ASIC)矿机的集中化趋势,倡导更去中心化的挖矿环境,即“内存硬 fork”(Memory Hard Fork),其核心思想在于,挖矿过程需要大量的内存资源,而这些内存资源在通用硬件(如GPU)上更容易获取和利用,而在专用ASIC上则难以高效实现。

在Ethash算法中,矿工在进行哈希运算前,需要先从庞大的“DAG”(有向无环图,也称为“数据集”)中加载数据到内存中,DAG是一个随着以太坊网络发展而不断扩大的数据集,它包含了历史区块信息等数据,对于每个区块(每15秒一个),DAG会生成一个独特的“缓存”(Cache),大小约为几MB,而完整的“数据集”(Dataset)则要大得多,目前已有数十GB,并且仍在持续增长。

内存消耗的具体体现与计算

ETH挖矿的内存消耗主要体现在两个方面:

  1. DAG数据集加载:这是最主要的内存消耗部分,矿工在开始挖矿前,必须将当前epoch(约4.3万个区块,约38天)对应的完整DAG数据集加载到GPU的显存(VRAM)中,DAG的大小与epoch号相关,计算公式为: Dataset size = 3 * (epoch number) + 30000 GB (约值) 当前(假设epoch为某个数值)DAG大小可能已经达到50GB甚至更多,这意味着,矿工需要配备足够显存的GPU才能容纳DAG,如果显存不足,GPU将无法加载完整的DAG,也就无法参与该epoch的挖矿。

  2. 缓存加载:除了DAG,还有一个较小的Cache(约几GB)需要加载到内存中,Cache主要用于辅助DAG的哈希运算,其大小相对固定,增长缓慢,对硬件要求较低。

一个GPU能够挖矿的最低门槛往往由其显存大小决定,拥有8GB显存的GPU在DAG大小超过8GB后,就无法再用于挖矿,除非通过一些技术手段(如分页)勉强运行,但效率会大打折扣,而拥有12GB、16GB或更大显存的GPU则能更好地适应DAG的增长,保证挖矿的连续性和效率。

内存消耗对挖矿的影响

  1. 决定挖矿门槛与设备选择:显存大小成为选择ETH挖矿GPU的首要考量因素之一,大显存GPU(如RTX 3080 12GB/10GB, RTX 3090 24GB, RX 6800 XT 16GB等)因其能容纳更大的DAG,在挖矿市场上更受欢迎,价格也相对坚挺,而小显存GPU则逐渐被淘汰出ETH挖矿市场。

    随机配图