区块链危机!危险的共识算法
就在几天前,被誉为“中国以太坊”的NEO发生了因为出块失败导致整个平台宕机、全网疑似瘫痪的严重情况。
业内爆料称,导致NEO瘫痪的原因是其共识算法机制问题,正是其底层漏洞导致了瘫痪的发生。
国外的加密货币研究者Eric Wall指出,NEO的DBFT算法底层设计存在致命的缺憾,甚至吐槽项目方没有设计共识算法的经验。
但同时我们询问了NEO相关内部人士,得到的答复是由于P2P通信协议问题引发的,且危机已在问题出现1小时之后解除。
让我们撇开这些理不清的内幕不谈,转而来思考一个新问题:你有没有想过,区块链的最底层技术,其实是有可能存在安全隐患的?
共识算法是区块链的基础技术,也是隐患之源
业内颇为流行的一个说法是:比特币是区块链的第一个应用,这个说法实际上等于承认了先有区块链而后有比特币,比特币是区块链技术发展的产物。不知道中本聪当初思考创造比特币的时候脑里是否先有一个完整的区块链技术设想?
但是,其实我们在中本聪当年所写的白皮书Bitcoin: A Peer-to-Peer Electronic Cash System里,却找不到一个叫Blockchain的词。只是后来,人们将这个创造比特币的原理视为一种全新的技术,已经是多年后的事情了。
区块链技术可以看作是创造一种点对点的公开账本的技术,它使用共识算法(比特币使用的是PoW:Proof-of-Work)激励矿工并维护网络的安全。对于这类公开账本系统来说,共识算法尤为重要,它涉及到区块链一些最重要的概念。在比特币之后,不同的共识算法相继出现,如Proof-of-Stake(PoS),Proof-of-Burn(PoB)等。
但是,人们也一直在问:比特币的价值来自哪里?它是否像法币一样具有强背书?会不会一夜之间变得分文不值?
首先我们不去讨论比特币的实际价格究竟是怎么形成的,这不是我们讨论的重点,但是有一点却是无法绕过去的:
如果提供这个虚拟货币的网络本身有安全问题,如双花、被盗、被第三方控制,则无论在它上面附加了如何多的价值,都会顷刻间化为乌有。
区块链网络的安全很大程度上由共识算法决定的,PoW是目前为止被实践证明最为安全的共识算法;自比特币诞生10年以来还没有发生因共识算法而导致的安全事故。
但是,尽管如此,却也不代表PoW是绝对安全的。目前业内普遍担心,未来的量子计算机会对比特币所使用的密码学技术带来巨大的挑战。另外最为重要的是,区块链如果应用在具体的行业上,还需要解决一些根本的技术难题。其中最大的两个技术难点就是安全性和扩展性。
PoW共识算法太耗能,PoS方案的安全性得不到证明
Proof-of-Stake(PoS)是由比特币社区Bitcointalk成员Quantum Mechanic在2011年7月提出的。Sunny King创造了第一个使用PoS共识算法的加密货币—Peercoin。除此之外,Bitshares的创始人BM(Daniel Larimer)改进了PoS算法,推出了DPoS,并将此算法应用到他后来的项目Steem和EOS上。
Vitalik也在正努力完善Casper算法并打算将以太坊完全转移到PoS上,Casper可以看作是持有人民主制。无论是Peercoin使用的最原始的PoS算法还是DPoS,在密码学界的学者眼里看来都是没有经过严格数学证明的共识算法,安全性存在很大的疑问。
仅仅从文章开头提及的“NEO全网疑似瘫痪”的事件中(先姑且不论是不是共识算法导致的问题),我们就可以想象:这种安全隐患一旦爆发,所带来的灾难性后果将有多严重。
为了更好理解PoS共识算法,我们可以这样去理解,共识算法的设计核心在于设计一个随机数产生器,防止任何人可以猜到谁是下一个区块的打包者。PoW在这方面有天然的缺陷,因为网络延迟的原因,前一个区块打包者在竞争下一区块的打包权利时具有一定的优势,而PoS方案很大程度上避免了这个缺陷是因为不同的设计机制,但早前的PoS算法存在其它的问题。
共识算法:三难问题和“富者恒富,穷者恒穷”
在共识算法的设计上,存在着一个著名的Trilemma(三难问题),这就是Secure(安全性)、Scalability(可扩展性)和Decentralization(去中心化)三者不可兼得,至少目前几乎所有的区块链项目都遇到这种挑战。
Vitalik批评EOS的设计是牺牲了去中心化来得到号称上百万次TPS(Tx Per Second)的能力。EOS所采用的DPOS似乎是目前其它很多项目所喜欢的选择,但是DPOS也存在着上面所述的问题,面临着诸多批评。
我们先来看看它的安全性如何:在DPOS机制里,一旦发现有作恶的“代表”(节点),就会被剔除,以后不能参与这个“代表”的选举,但是因为“代表”们本身不需要投入(stake),所以损失不大;但是存在一种这样的可能性,如果是一次有预谋的伏击,攻击者可以选出大量的平时表现良好的自己的“代表”,而在特定的时间这些“代表”一起发动攻击,就可能发生控制整个网络的可能性;
或者大多数人同时作恶(如对项目方或官方开发者极度不满意),也避免不了这种极端情况的发生。另外,这类PoS设计避免不了分叉的冲动,因为用户可以同时在两条链上获得奖励。
同时,前期的PoS算法设计都存在一个“富者恒富,穷者恒穷”的问题,因为经典PoS算法的原理是“谁拥有更多的币谁就有更大的话语权”。这当然可以狡辩,譬如你也可以去买大量的币来竞争啊,而且还可以把价格抬上去,因为有需求的人越来越多,看上去好像是一个多赢的局面。这样是不是币价可以无限的抬上去?因为大家都hold住币去进行“赌博”(bet),就为了得到相应的奖励,而市场上流动的币就越来越少了。
这显然不符合经济学基本原理。
极端的一些情况是假如几个人或组织拥有80%以上的token,就可以控制整个网络了?这在一些团队拥有绝大部分token的项目里问题尤其突出,如果一个公共的区块链平台由几个这样的大户控制着,这跟区块链的去中心化理念是相悖的。
此外,这样的平台会失去公信力,时间久了人们会选择离开,这又会把它的价值打回原形。Ethereum的Casper也存在同样的问题,它甚至设置了一个最小参与量:1250ETH!那就是等于说穷鬼就不要指望了。
如果你的银行客户经理告诉你,你的存款要达到1000万人民币才会有利息,你会怎么选择?
无论是DPOS,还是Casper,都会一定程度上导致中心化。
下一代共识算法Wuji PoS,有望解决安全隐患?
正是基于以上种种安全隐患,业界纷纷开始寻求一种更安全的共识算法,试图解除区块链技术中的固有缺陷。有消息称,Gödel Labs项目的工程师们正在开发一种被誉为下一代PoS共识算法或PoS 2.0共识算法:Wuji PoS。
据业内人士透露称,Wuji PoS是一个可证明的安全共识算法协议,被用来创建一个可扩展的和安全的区块链网络。未来,它将被应用在一个全新的计算平台Tangrum上。