有不少矿友遇到或关注到了一个情况 —— 因以太坊DAG 文件的日益增大,使得 1063 等显卡因显存不足问题无法挖矿。

据说这一情况将随着以太坊的发展,在以后的很长一段时间里不停地敦促我们增加显卡的显存。

那么 DAG 到底是什么呢?它的增大为什么会让显卡无法工作?

DAG 是有向无环图的英文缩写,指的是任意一条边有方向,且不存在环路的图。

例如下面这张示意图中 ,我们假设有一条数据需要在 DAG 中传输,它可以从点 1 传到点 2,也可以从点 3 传到点 6 。

但是却没有任何直接或者间接的途径可以再把信息从点 2 传回点1,点 6 传回点 3,这种传递方法确保了数据的唯一性,该技术被广泛地应用在加密领域中。    

                            

其实从最原始的数据传输模式上来说,DAG 和区块链的区别是非常大的。

区块链的数据传输模式是将各类信息打包成为区块,再通过“链”来进行传输。出于安全考虑,在没有出现分叉等情况的正常状态下,整个网络只能有一条主链。

而 DAG 技术的数据在传输之前并没有打包这一操作,它直接将一个个信息链接成有向无环图,通过信息之间的一些关联性来进行传递,最关键的是有向无环图可以从多个点发送和接收信息,在速度上较传统的区块链有很大优势。


传统区块链的单链传输模式除了传输速度缓慢外,还缺乏应对分叉的手段。为了解决这一系列难题,区块链学者们另辟蹊径,将 DAG 和区块链这两种本来不兼容的技术融合在了一起。

例如以太坊在 2016 年 6 月份发布的 Dagger-Hashimoto 算法,其核心内容就是 DAG 有向无环图,而目前以太坊正在使用的 Ethash 算法就是通过 Dagger-Hashimoto 算法改良的。

多点传输方式可以明显地提升区块链的数据传输速度,但是 DAG 和传统区块链在结构上存在巨大差异,为了预防双花、重放等网络攻击,区块链需要一条主链来引导工作,无法直接使用 DAG 那样多个平等节点接发信息的方式。

为了解决这一难题,引入 DAG 机制的区块链专家提出了一个新思路。

不同于之前用上一个区块信息验证下一个区块的方式,使用了 DAG 后,每一个新产生的区块都被链接到之前所有的区块上。新区块的验证信息中包含了之前所有区块的加密信息,这就是大家最近经常听到的“ DAG 文件” 。


使用了 DAG 技术之后,矿工在挖矿前需要先到区块链网络上下载该区块链之前所有区块的加密信息,然后才能从这些信息中解答出下一个区块的哈希值。

简单来说,“ DAG 文件”就是区块链提供给矿工们的谜题,而下一个区块的哈希值就是谜底,最快解出谜底的人将获得这一区块的数字货币奖励。

在之前的文章中,老路曾经给大家说过,显卡挖矿使用的是显卡的计算能力,为了能对 DAG 文件中包含的信息进行“解密”,显卡需要把 DAG 的所有内容“放在”自己的显存之中进行运算。

所以想要挖以太坊,显卡的显存首先要大于当前 DAG 文件的体积,这就是为什么近来一些显存较小的显卡无法继续挖取以太坊的原因。

以太坊的 DAG 大小自 2016 年 6 月份引入 Dagger-Hashimoto 算法时的 1GB 开始,以每年约 520MB 的速度增大到了现在的 2.7 G,预计 2020 年底以太坊的 DAG 大小将增加至 4G 。届时,显存小于 4G 的显卡都将无法继续用来挖以太坊。