Ethash DAG(以太坊ethash算法的数据集)

大家平时在玩 以太坊geth的时候,经常会看到Ethash DAG,比如“Disk storage enabled for ethash DAGs”,就是说允许Ethash DAG存储在磁盘中,那么它到底是什么东东?

Ethash是PoW系统,它需要一个大约1GB的数据集,它就是DAG。这通常需要几个小时才能生成,所以我们倾向于在硬盘中存储它。希望将DAG存储在硬盘中的客户端应符合下面的规范,以便与其他客户端共享缓存:
存储位置
DAG应该存储在一个1GB的转储文件中,存储在一个文件中:

  • Mac / Linux中 $(HOME)/.ethash/full-R-
  • windows: $(HOME)/Appdata/Local/Ethash/full-R-
其中:
  • 是一个十进制整数;
  • 是16个小写十六进制数字,指定了纪元的种子散列的前8个字节。
这个目录中可能有多个这样的DAG文件,取决于用户是否及时删除了那些过时的。
内容格式
每个文件应该以8字节的幻数开始,0xfee1deadbaddcafe以little-endian格式(即字节fe ca dd ba ad de e1 fe)写入。
【Ethash DAG(以太坊ethash算法的数据集)】Ethash算法期望DAG作为uint32s(4字节无符号整数)的二维数组,具有维数(n×16),其中n是大数。(n从16777186开始并从那里增长)。在幻数之后,DAG的行应该顺序写入文件中,在行之间没有分隔符,并且每个unint32以little-endian格式编码。

    推荐阅读