浅析挖矿机制(pow)里所采用的算法

2019 年 4 月 29 日 0 条评论 1.26k 次阅读 0 人点赞

区块链世界通过共识算法、加密、点对点网络以及奖励机制等,可以形成一个自治的社区,形成一个通过挖矿机制(POW)来达成一种不通过中心机构来达成的信任,最终实现点对点的价值流通。

浅析挖矿机制(pow)里所采用的算法

我们介绍一下挖矿机制里所采用的各种算法:

【Hash函数】
我们经常说的POW算法本质是一个Hash函数。Hash函数是一个无比神奇的东西,学习比特币应该从学习Hash函数入手,理解了Hash函数再去学比特币原理将事半功倍,不然将处处感觉混沌,难以开窍。已经有很多Hash函数被设计出来并广泛应用,不过Hash函数一般安全寿命都不长,被认为安全的算法往往没能使用多久就被成功攻击,新的更安全的算法相继被设计出来,而每一个被公认为安全可靠的算法都有及其严格的审计过程。

【SHA256算法】
SHA是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院 (NIST) 发布的一系列密码散列函数,经历了SHA-0,SHA-1,SHA-2,SHA-3系列发展。2012年Keccak算法最终获胜成为唯一官方标准SHA-3算法,但还有四种算法同时进入了第三轮评选,分别是:BLAKE, GrøSTL, JH和SKEIN,这些算法其实也非常安全,而且经受审查,被各种竞争币频繁使用。

比特币采用SHA256算法,该算法属于SHA-2系列,被公认为最安全最先进的算法之一。随着比特币被更多人了解,大家开始对SHA256的安全性发表各种意见,到目前为止,没有公开的证据表明SHA256有漏洞,SHA256依然牢牢抗住保卫比特币安全的大旗。当然大,没有永远安全的算法,SHA256被替代是早晚的事。

【SCRYPT算法】
与SHA256算法相比,SCRYPT占用的内存更多,计算时间更长,并行计算异常困难,对硬件要求很高。很显然,SCRYPT算法具有更强的抵御矿机性,莱特币还将区块时间改为2.5分钟,在那个山寨币还凤毛麟角年代,莱特币依靠这两点创新大获成功,长期稳坐山寨币第一宝座位置。后来有人在SCRYPT的基础上稍作修改形成Scrypt –N算法,改进思路都一样,都是追求更大的内存消耗和计算时间,以有效阻止ASIC专用矿机。很快,莱特币的成功催生了各种各样的算法创新,2012至2014年间,算法创新一直都是社区讨论的热门话题,每一个使用创新算法的币种出现,都能刮起一阵波澜。

【串联算法】
重新排列组合是人类一贯以来最常用的创新发明方法。很快,有人不满足于使用单一Hash函数,2013年7月,夸克币(Quark)发布,首创使用多轮Hash算法,看似高大上,其实很简单,就是对输入数据运算了9次hash函数,前一轮运算结果作为后一轮运算的输入。这9轮Hash共使用6种加密算法,这些都是公认的安全Hash算法,并且早已存在现成的实现代码。