ProgPoW算法被曝漏洞,以太坊ASIC挖矿已不可阻挡?

      最后更新:2020-03-07 15:15

      免责声明:本文旨在传达更多市场信息,不构成任何投资建议这篇文章仅代表作者的观点,并不代表火星财经的官方立场。对于最近备受争议的ProgPoW算法,独立开发人员kikx透露了今天算法中的一个漏洞,这使得它不可能真正实现抗ASIC攻击的目标。kikx补充说,这个漏洞是新发现的,不会对以太网广场目前使用的Ethash算法构成威胁。作为对

      的回应,以太网开发商Philippe Castonguay评论说,

      “看起来目前ProgPoW的实现可能不是反专用集成电路的。基本上,ProgPoW散列函数使用64位种子,并且专用集成电路可以“容易地”执行,而不是像预期的那样挖掘矿井这需要更多的关注来正式确认“

      从那以后,以太网硬分支协调员詹姆斯·汉考克已经确认了这个漏洞的存在,并表示感谢

      这个漏洞扩大了吗?

      让我们来看看kikx披露的细节:

      ProgPoW的设计缺陷

      ProgPow有一个设计缺陷:

      64位种子太小,这使得专用集成电路可以在没有存储访问的情况下计算散列

      初步实现

      感谢chfast提供的可读实现!

      progenpow散列函数定义为:

      result hash(const epoch _ context & context,int block_number,const hash256 & ampheader_hash,uint 64 _ t nonce)no except { const uint 64 _ t seed = keccak _ Prog pow _ 64(header _ hash,nonce);常量hash256 mix_hash = hash_mix(上下文、块号、种子、计算数据集项2048);const hash 256 final _ hash = keccak _ Prog pow _ 256(header _ hash,seed,mix _ hash);返回{final_hash,mix _ hash };}

      专用集成电路友好计算

      假设块头块头和块号块号

      然后,执行以下3个步骤:

      将seed固定为任何64位值,然后计算mix _ hash = hash _ mix(块号,SEED);搜索额外的随机数,以便头哈希满足困难条件;搜索随机数,使keccak _ progen pow _ 64(header _ hash,随机数)= seed

      步骤1,计算固定种子和块号的混合散列因为混合散列被设计成种子和块号的函数,所以我们得到了一个有效的三元组(种子、混合散列、块号)现在,我们的目标是找到满足以下两个条件的头散列和随机数:

      (a) keccak _ progpow _ 64(头散列,随机数)= seed(二)keccak_progpow_256(头_散列、种子、混合_散列);

      记住,我们可以通过修改额外的随机数(使用以太网广场中的引渡数据)来生成任意数量的头哈希因此,条件(b)很容易在步骤2中完成现在,我们有一个固定的(头散列、种子、混合散列、块号),但是随机数是自由的最后,第3步扫描随机数的条件(a)由于种子只有64位长,条件(a)仅提供64位安全性,步骤3可由专用集成电路执行

      计算成本

      有四个函数:keccak_1600、keccak _ progenpow _ 64、hash_mix和keccak _ progenpow _ 256成本可以通过调用所需的函数来计算,这取决于网络的难度

      在正常的散列计算中,需要keccak_1600调用来从block_header计算header_hash,并且对每个随机数值依次调用其他函数

      在ASIC哈希计算中,第1步需要一个hash_mix调用,第2步调用keccak_1600和keccak _ progenpow _ 256,第3步调用keccak _ progenpow _ 64

      因为哈希混合在我们的专用集成电路计算中只被调用一次,所以我们可以使用主机处理器来计算哈希混合其他函数都是keccak哈希函数,不需要内存存储,可以在专用集成电路上轻松计算。

      我们需要在keccak_progpow_64row中比较d和2 64简而言之,更大的D将使专用集成电路更有利可图很难估计阈值,但我认为目前的难度(> 2 50)已经足够大了

      演示

      演示位于此存储库中

      $ git克隆https://github.com/kik/progpow-exploit.git $ cd程序-利用$ mkdir构建$ CD构建$ cmake..$赚$美元。在本演示中,种子被截断为24位宽度,以便在中央处理器上运行。参见代码

      测试代码很简单

      在这里被定义为search_asic

      。由于这个漏洞的存在,以太网矿工能松一口气吗?

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类