主页 > imtoken国际版 > 加密货币十六:ETH挖矿算法

加密货币十六:ETH挖矿算法

imtoken国际版 2023-01-17 10:36:31

虽然挖矿的过程不会创造任何实际价值,但挖矿本身维护了系统的稳定性。

如前所述,比特币系统的挖矿算法存在问题。矿机ASIC芯片的专业化,让普通电脑用户难以参与。这就导致了挖矿中心化的局面,与“去中心化”的概念背道而驰。

因此,包括以太坊在内的许多加密货币都具有 ASIC 抵抗力(抵抗专业矿工)。 ASIC芯片与普通计算机相比,计算能力强,但内存访问性能差别不大。因此,常用的方法是Memory Hard Mining Puzzle,增加了对内存访问的需求。

莱特币

在介绍以太坊的抗ASIC设计之前,我们先介绍一下莱特币的设计思路:

莱特币的谜题基于 Scrypt。 Scrypt 是一种对内存性能要求较高的哈希函数,之前用于计算机安全密码学领域。

由于hash函数的输出无法提前预测,看起来是很多随机数据,所以称为“伪随机数”。

eth算法

如果数组足够大,对于矿工来说,必须保存数组以便查询,否则每次计算的不仅是位置eth算法,还要计算Seed 整个数组数据可以查询到对应位置的数据。这大大增加了矿工的计算复杂度。当然,矿工可以选择只保存部分数据,例如:只保存奇数仓位数据,偶数仓位可以在需要时根据之前的奇数仓位数据计算,从而内存空间大小减半(计算复杂度增加一点,但内存减半)。

核心思想:除了执行操作,还需要增加其对内存的访问,以免对ASIC芯片不友好。

但在实践中,莱特币系统设计的数组大小只有 128K。这是因为这种设计方法对 Puzzle 验证不是很友好。为了验证拼图,还需要存储数组。因此,对于系统中绝大多数的轻节点,阵列应该很小。

但是莱特币的设计并没有按预期工作,即 128k 对 ASIC Resistance 来说太小了。此外,莱特币和比特币的另一个区别是出块时间。莱特币是 2.5min,是比特币的 1/4。除了这些不同,这两种货币基本相同。

以太坊挖矿算法的基本思想

以太坊的概念与莱特币相同,都是记忆硬矿拼图,但具体设计与莱特币不同。在以太坊中,设计了两个数据集,一大一小。小缓存为 16MB,大数据集为 1G 数据集(DAG)。 1G 数据集是从 16MB 数据集生成的。 (注:以太坊中这两个数组的大小不是固定的,因为考虑到计算机内存的不断增加,需要定期增加这两个数组)

eth算法

为什么要设计一大一小两个数据集?

为了方便验证,轻节点可以节省16MB的Cache进行验证,而矿工需要存储1GB的大数据集才能更快地挖矿,减少重复计算。

缓存与DAG的关系

解谜,即以太坊挖矿过程:

根据区域块头和里面的Nonce值计算一个初始hash,映射到一个初始位置A1,读取位置A1的数和下一个相邻位置A2的数eth算法,按照下式操作两个数,计算下一个位置B1,读取B1和B2位置的数,以此类推,迭代读取64次,一共读取128个数。最后,计算一个哈希值并与挖掘难度目标阈值进行比较。如果不是,则更换Nonce,重复上述操作,直到最终计算出的hash值满足难度要求(注意当前区块可能已经被挖出)。

eth算法

理解以太坊挖矿算法的伪代码

@ >

eth算法

目前以太坊挖矿主要基于GPU,可见其设计比较成功,这与以太坊设计的挖矿算法(Ethash)所需的大内存有很大关系。与128K相比,1G的大阵列比128K大8000多倍,甚至16MB也比128K大100多倍。可以看出内存需求有很大的差距(而且两个数组的大小还会继续增长)。

当然,以太坊之所以要实现ASIC Resistance,除了挖矿算法设计,还有一个原因,就是有望从工作量证明(POW)转向权益证明(POS)。

权益证明:根据权益的投票达成共识。类似于股份制的有限共识,投票是根据股份数量来决定的。权益证明不需要挖矿。

对于 ASIC 矿机制造商来说,这就像悬在他们头上的达摩克利斯之剑。因为ASIC芯片的开发周期很长,成本也很高,如果以太坊转入权益证明,所有投入的研发费用都将付之东流。但实际上,以太坊仍然是 POW 挖矿的共识机制。在设计之初,以太坊开发者设想从 POW 切换到 POS,为了防止矿工不愿意切换,他们埋下了一颗“难度炸弹”。但截至目前,以太坊还是基于POW共识机制。

eth算法

预挖

以太坊采用的预挖机制。这里的“预挖”并不是挖矿,而是在开发以太坊时为开发者预留一部分币种。以太坊的早期开发者现在非常富有。

与Pre-Mining、Pre-Sale相对应,Pre-Sale是指出售预留的货币用于后续开发,类似于拉风险投资或众筹。目前,加密货币的种类很多,其中一些是通过Pre-Sale来获取资金的。这个时候买的话,如果以后该币成功了,也可以获得很多好处,但真正成功的币只有少数。这就是它的风险。

以太坊总供应量:

饼图中,蓝色部分都是Pre-Mining生成的(接近3/4),可见掌握技术的重要性。黑色部分是Pre-Mining生成的以太币)区块奖励,绿色为叔块产生的奖励以太币。

另一个角度

也有人认为让普通电脑参与挖矿是不安全的。和比特币一样,让中心化矿池参与挖矿是安全的。为什么?

如果通用计算机也可以参与挖矿参与挖矿将大大降低发起攻击的成本。目前,大型互联网公司可以聚集自己的服务器进行攻击,攻击完成后,这些服务器仍然可以转而运行日常业务。因此,有人认为在矿场之上挖矿,ASIC矿机“称霸天下”是最安全的方式。