在数字货币领域,以太坊 1.0 所采用的 PoW 算法具有神秘性与独特性。它与其他算法相结合后产生的变种,存在许多值得深入探究的方面,无论是其与内存之间的特殊关系,还是其对抗 ASIC 的相关策略等。

PoW算法与内存关联

传统的 PoW 算法不太注重内存这一因素。以太坊 1.0 中的 PoW 算法,其计算效率与 CPU 基本无关,而是与内存大小和带宽有关。比如一些常规大规模部署的矿机芯片,本想通过共享内存来提升挖矿效率,但却无法获得线性或超线性增长,这就是它区别于传统算法的特别之处。实际情况是,全客户端和矿工需要存储 1GB(初始大小)的 DAG 数据集,并且在挖矿时还得根据需要从其中获取数据。

这种内存关联在轻客户端上有所体现。轻客户端只需存储 cache 便可进行高效校验。在实际操作场景中,仅凭借 cache 中的少量数据,就能算出 DAG 指定位置的数据,从而保证了轻客户端即便不存储完整的 DAG,也依然能够在挖矿工作中起到应有的校验作用。

对比传统算力敏感型算法

比特币将 hash 算法应用于 PoW,许多数字货币也照抄了这一设计。拿 MD5 作为例子,这类已经被弃用的算法,在设计之初是对算力敏感的。在数字货币发展的早期,算法更倾向于一种思维模式,即把计算资源当作瓶颈,比如主频越高的 CPU,其进行 Hash 的速度就越快。

以太坊 1.0 的 PoW 算法是另寻途径。过去算力敏感算法处于主流地位,之后人们察觉到这种情况会过度依赖计算能力,为了摆脱这种不利局面,便开始关注存储依赖,也就是内存依赖,这是以太坊 PoW 算法产生的一个重要原因背景。

IO饱和策略对抗ASIC

ASIC 在数字货币挖矿领域一直存在争议。以太坊 1.0 的 PoW 算法运用了 IO 饱和策略以对抗它。此策略使得内存读取成为采矿的限制因素。如此一来,那些计算能力极为强大的 ASIC 设备便无法施展其在算力方面的巨大优势。

以实际的挖矿情况为例,若一个挖矿团队在挖矿时过度将精力投入于提升运算速度,却忽视了对内存读写速度的优化,那么在以太坊挖矿中,他们是无法获取到优势的。只有平衡好运算和内存读写的能力,才能够提高挖矿效率。而这一策略在很大程度上对挖矿生态的公平性起到了保障作用。

DAG的两个重要特点

ETH以太坊Pow算法分析!以太坊挖矿源码解析

DAG 在该算法中极为重要。它具备了内存难解以及内存易验证这两种特点。计算每一个 nonce 仅仅需要 DAG 的一小部分,然而采矿过程必须存储完整的 DAG。在通常的时间内,不能每次都计算 DAG 的子集,不过验证过程是可以计算子集的。

从实际的运行情况来看,如果 DAG 数据出现问题,像部分数据丢失或者出错这类情况,那么整个挖矿或者验证的工作就会遇到阻碍。算法通过保证对 DAG 的正常访问和使用,以此来确保系统能够稳定运行。

以太工坊挖矿_以太坊挖矿_挖以太坊选什么矿池

DAG的生成与等待时间

挖以太坊选什么矿池_以太工坊挖矿_以太坊挖矿

DAG 的生成需要耗费较多时间。其生成仅取决于区块数量,在每个 epoch 过渡之际,倘若按照需求去生成 DAG,那么在新的 epoch 第一个区块产生之前,就需要等待很长时间。接着,我们能够预先把 DAG 计算出来,以此来避免等待时间过长的情况。

以某些小型以太坊矿场为例。在配置设备以及设置程序的过程中,如果没有预先计算好 DAG,那么每当一个 epoch 过渡的时候,就有可能出现挖矿停滞的状况。在这个期间,就会导致利润的损失。

以太坊挖矿_挖以太坊选什么矿池_以太工坊挖矿

算法的具体计算过程

以太坊 1.0 中的这个算法要依据程序来生成特定数据。每个 epoch 的 seed 是固定不变的。最后通过 cache 来计算 DAG,light 参数用于保存 cache 数据。DAG 需被存储到文件中,并通过 mmap 映射到内存里。矿机获取当前块头部数据的 hash 值,若此 hash 值满足特定条件,挖矿就完成了;若不满足,就需重新更改 nonce 值,然后再次调用算法。

ETH以太坊Pow算法分析!以太坊挖矿源码解析

很多矿工在实际操作时,会依据这些规则步骤来定义自身的挖矿流程。倘若对流程的理解不够清晰,亦或是在操作过程中出现错误,那么就有很大可能会致使挖矿失败,或者使得挖矿效率变得低下。

你认为以太坊 1.0 的 PoW 算法在数字货币未来的发展进程中将会处于何种地位?期望大家踊跃点赞,踊跃分享,并且在评论区展开互动。