区块链 工作量证明 POW
工作量证明(Proof Of Work
,简称POW
),就是一份用来确认你做过一定量的工作的证明。监测工作的整个过程通常极为低效,而通过对工作结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。比如现实生活中的毕业证、驾驶证等等,也是通过检验结果的方式所取得的证明。
工作量证明系统,是一种应对拒绝服务攻击(DOS)和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。这个概念由 Cynthia Dwork 和 Moni Naor 1993年在学术论文中首次提出。而工作量证明(POW
)这个名词,则是在 1999 年 Markus Jakobsson 和 Ari Juels 的文章中才被真正提出。
1. 主流 POW 共识使用的哈希算法
实际不同的POW
共识的核心就是不同的哈希算法,已经有很多Hash
函数被设计出来并广泛应用,不过 Hash 函数一般安全寿命都不长,被认为安全的算法往往没能使用多久就被成功攻击,新的更安全的算法相继被设计出来,而每一个被公认为安全可靠的算法都有及其严格的审计过程。在币圈中我们经常说某某币发明了某种算法,其实主要都是使用那些被认证过的安全算法,或是单独使用,或是排列组合使用。
SHA256
SHA-2
,名称来自于安全散列算法2(Secure Hash Algorithm 2
)的缩写,一种密码散列函数算法标准,由美国国家安全局研发,属于SHA
算法之一,是SHA-1
的后继者。SHA-2
下又可再分为六个不同的算法标准。包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。
SCRYPT
Scrypt
是内存依赖型的POW
算法,莱特币采用此算法。第一个使用Scrypt
算法的数字货币是Tenebrix
,而后该算法被莱特币使用。莱特币创始人李启威在莱特币创世帖中介绍了莱特币采用的共识机制,挖矿算法,发行总量,挖矿难度等相关重要信息。李启威说明了莱特币所使用的挖矿算法为数字货币Tenebrix
所使用的Scrypt
算法,是一种符合PoW
共识机制的算法。Scrypt
算法过程中也需要计算哈希值,但是,Scrypt
计算过程中需要使用较多的内存资源。
其它使用Scrypt算法的数字货币还有数码币(DigitalCoin
)、狗狗币(DogeCoin
)、幸运币(LuckyCoin
)、世界币(WorldCoin
)等。
串联算法
重新排列组合是人类一贯以来最常用的创新发明方法。很快,有人不满足于使用单一Hash
函数,2013年7月,夸克币(Quark
)发布,首创使用多轮Hash
算法,看似高大上,其实很简单,就是对输入数据运算了9次hash
函数,前一轮运算结果作为后一轮运算的输入。这9轮Hash共使用6种加密算法,分别为BLAKE, BMW, GROESTL, JH, KECCAK和SKEIN
,这些都是公认的安全Hash
算法,并且早已存在现成的实现代码。
这种多轮Hash一出现就给人造成直观上很安全很强大的感觉,追捧者无数。现今价格依然坚挺的达世币率先使用11种加密算法(BLAKE, BMW, GROESTL, JH, KECCAK, SKEIN, LUFFA, CUBEHASH, SHAVITE, SIMD, ECHO
),美其名曰X11,紧接着X13,X15这一系列就有人开发出来了。
S系列算法实际是一种串联思路,只要其中一种算法被破解,整个算法就被破解了,好比一根链条,环环相扣,只要其中一环断裂,整个链条就一分为二。
并联算法
Heavycoin(HVC)
是第一个做了尝试的并联算法,其原理如下:
- 对输入数据首先运行一次
HEFTY1
(一种Hash
算法)运算,得到结果d1 - 以
d1
为输入,依次进行SHA256
、KECCAK512
、GROESTL512
、BLAKE512
运算,分别获得输出d2
,d3
,d4
和d5
- 分别提取
d2-d5
前64位,混淆后形成最终的256
位Hash结果,作为区块ID。
之所以首先进行一轮HEFTY1
哈希,是因为HEFTY1 运算起来极其困难,其抵御矿机性能远超于SCRYPT
。但与SCRYPT
一样,安全性没有得到某个官方机构论证,于是加入后面的四种安全性已经得到公认的算法增强安全。
对比串联和并联的方法,Quark、X11,X13
等虽使用了多种HASH
函数,但这些算法都是简单的将多种HASH
函数串联在一起,仔细思考,其实没有提高整体的抗碰撞性,其安全性更是因木桶效应而由其中安全最弱的算法支撑,其中任何一种Hash
函数遭遇碰撞性攻击,都会危及货币系统的安全性。
HVC
从以上每种算法提取64
位,经过融合成为最后的结果,实际上是将四种算法并联在一起,其中一种算法被破解只会危及其中64
位,四中算法同时被破解才会危及货币系统的安全性。
ETHASH
Ethash 是以太坊上面使用的 POW算法。
2. POW算法存在的问题
- 算力竞争的设计导致了集中化的矿池:尽管PoW的目的是为了保证系统可以去中心化的运行,然而系统运行到现在,却事实上形成中心化程度很高的五大矿池。五大矿池垄断了世界上90%以上的算力,这可能导致大矿池破坏整个网络的行为。
- 算力竞争的设计导致了大量的能源消耗: 另外,PoW系统需要产生大量的能源消耗:比特币挖矿比159个国家消耗的能源还多;目前77.7%的全球比特币网络算力仍在中国境内;受益于内蒙古和四川两地充沛的电力资源,中国拥有世界上最多的比特币矿场;到2019年7月,比特币网络将需要比美国目前的用电量更多的电力;到2020年2月,它将使用和今天全世界一样多的电力。
- 业务处理性能低下:尽管投入了大量的能源支持系统的运行,但这些能源消耗绝大部份是用于工作量证明中的hash运算,处理交易业务的性能则非常低,例如比特币每秒只能进行大约7笔交易,以太坊每秒10-20笔。
下一章:Tornado.Cash 以太坊混币器
Tornado.cash 在 Goerli 测试网上有部署,因此测试时切换到 Georli 测试网即可:首先先进行存款操作,成功之后,需要留“凭证”,浏览器会自动保存这个凭证到 ...