这个话题其实属于商业机密的,但是由于挖矿算法可以有无穷多种,所以并不影响我们团队自身的商业利益。但是,可以避免狗币悲剧的重演,所以开放讨论还是有好处的。 先简单回顾一下现行算法: SHA256D算法。 中本聪原创。比特币采用的算法,初期一批山寨币都用这个算法。 引入nonce概念,即只改变这一个随机数字,就可以改变输出的HASH值,通过穷举nonce来获得满足难度条件(前面有N个0)的HASH值。 SHA256D是2次SHA256运算,是按照固定方式对输入数据和一些参数的加减和或异或运算。 由于POW的穷举法本质,所以通过制造大量SHA256D运算模块同时并行运算,可以获得远高于CPU少量线程的串行运算的效率。即矿机。 同样是28nm技术,比特币矿机的效率已经达到电脑的上百万倍。(此数字我没有精确计算,勿喷) Scrypt算法 莱特币原创。 该算法计算POW值采用了密码加密的Scrypt算法。设置N为1024,P为1,R为1,进行大量的迭代运算.该算法的设计目的本身就是防止硬件并发暴力破击的,所以具有很强的降低矿机效率功效。 该算法的设计原理是占用内存数量和计算步数一样多。(占有内存的最大值也就是计算步数了,没有更多了。即该方法的潜能已经挖掘到极限,没有提升空间了)因而,制造矿机不仅要有运算单元,还需要有内存单元,这样就垫高了矿机的成本。 虽然是成本垫高,但是毕竟矿机是可以实现的。据银鱼矿机的数据,按照售价计算,银鱼scrypt矿机的单位成本效率是显卡的12倍;而如果按照成本计算,可达100倍。而银鱼矿机是65nm的,如果提升到28nm,效率可望提高5倍,达到500倍。虽然远不及SHA256D的百万倍,但是矿机依然可以横扫个人电脑,one CPU one vote 的民主还是被暴力集权了。 X11算法 将11种不同的(我就不罗列了)加密算法串行进行运算,获得POW值。 这个方法只是增加了矿机的难度,但是并不会降低矿机的效率值。因为虽然矿机慢了11倍,但是用CPU或者GPU也同样慢11倍。而占有内存的比例并未比Scrypt算法有提高。 抵抗矿机的关键 抵抗矿机的关键,要基于原理——CPU+内存和并发ASIC的本质区别。 大家知道CPU是一个好大的芯片,但是一个时钟只能处理64位的数据。而同样大小的ASIC,有多少个模块,一个时钟可以处理多少个数据。这就是矿机效率高于CPU的根本原因。 但是,INTEL不是傻子,不可能花大价钱造一个效率极其低下的东西;全球用户更不是傻子,不可能花大价钱买一个效率极其低下的东西。 那么,CPU的价值在哪里呢?就是可以随时改变工作任务。而ASIC的代码是直接写到硬件里的,不可能改。 所以,抵抗矿机的更为有效的方法,是程序运行过程中不断改变代码。 可变代码程序其实并不少见,最主要用于程序加密领域。这种加密过程序在运行时,根据下一步要运行的功能,找到对应的加密过的代码,对该段代码进行解密,然后再执行该段代码。即:可变代码程序会自己改写自己的代码。 如果能够设计一个可变代码的POW算法,那么矿机就彻底没戏了:根据每一步算出的值决定下一步的运算代码;然后根据下一步的运算代码算出下一步的值,再根据下一步的值决定下下一步的运算代码。而ASIC的代码是写死的,不可能改,彻底封杀!GPU\PFGA也一同被封杀。只有DSP有一点点空间,但是DSP本质上也是一个CPU。 我不是数学家,当下还不能给出一个完美的算法。(给出一个算法很容易,但是要证明该算法是不可逆向运算的,就很难) 此思路,供大家探讨吧。 原文转自:http://bit-sky.com/index.php/2013-12-15-15-08-16/2014-01-27-19-39-08/1057-pow |