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<REVISION>-<SEEDHASH>
  • windows: $(HOME)/Appdata/Local/Ethash/full-R<REVISION>-<SEEDHASH>

其中:

  • <REVISION>是一个十进制整数;
  • <SEEDHASH> 是16个小写十六进制数字,指定了纪元的种子散列的前8个字节。

这个目录中可能有多个这样的DAG文件,取决于用户是否及时删除了那些过时的。

内容格式

每个文件应该以8字节的幻数开始,0xfee1deadbaddcafelittle-endian格式(即字节fe ca dd ba ad de e1 fe写入

Ethash算法期望DAG作为uint32s(4字节无符号整数)的二维数组,具有维数(n×16),其中n是大数。(n从16777186开始并从那里增长)。在幻数之后,DAG的行应该顺序写入文件中,在行之间没有分隔符,并且每个unint32以little-endian格式编码。


猜你喜欢

转载自blog.csdn.net/angciyu/article/details/80433255