打字猴:1.703867904e+09
1703867904 请回忆一下,我们的初衷是想让可以大幅度提升计算性能的ASIC的开发变得困难。刚性内存解谜只是其中一个方法,还有其他方法。
1703867905
1703867906 遗憾的是,其他的方法都不是很科学,并且没有作为刚性内存函数而被设计过或者攻击过。最有名的一个叫作X11,其实就是把11个不同的哈希函数结合在一起,被一个叫作“黑暗币”(Dark Coin)的另类币所用(后面这个另类币改名叫DASH),在DASH之后也被其他一些另类币所使用。X11的目的是使设计一个有效的ASIC变得十分复杂,因为所有的11个函数的计算模块都要在芯片上被实施。但这其实对硬件设计者来说,也不过是一个小小的不方便而已。如果有一个针对X11的ASIC诞生,那么马上会废弃掉X11的CPU和GPU挖矿。
1703867907
1703867908
1703867909 X11的哈希函数出自何处?
1703867910
1703867911 从2007年至2012年,美国国家标准委员会组织了一个竞赛,这个竞赛选取新的哈希函数家族来作为SHA-3的标准,大量包含了设计文档和源代码的哈希函数作为候选方案被提交。虽然有很多候选方案在竞赛中被证实并不符合密码学安全规范,但其中有24个哈希函数经受住了所有已知的密码学攻击,X11选择了其中的11种,包括获得最终胜利的Keccak[5]
1703867912
1703867913 另外被提出但还没有被实施的一个方法是使用一个移动的目标值来作为挖矿解谜。也就是说,解谜算法本身就会变化,就像比特币里的难度会周期性地改变一样。在理想的状态下,为上一个解谜算法而被优化过的挖矿硬件,对下一个解谜算法不再适用。我们不是很清楚要多久改变一次解谜算法,才能达到我们需要的安全要求。如果这是由另类币的开发者所决定的,这可能就变成了一种不可接受的中心化来源。比如,开发者可以根据他们已经开发出来的一种硬件(或者只是优化过的FPGA),去设计一个相对应新的解谜算法,他们自然就有了针对这个新算法的早期优势。
1703867914
1703867915 或许这些解密算法的顺序能够被自动生成,但这看上去也很难。一个想法是选择一大堆哈希函数(比如24个没有被攻破的基于SHA-3的算法),然后每个用上6个月到一年,在这么短的周期里很难开发新的硬件。当然如果这个顺序安排被事先知道,相应的硬件设计就可以按照函数使用的时间表来进行。
1703867916
1703867917 ASIC的蜜月
1703867918
1703867919 目前市面上还没有针对X11的ASIC面世,即便都清楚这种芯片的生产是可能的,这种现象显示了可能很有用的规律。因为适用X11算法的另类币的市值都不高,简单来说,还没有足够的市场价值吸引人去设计和生产针对X11的ASIC。一般来说,设计ASIC的前期投入都很高(不管是时间还是资金),同时生产单个硬件的利润相对来说比较低。因此,对于新的还没有被证实的加密数字货币,是不值得去投资研发针对性的ASIC,因为在新的硬件设备可用之前这个货币就可能失败了。即使有一个明显的市场需求,也会有硬件研发生产到出货的延迟。第一批比特币的ASIC从最初设计到最终出货花了近一年时间,这在硬件行业里已经算是很快了。
1703867920
1703867921 正因为如此,任何使用新的挖矿解谜算法的另类币都会经历一个ASIC蜜月期,在这段时间内,用GPU和FGPA挖矿(或许CPU挖掘)的利润会比较高。对于永久阻止ASIC的浪潮不太可能,但是吸引个人参与挖矿(并且因此而获得新币)的做法,在新币还处于步步为营的阶段,还是有价值的。
1703867922
1703867923 对于抵抗ASIC的争论
1703867924
1703867925 我们已经可以看到,从长远来讲做到反ASIC是不太可能的。但是也有一些其他意见,觉得从已经被证明的SHA-256解谜算法转变为一个密码学角度偏弱的新解谜算法,会存在一定的风险。甚者,SHA-256的挖矿ASIC已经接近当今硬件效能的极限了。这意味着,ASIC所带来的指数型增长可能结束了,之后SHA-256挖矿也会因此给网络带来最大的稳定性。
1703867926
1703867927 最后,还有一种意见认为,在短期内反ASIC也不好。在第3章中,我们曾探讨过即使一个拥有全网51%算力的矿工,他如若尝试做出很多类型的攻击,也并不理性。因为这样一来会使币值汇率崩溃,使得矿工在挖矿设备上的巨额投资大幅减值,他通过挖掘赚来的比特币的价值也会大幅下降。
1703867928
1703867929 对于一个高度反ASIC的解谜算法,这个安全性的说辞可能会站不住脚。举例来说,一个攻击者可能会暂时租用巨大算力[比如像亚马逊(Amazon)的EC2服务],用它来攻击,然后不会承受任何财务上的损失,因为他们不需要在攻击后继续租用这个服务。相比较而言,对于一个“对ASIC友好”的解谜算法,攻击者就不得不控制一大堆只可以用作加密货币挖矿的ASIC。这样的一个攻击者其实应该是看好比特币未来的发展,做了一个最大限度的投资。按照这个逻辑进行推理的话,为了最大限度地保护安全,或许挖矿解谜算法应该被设计成不仅仅要让有效的挖矿ASIC被设计生产出来,更应该让那些ASIC除了用于加密货币的解谜运算之外,没有任何其他用途!
1703867930
1703867931 [1]也就是花费更多去提高内存的效能,并不能以相同比例去提高解谜的效能。——译者注
1703867932
1703867933 [2]Scrypt是由著名的FreeBSD黑客Colin Percival为他的备份服务Tarsnap开发的。Scrypt不仅计算所需时间长,而且占用内存也多,使得并行计算多个摘要异常困难,因此利用rainbow table进行暴力攻击更加困难。Scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。——译者注
1703867934
1703867935 [3]j是奇数时,减1为偶数,我们存的是有偶数的值的。——译者注
1703867936
1703867937 [4]有关分叉攻击的内容,可以参见本书第5章。——译者注
1703867938
1703867939 [5]Keccak算法为SHA-3的一种加密标准。——译者注。
1703867940
1703867941
1703867942
1703867943
1703867944 区块链技术驱动金融:数字货币与智能合约技术 [:1703863957]
1703867945 区块链技术驱动金融:数字货币与智能合约技术 8.3 有效工作量证明
1703867946
1703867947 在第5章,我们讨论了比特币挖矿的能量消耗(有些人会说是浪费)是个潜在问题,经济学家称之为负外部性。我们估计比特币挖矿要消耗几十万千瓦的电能。所以一个明显的问题是,这些用来解谜运算的工作量是否对社会有所贡献?这其实是一个资源再生循环的问题,也会增加社会对加密数字货币的政策支持。当然,这个解谜算法也必须满足几个基本的要求,才能够在一个共识协议里被使用。
1703867948
1703867949 以前的分布式计算项目
1703867950
1703867951 在比特币诞生好多年之前,就有利用空闲的电脑[或者叫“空闲周期”(spare cycle)]来做一些其他工作的想法。表8.1列出了最受欢迎的几个志愿者运算项目。所有这些项目都有一个特性,使得它们适合成为解谜算法的运算。具体来说,它们需要解决的都是一种“大海捞针”型的问题,可能的答案存在于一个非常大的空间(或者说范围),搜索空间的每一小部分都可以进行并行的快速验证。最有名的例子是在SETI@home网站上,志愿者们被分配一小段无线电信号,用闲置的个人电脑来分析这段信号可能存在的模式以寻找外星文明,同时分布式计算网站(distributed.net)的志愿者被分配一小段可能的私钥来进行验证。[1]
1703867952
1703867953 志愿者运算项目,成功地把一个很大的计算任务拆分成小份的任务,然后分配给每一个志愿者进行运算检查。事实上,这种模式在一个特别的叫作伯克利开放式网络计算平台(Berkeley Open Infrastructure for Network Computing,简称BOINC)上是很普遍的,这个平台被开发出来就是用来给不同的个体分发小份额计算工作的。
[ 上一页 ]  [ :1.703867904e+09 ]  [ 下一页 ]