1.2 公有链的澎湃浪潮
1.2.1 引言
无论是《史记》《汉书》,还是其他大多数史书,都是以开创基业的伟人本纪作为开篇,由推动时代汹涌发展的王侯将相、先贤豪杰的传记串联点缀起来的。区块链行业也一样,区块链的星星之火诞生于密码朋克邮件组,随后由行业中的无数探索者们一点一点地艰难推进。
有个比喻很好,区块链世界是一片黑暗的、茫茫不知边际的热带雨林,中本聪第一个点亮了火种,带领着探索者们走进雨林的中央,随后探索者们以此为根据地,向各地进发。有的尝试去右前方,有的向左侧前行,有的为了走得更远,先退回一点又开始横向探索,有的探索者走着走着,还会再分成几小股。但是无论是哪个方向,探索者们的目标都是完全一样的:都是为了走出雨林,把光亮火种传递出去。
直到今日,继承了中本聪衣钵的探索者们仍然在不断探索区块链这片雨林的边界,探索出的面积越来越大,但是未知的领域也越来越多,探索者们时而进行激烈的辩论,时而开始坚毅地合作。有少数的人离开,留下了一个个被证伪的错误方向;有更多的人加入,开辟了一条条有潜力的崭新路线。所有人的目标仍然没变,都在积极扩大着人类对区块链的认知边界。
1.2.2 中本聪的星星之火
第一个点亮火焰的是中本聪,至今人们对他仍然一无所知,甚至不知道他是一个人,抑或是一个团体。中本聪(Satoshi Nakamoto)这个英文写出的日本名字,发音取自日本最常见的姓和名,对应到中文,中本聪这个名字类似于张伟、李强等。
就是这样一个完全匿名的、游离在现实世界之外的中本聪,在发布了《比特币白皮书》后,开始在黑暗中默默地摸索。2009年1月3日,比特币的软件客户端终于调试完毕,中本聪挖掘出了高度为0的比特币创世区块,在黑暗的雨林里点亮了第一束火光。
最开始的道路是昏暗的,很多推测都认为,在比特币的最开始阶段,只有中本聪的一台电脑在孤独地进行比特币挖矿,维持着比特币网络的运转。从很多途径都可以侧面印证这一点,比如比特币的挖矿难度直到2010年年初才出现第一次较大的增长,如图1-4所示。
图1-4 比特币全网难度示意图(来源:btc.com)
第一个认可并帮助中本聪的人,正是1.1.1节中提到的密码学学者、PGP加密的早期开发者Hal Finney。从2013年Hal Finney在Bitcointalk论坛撰写的回忆录[9]中可知,他推断自己可能是第二个运行比特币客户端的人,并在后面收到了中本聪发送来的10枚比特币,因此他也确定自己是第一个收到比特币的人。当然,这也是人类第一次尝试用去中介的方式给他人转账成功。中本聪的一小步,是区块链的一大步。
这一步是很关键的,在比特币诞生前,很多关于加密货币的想法都没有走到这一步。这一步意味着一个最基本的概念——点对点的电子现金系统实现了。资产在链上自由地转移,只受私钥掌控者的控制,不受其他任何干扰和审查,这件事自然意义非凡。
1.2.3 最早的加密货币和区块链社区
有了第一次链上交易,就会有第二次、第三次。为了能和更多人交流比特币,中本聪建立了一个SourceForge论坛,用于讨论比特币。随后于2009年11月迁移到了Bitcointalk.com,如图1-5所示。建立论坛是一个非常正确的决定,因为后来在Bitcointalk上诞生了无数天才的想法,并且时至今日,Bitcointalk仍然是全世界最活跃的加密货币论坛之一。
图1-5 在Bitcointalk上仍然可以搜到中本聪的账户(来源:Bitcointalk.org)
Bitcointalk是比特币通往成功的重要原因之一,它是最早的区块链和加密货币社区,也是迄今为止最大的加密货币社区。在Bitcointalk上,板块涉及很广,不仅包括对比特币技术的探讨,也讨论投机(Speculation)和经济(economics),除此之外,还有竞争币(俗称“山寨币”,英文为Altcoin)的专区。而且随着比特币的声名远扬,Bitcointalk还有各种语言的本地站,如Bitcointalk中文区就出现了很多著名帖子,影响着后来一批又一批极客。
时至今日,很多评论员认为一个新的区块链项目的成功一定要有三驾马车:底层技术过关;经济模型正确;庞大社区支持。比特币的第一驾和第二驾马车都来源于密码朋克的灵感,而第三驾马车就是从Bitcointalk开始的。
Bitcointalk论坛中诞生了无数可能,支持者和将信将疑者对比特币模型进行激烈的交锋,开发者和用户群体为技术改进做出不懈的尝试。这个看似小众圈子的讨论量和精彩程度,和传统世界的各大论坛相比也不遑多让。
1.2.4 价值10000比特币的两个比萨
Bitcointalk中的传奇故事太多,下面挑其中两个来聊一聊。第一件事发生在2010年5月18日,一位ID为laszlo的美国佛罗里达小哥,突发奇想,想让论坛中的网友为他制作或者订购两个比萨送到他家,作为回报,他愿意支付10000枚比特币给对方。
为什么说这是突发奇想呢?因为在这天之前,从未有人用比特币购买过商品。尽管在一些早期比特币交易网站(如成立于2010年3月的bitcoinmarket.com)上,比特币已经有了“价格”,但是这些网站并未被认可。
在这个帖子[10]发出后,laszlo只得到了零散的几个回复,有几位网友给了他一些建议。但是直到四天后,也就是2010年5月22日,才真正有人为laszlo订了两个比萨。一位ID为jercos的小哥订了两个外卖比萨送到了laszlo家,随后laszlo发图表示感谢,如图1-6所示。
图1-6 价值10000枚比特币的两个比萨本尊
这是一个里程碑事件,是比特币第一次被用于支付购买实物商品。为了纪念这具有历史意义的一天,很多人将5月22日亲切地称为比特币的“比萨节”。
关于这个话题还有很多其他有趣的事,第一件事是这位ID为laszlo的网友,实际上极有可能是比特币的第一位GPU矿工,laszlo在接受采访[11]时曾称自己是第一个写出GPU挖矿程序的人(GPU挖矿效率远超传统CPU矿工),这也是他当时拥有这么多比特币的原因。
第二件事还是关于小哥laszlo,他在2018年再次订购了两个比萨,不同的是,这次他尝试了用闪电网络去支付比特币。同样的两个比萨,过去比特币主网转账需要花费10~60分钟,而如今比特币闪电网络只需要几秒钟。
第三件事是关于这件事本身的,在2010年5月22日这一天,10000枚比特币大概价值30~45美元,而两个比萨本身价值约25美元。但是,随着认同比特币的人越来越多,比特币的价格迎来了暴涨,laszlo也成了bitcointalker的调侃对象。在这个帖子下面,2010年8月,有人戏谑地回复:“600美元的比萨好吃吗?”而到了11月,回复已经变成了:“2600美元的比萨好吃吗?”而且有人怀疑它们是不是世界上第一个价值100万美元的比萨。
比特币的价格节节攀升,这两个比萨的“价值”也随之攀升,如表1-1所示。
表1-1 比萨的“价值”变化
2017年12月,比特币的价格达到了顶峰,已经突破2010年网友想象价格的100倍(上文已经提到,2010年那位网友的想象力极限是每个比萨价格达到100万美元!)。比特币的发展速度令人咂舌,但也带来另一个问题:比特币的价值到底从何而来?
比特币的价值来自何处是一个经久不衰的问题,这个问题贯穿比特币和区块链发展的始终。有人认为比特币的价值来自矿工的挖矿成本,每枚比特币挖矿的电费和矿机成本是比特币价值的源泉。有人则认为是价值指导挖矿成本,而非挖矿成本指导币价,他们更倾向于认为比特币价值等同于维护比特币网络安全的成本。
有人坚信比特币的价值来自于收藏价值,它拥有2100万的总量上限。当然,最著名的说法则是比特币的价值来自于共识,人们相信比特币是一种足够好的避险资产,因此为这种公认的资产给出了价格,就像对待黄金一样。
翻一下Bitcointalk上的帖子,就可以看到来自各种语言、各个年代的诸如上文的讨论。与充满血和火的人类历史不同,区块链的发展史没有肉体上的厮杀,只有思想上的碰撞。
Bitcointalk论坛上碰撞出来的第一个火花是Namecoin(域名币),同时它也是比特币之外的第一个竞争币(有时也俗称“山寨币”),这是区块链的第二个应用。如果说比特币是一个点对点的支付系统,那么Namecoin则是一个去中心化的DNS域名管理系统。
我们都知道,全世界仅有十余台DNS服务器是用于解析域名的,而且大都集中在美国,如.com和.net等顶级域名的DNS服务商都在美国。DNS服务提供商的权力理论上是非常大的,如果他们想要封掉某个域名非常容易。
而中本聪非常抵制中心化审查,他提出了一个设想,就是建立一个自由的域名解析服务器,但同时又不希望让比特币变得更复杂。因此他给出了这个设想,让Bitcointalk社区帮他实现了。实现的产物正是诞生于2011年4月的Namecoin。
Namecoin和比特币底层非常相似,甚至挖矿都是联合进行的。但是Namecoin的矿工多了一项职责,即提供域名解析。Namecoin上的域名都是以.bit结尾的,并且矿工将IP和.bit域名的对应关系记录在区块链上,那么区块链就变成了一个DNS服务器,其他任何人无法干预,成为一个完全自由的域名体系。而Namecoin本身则作为一个支付工具,用于维护域名的存在和注册[12]。
1.2.5 “丝绸之路”网站
如今看来,.bit域名并没有取得足够的成功。当人们说起抗中心化审查的网络时,第一个想到的往往并不是.bit系列域名,而是一个更负盛名、神秘莫测、备受争议的网络,那就是暗网。暗网并不能通过正常的超链接访问,通常需要通过Tor进行链接。而比特币由于其强匿名性,逐渐得到暗网的青睐。
一位来自美国的年轻人Ross Ulbricht正是看好比特币的一员。他曾是美国德州大学(达拉斯分校)和宾夕法尼亚大学的高才生,并且曾在纳米科技实验室发表了太阳能电池学术论文。
当Ulbricht意识到比特币的匿名性时,他决心创造一个前无古人的网站,那就是依托于暗网的“黑色淘宝”。“黑色淘宝”借助暗网浏览,使用比特币支付,因此它允许交易很多违禁品。2011年1月,自学编程的Ulbricht终于完成了“黑色淘宝”网站的搭建。
没错,“黑色淘宝”正是臭名昭著的“丝绸之路”网站。“丝绸之路”网站是比特币发展史的一部分,亦是区块链技术得到的第一次大规模认可。由于“丝绸之路”网站(以及后来的“丝绸之路”2.0)上交易很多违禁物品,以至于“丝绸之路”网站成为比特币的一个原罪。
匿名性极大地延长了Ulbricht逍遥法外的时间,让他逃离了两年的抓捕。直到2013年10月,Ulbricht在格伦公园图书馆被6个便衣警察一举抓获。
1.2.6 比特金,莱特银
“丝绸之路”的影响非常广,以至于它改变了很多人一生的轨迹,比如李启威(Charlie Lee)。这位美籍华人曾是谷歌的工程师,在2011年的某一天,一则“丝绸之路”网站的新闻引起李启威的注意。李启威认为,对于“丝绸之路”网站来说,比特币就像拥有跨世界地位的黄金一样,可以自由地流通。如果比特币就是用于支付的黄金的话,为什么不创造一个白银呢?
黄金价值更高,因此对网络安全性需求更高,10~60分钟的区块确认速度是可以接受的。而白银不一样,如果只是小额支付的话,让区块间隔缩短一些又有何妨呢?
抱着这样的想法,基于比特币的第一个真正意义上的竞争币——莱特币(Litecoin)在李启威的手下诞生了,如图1-7所示。和域名币不一样,莱特币的定位是支付,而且似乎更偏向于小额支付。
图1-7 旧版莱特币的Logo
莱特币在最初与比特币的区别并不大,但莱特币针对比特币提出了两个新的尝试性思路。
一是莱特币认为比特币的确认时间很长。比特币的区块间隔为10分钟,通常我们又以6个确认为最终确认数,这样算下来比特币的确认时间为60分钟。因此莱特币将每个区块间隔缩短至2.5分钟,即比特币的1/4,并取6~12个区块为最终确认。这样莱特币的确认时间为15~30分钟,相比比特币有了较大的提升。
同时,由于挖矿时间缩短到了1/4,因此其总量也是比特币的4倍,为8400万枚,同样挖矿奖励四年减半。比特币和莱特币一些参数的比较如图1-8所示。
图1-8 Bitcoin和Litecoin的参数比较
但这里必须说明的是,直接缩短区块间隔去提升区块链性能,是以牺牲一小部分网络安全性为代价的。原因是,区块链的网络环境复杂,往往需要遍布全球。因此,同一个区块在传播到每一位矿工节点的时间是不同的。区块的传输需要时间,如果区块传输消耗十几秒,而区块间隔只有150秒(2.5分钟),那么对于网络不那么好的矿工来说影响是非常大的。这时,就更容易产生网络的意外分叉,进而导致网络安全性下降。后来诞生的以太坊区块间隔只有十几秒,为了解决这个问题,还专门使用了幽灵协议。
回到我们的主角莱特币,莱特币的第二个尝试性思路是改变加密算法,以对抗垄断效应的FPGA矿机。莱特币将比特币的挖矿算法SHA-256变更为Scrypt。
比特币挖矿是在不断进步的,早在2010年,比萨小哥lazblo就用效率更快的GPU挖矿碾压了其他CPU矿工。而到2011年,比特币FPGA矿机诞生,其超高的效率碾压了GPU矿工,这在社区引起了很大的争议。
中本聪主张一CPU一票,因为CPU的门槛很低,任何一台家用电脑都可以参与,这样的思路是希望网络中的全节点越来越多。全节点越多,比特币区块链账本的备份越多,网络就越安全,越不可篡改。2010年后,比特币进入了显卡GPU挖矿时代,有小部分家用电脑开始掉队,但是好在全网算力节节攀升,这也是一个可以接受的结果。
而FPGA的到来彻底打破了这一平衡,FPGA的英文全称是Field Programmable Gate Array,中文名为现场可编程门阵列,它比普通的CPU、GPU更强,可以通过写入程序,进一步优化设备的挖矿性能,但代价就是灵活度下降。FPGA已经严重逾越了“家用设备”的边界,脱离了家用设备,这意味着网络中的全节点数量将会大大下降,进而影响网络的安全性。
而莱特币的诞生正好处于这个阶段,社区为了FPGA矿机而争论不休。由于SHA-256已经被FPGA攻克,因此莱特币采取了Scrypt加密算法。Scrypt是对GPU挖矿友好的。事实证明,Scrypt确实延缓了莱特币的FPGA矿机诞生速度,但也只是延缓。后来针对莱特币的ASIC矿机也诞生了,莱特币挖矿永远告别了家用电脑。
除此之外,还有一个原因,如果莱特币不采用新的Scrypt算法,而是采用SHA-256,它有可能会被已拥有庞大算力的比特币矿工进行51%攻击。
由此,具有新特性的莱特币开始快速发展。和中本聪在2010年就失去踪迹不同,莱特币的创始人李启威一直活跃在莱特币社区。
值得一提的是,2017年12月20日,当时正值比特币的牛市高峰位置。莱特币创始人李启威在Reddit论坛r/litecoin板块写了一封相当诚恳的信[17],中文翻译如下:
“在过去的几年中,我尽量避免发布与价格有关的推文,但这很难,因为价格是莱特币成长中的一个重要方面。每当我发布有关莱特币价格的推文,甚至仅是好消息或坏消息时,我都会被指责是为了个人利益。有些人甚至认为我做空了LTC!所以从某种意义上说,持有LTC和发布与它有关的推文这两件事是利益冲突的,因为我(在莱特币社区)有很大的影响力。我唯一知道的事就是,在我发推文前后,我总是克制自己去买卖LTC。而且我也总是被质疑:我的任何行动,是不是有利于我的个人财富增值而非莱特币和加密货币的整体成功。
“出于这个原因,在过去的几天里,我已经出售/捐赠了我的所有LTC。莱特币在经济上对我非常有利,所以我已经足够富裕,不再需要将我的财务成功与莱特币的成功联系在一起。这是6年多以来的第一次,我不再拥有任何一个莱特币(当然不包括我收藏的一些“物理莱特币”),这绝对是一种奇怪的感觉,但从某些角度来说也是崭新的。别担心,我不是放弃莱特币,我仍然会把所有时间都花在莱特币上。当莱特币成功时,我仍会以许多不同的方式获得奖励,当然不再是直接通过币的所有权。我现在相信这是继续监督莱特币增长的最佳方式。”
李启威的信引起了莱特币乃至整个加密社区的轩然大波。而且事后我们发现,比特币的价格也恰巧在12月14日~12月20日这一周达到了最近一轮牛市的顶峰,甚至有人直言李启威是上一轮牛市逃顶最成功的知名人物之一。
对于李启威的做法,我们不去评价对错。但是对于一个区块链项目来说,项目早期时核心成员持有更多Token可以提供足够的激励,而项目成熟后核心成员减持甚至退隐,也不失是一种提高社区去中心化的好方式。创始人出售掉他所有Token这件事的好与坏,还是要根据项目成熟情况而定。
不过李启威目前仍然全职在莱特币社区工作,保持了一贯的热忱。
如果说莱特币社区有两个文化符号,其一是李启威,那么其二便是对比特币的好感。
由于莱特币就是在比特币的代码基础上进行简单改进而诞生的,因此无论是李启威本人还是莱特币社区都对比特币有好感。从对比特币的好感出发,莱特币社区还演化出了一句口号——“比特金,莱特银”。
这句“比特金,莱特银”的口号流传至今,有很大的魔力。
在“金”和“银”的比喻下,莱特币的走势(如图1-9所示)和比特币出现了明显的相关性。虽然莱特币对美元的价格发生了剧烈的波动,但是莱特币对比特币的价格仍然长期保持在一个稳定的区间内。
图1-9 莱特币的价格走势(灰色为BTC计价,黑色为USD计价)(数据来源:Coinmarketcap.com)
很多人甚至认为这句口号是莱特币的唯一价值源泉,因为莱特币在最初和比特币实在是太像了,产生这种想法也不无道理。但是,事实上,莱特币能够走到今天,不仅仅靠这一句口号。
莱特币的技术社区发展速度也很快,比如隔离见证技术和闪电网络,莱特币的进度都不输给比特币,甚至有些版本更新还走在了比特币的前列。
而就在2019年,莱特币更新了Logo,如图1-10所示,去掉了过去的银色,这似乎也在彰显莱特币社区不满足于“比特金,莱特银”的决心。
图1-10 莱特币的新Logo去掉了过去的银色背景,但保留了图标形状
当然莱特币还是保持了一贯对比特币的好感,李启威在2018年还曾提出过通过闪电网络让莱特币成为比特币侧链的想法,这和其他社区想要取而代之比特币是截然不同的。
1.2.7 PoS的诞生
闪电网络和侧链都是社区给比特币想出的扩容方案。但是让我们重新把视角移回时间线上,2010年时,比特币的区块没有达到极限,从链上来看,2010~2011年,比特币区块的大小只有不到20KB,远远不需要扩容。当时,人们并不关心比特币的拥堵问题,他们更关心的反而是比特币太费电了。
这让我不禁联想到,人类对环保的关注热情并不是永恒的,而是周期性的。当特殊现象发生时,人们会特别关注“环保”这个社会焦点,而当风平浪静时,环保又会变成无人问津的次要新闻。
特殊时期经常有,比如比特币诞生的第二年。在2010年年底到2012年期间,新的一次厄尔尼诺现象爆发了。厄尔尼诺,有时候也称为圣婴现象,是由洋流导致的,会让北半球的冬天变得异常温暖,最严重时会让北极的气温飙升至0度。但同时又带来极端天气,比如近赤道地区的暴风雪和龙卷风。
有相当数量的学者认为,厄尔尼诺现象与温室效应有关,而过分温暖的冬天又会让普通人切身感受到,因此可以看到,在这段时间内,媒体、学界以及政府都在讨论环保的话题。
这自然而然就会影响到比特币社区的人们,很多人开始意识到一个问题:比特币的挖掘似乎很耗电?这不环保!
这个问题和比特币的其他问题不同,其他问题或许可以通过新技术解决,但是比特币挖掘耗电问题看起来很像是一个无解的问题。
在工作量证明挖矿(PoW)的区块链里,网络的安全需要足够多的算力保证,算力越高,作恶的成本就越高(因为“邪恶”矿工需要拥有比诚实矿工更多的算力才能掌控网络)。
而这些矿机的每一次碰撞、每一次计算、每一个0和1的闪烁,都需要电力这项终极能源。想让比特币更省电是完全不可能的,除非牺牲掉比特币引以为傲的安全性。
事实也证明了这一点,随着比特币的价格水涨船高,比特币的挖矿难度自从2009年诞生后就很少降低过,一直是单边上涨。比特币的挖矿难度随时间的变化如图1-11所示。
图1-11 比特币的挖矿难度随时间的变化(数据来源:BTC.com)
为了解决比特币的耗电问题,2012年,一位化名为Sunny King的人和Scott Nadal联合发表了一篇论文“点点币:点对点使用权益证明(PoS)的加密货币”[18],文中提出了一种足够省电的取代PoW工作量证明挖矿的共识机制——Proof of Stake,即权益证明。
在PoW共识机制的区块链系统中,矿工通过算力给网络提供安全性,想篡改回滚账本必须拥有51%的算力,但是前文说到这种方式是能源消耗型的。而通过PoS,不需要费电挖矿,它只通过持币用户给网络提供安全性。
不过点点币没有使用纯粹的PoS机制,它是PoW+PoS混合机制。在点点币的PoS中,有这样的设计,即负责记账出块的节点不通过算力竞争记账权,而是通过币龄竞争。
什么是币龄呢?币龄=持币量×持币时长,比如持有5枚币,持币6天,那币龄就是5×6=30。币龄越高,成功出块的概率就越高。同时点点币每年增发约1%,用于奖励PoW出块的节点。
PoS被发明出来并不意外,如果说过去的PoW是按劳分配的话,那么PoS就是按钱分配。持有越多的Token,被选中出块的概率就越大。被选中的次数越多,获得的奖励就会越多。如果初始的Token不够分散,初期Token多的持有者就会拥有越来越多的Token。
这是完全可以想象的,假如Alice有100万个Token, Bob只有10万个Token,那么一年后,按照数学期望,Alice应该会有101万个Token,而Bob只会有10.1万个Token。Alice一年赚了1万个Token, Bob只赚了1000个,差了9000个Token。而第二年过去后,Alice会赚101万×1%=10100个,Bob只赚1010个,差了9090个Token,差距越来越大。那么随着时间的推移,Bob永远无法追上Alice的持币量。这样,系统中最有钱的节点就会逐步控制整个网络。
更糟糕的是,这其中还有交易所的参与。用户把Token托管在交易所那里,交易所拥有大量的Token,这些Token还会产生更多的Token,交易所就能够从中渔利。
系统中的贫富差距会影响系统的安全性。假如一个高持有者持有的币越来越多,那么他就越来越能控制整个网络。直到某一天,这个高持有者负责出了大量的区块,领取了大量的奖励,而普通节点每天的收益已经不足以支付打开电脑的电费,整个系统中的全节点账本就会越来越少。
一旦全节点账本数量下降到一定程度,这个系统就不足以称为区块链了。虽然点点币是第一个PoS币,曾经一度位于加密货币市值排名的前3名,但是由于PoS系统的诸多待解决问题,如今点点币的市值已经跌到了180名开外,如图1-12所示。
图1-12 点点币的市值排名,一路从市值前3跌到将近200名
1.2.8 bytemaster、DPoS与去中心化公司
让我们重新把视角移回时间线上。2010年7月底,Bitcointalk论坛上发生了一次足以载入史册的对话。(当然,如果把本书的第1章也作为某种不严格意义上的“史册”的话,那这段对话已经被载入史册。)
一位名为bytemaster的网友,在一个帖子[19]中发表了对比特币的抱怨。他和1年后的李启威都抱着同一个想法——比特币无法完成微支付。
bytemaster发帖称,在小额支付中,CPU、带宽和硬盘存储空间都是珍贵的资源(比特币显然没有这样的设置,比特币网络中的资源使用费用是以矿工费的形式支付给矿工的);另外比特币的等待时间太长了,足有10分钟。
但没想到,这小小的抱怨居然引来了Bitcointalk论坛的终极管理员——会员等级为founder的中本聪本人。
中本聪先建议bytemaster看看“小吃机”那个帖子[20],在该帖子中提到了比特币在10秒内完成转账的方案,而且比信用卡的欺诈率要小得多。最后中本聪向bytemaster说了一句非常著名的话:“如果你不相信我,或者没有明白我说的话,不好意思,我没有时间让你相信。”
天才之所以是天才,是因为天才能够坚持自己的想法,即便不被他人所理解。在世人的眼中,中本聪是一位挑战传统银行业的超级天才,很多人不理解他,但他仍然坚持着完成了比特币的设计。而bytemaster是另一位天才,连中本聪都无法理解他,但他以一己之力为区块链开辟了与PoW迥然不同的另一条道路。
bytemaster,何许人也?
软件工程师,Bitshares、Steem、EOS.IO之父,区块链鬼才,文豪——Daniel Larimar,网名bytemaster,简称BM。
假如中本聪怼了你,你会怎么做?
由于中本聪已经不知所踪,很多人目前没有机会去思考这个问题。不过bm给出了他的选择,做一条链,用事实怼回去!
在被中本聪回复之后,BM经过长期的思考,终于想到了阻碍比特币区块间隔进一步缩小的原因——对于比特币的工作量证明(PoW)挖矿机制,想要达成共识太难了。
在比特币的网络中,有成千上万个全节点,密码学可以让这些节点在收到广播之后快速验证,但是密码学无法让广播传输得更快。
虽然比特币的区块只有1MB上限,但是其网络的传输仍然是个大问题。比特币的全节点所处的网络环境是很恶劣的,你根本不知道这些节点是处于西伯利亚的冰盖上,还是巴蜀的深山中。
如果区块间隔缩得太短或区块增得太大,都会影响网络传输,一旦网络中的大部分节点不能及时更新到最新状态,链就会变得不安全或者不稳定。想象一下,假如两个矿工在同一分钟计算出了新区块,但是由于网络问题,双方都觉得自己是第一个算出的,怎么办呢?为了区块奖励,两者还要开启一次算力竞争,比拼下一个区块,这样既浪费电力,又影响网络的安全。
既然比特币不能更快的原因是矿工太多,达成共识太慢,那干脆减少矿工好了!BM如是想。
不过比特币的生态是完全开放的,任何矿工都可以决定自由进出。那该如何评判哪个矿工可以进入,哪个矿工不能进入呢?干脆投票好了!
投票是人类社会发展到目前阶段最为简单、最为直白、最为透明的一种“共识”达成方式。每人一票是这项共识形式的基石。但是区块链中,每人一票这个最简单的条件反而变得苛刻起来。每个人都可以有无限个比特币地址,想要证明某一个地址之后对应着某一个人难如登天。
是否可以退一步,改成每IP一票?但是这个想法已经在“史前时代”就被证伪了。中本聪在白皮书中明确说明,每IP一票很容易受到DDoS攻击,网络非常不安全,于是投票在比特币中的表现形式为算力。
而到了PoS阶段,出于省电的考虑,算力挖矿又变成了“币龄(Token数量×持Token天数)”挖矿。既然现在需要投票决定“准入机制”,又不能用算力、IP和个人,那为什么不直接用Token去投票呢?
于是BM与Charles Hoskinson一拍即合,创立了比特股(Bitshares),并带来了崭新的DPoS机制(2013年Bitshares诞生,当时名为Protoshares,而Bitshares 2.0是2014年由PTS、AGS、DNS和Follow My Vote等几个项目整合而成的)[21]。
DPoS的全称是Delegated Proof of Stake,即委托权益证明,早年也译作股份授权证明。在比特股中,系统设计了若干位(目前是21位见证人节点,具体数量是由持币者们投票决定的,最低要求是11位)见证人节点(witness)。见证人节点按照某种顺序,轮流负责打包区块,获得区块奖励和手续费。
简单来说,在采用DPoS共识的区块链(如Bitshares)中,BTS(Bitshares中的原生Token)即“股份”,持有了股份就是这家Bitshares(如图1-13所示)“去中心化公司(DAC)”的股东。任何持股者都可以投票选出见证人来“干活”。
图1-13 比特股Logo
Bitshares这家“去中心化公司”的经营范围很广,DPoS牺牲了去中心化,但是给Bitshares这条公链带来了很高的性能,比特股的性能足以支撑它完成每秒上千笔的转账,大大超过了比特币和莱特币。
这是人们第一次尝试高性能的区块链,这带来了无限的可能,比如用比特股底层开一个去中心化交易所。
中心化交易所大家都很熟悉,知名的有火币(www.huobi.pro)、Coinbase、币安网、Biftinex和OKEx等。但是去中心化交易所又是怎么一回事呢?
人们并没有在最开始就追求去中心化交易所,直到2014年,当时世界最大的交易所Mt.Gox出现了一桩惊天盗窃案。约有85万枚比特币从这家最初致力于“卡牌收集游戏”的交易所被盗走,这些比特币占当时全网比特币的7%左右(是的!Mt.Gox,中文俗称门头沟的创始人,当时真的只是想像股票一样交易Magic:The Gathering Online的卡片,故缩写为Mt.Gox。但是后来他发现了比卡牌游戏更有趣的东西——比特币)。
这些被盗的比特币直接诱发了2014年漫长的熊市。由于比特币的天生隐私性,这笔钱截至今日也只追回了一小部分。并且由于锁定时间太久,Mt.Gox目前持有的比特币就像达摩克利斯之剑悬在所有比特币持有者的头上,因为大家不知道这些比特币是否会流入市场抛售,毕竟在被盗冻结的时候,比特币只价值几百美元,而如今一枚比特币的价格高达数千美元。
Mt.Gox被盗事件发生后,很多人丧失了他们的全部比特币储蓄。人们开始对Mt.Gox以及一切中心化交易所感到愤怒,因为中心化交易所没有管好他们的加密资产,如图1-14所示。
图1-14 自称是Kolin Burges的加密货币交易员,在Mt. Gox失窃之后抗议时拍下的照片(来源:The New York Times)
大家在想一个问题,能不能让用户自己掌握加密货币私钥,然后进行交易链上结算呢?
比特股去中心化交易所提出了自己的想法,在比特股上发行资产,比如发行BTC.网关、LTC.网关,再让它们和真实的BTC、LTC产生锚定关系,让社区中知名的有实力的节点作为承兑方进行托管和转换。然后,比特股通过抵押BTS的方式发行了比特人民币(BitCNY)和比特美元(BitUSD)。
抵押的过程并不复杂,假如现在BTS价值1美元,抵押率为30%,则抵押100个BTS,可以由系统生成30个BitUSD。用户可以随时用BitUSD赎回他们的BTS,以保证系统中的每个稳定币都是有充分抵押物的。但是如果出现了极端情况,比如BTS暴跌至0.3美元,则用户的抵押物会以折扣的价格提前爆仓,然后再由其他用户来购买并强制平仓。用户虽然没有损失其30个BitUSD,但他会永远失去抵押物。
这样,用户就可以在自己的钱包中存储BTC.网关、LTC.网关、BTS、Bit-USD等数字资产,每次交易都从链上结算,从而极大地增加了黑客攻击的难度。毕竟,黑客可以定向攻击某一个中心化交易所,但是他们既没有时间也没有能力去攻陷成千上万的每个用户的钱包。
当然网关制度有其弊端,比如网关可能会作恶,也许会被攻击,但是总而言之,整个思路是进步的,是让人感到欣喜的。
比特股是一个不错的构想,但是BM并没有陪比特股社区走很远。2015年年底,在BTS手续费升级问题中,BM的决议被社区以4:7否决。这既证明了DPoS社区也有去中心化,又导致了BM的灰心丧气。前文说过,BM非常喜欢撰写文章,bm在留下一篇大作“Why? Why? Why?”之后离开了比特股社区[22]。
BM以及当时的人们并没有想到,BM的离开非但没有让BM错过,反而让BM走向了更绚烂、更广阔的天地,比如Steem、EOS.IO。
1.2.9 Vitalik封神,以太坊突进
如果要评选在2014年发生的足以改变区块链历史轨迹的两件事的话,其一当属比特股,它带来了DPoS和去中心化公司(DAC),其二就是以太坊(如图1-15所示),它带来了智能合约、去中心化组织(DAO),以及2017年的牛市。
图1-15 以太坊Logo
以太坊的创始人名为Vitalik Buterin,他出生于1994年,是一位俄裔加拿大人,还能讲一些中文。他在13岁就开始接触编程,并且在很早就听父亲说起了比特币。随着他的成长,Vitalik逐渐意识到了中心化的问题。于是,他再次把目光投向了比特币。
Vitalik在真正了解了比特币之后,非常兴奋,开始为比特币撰写文章。从前文可以看到,任何一个真正了解比特币底层的人都为它的底层所着迷,包括Vitalik在内,目前市值前10名的区块链项目创始人绝大多数都来自比特币社区。
Vitalik撰写比特币文章的稿费是5 BTC,在当时并不多,而如今价值却是2.5万美元。这一点Vitalik和比他大十几岁的BM有相似之处,他们都愿意用长文表达自己的观点。后来,在2011年年底,Vitalik和另一位来自罗马尼亚的比特币爱好者Mihai Alisie共同创办了杂志Bitcoin Magazine[23]。
2013年是比特币第一次从极客圈走向大众的阶段,也是比特币第一个真正意义上的牛市。受到2008年美国次贷危机的余波影响以及希腊政府债务危机的冲击,杠杆程度很高的塞浦路斯银行濒临破产,塞浦路斯危机正式爆发[24]。
塞浦路斯银行为了偿还几十亿欧元的国家救助贷款,在万般不得已的情况下,直接使用了储户的资产。所有存有10万欧元的储户都被一次性征收9.90%的税费,10万欧元以下的用户则会被征收6.75%的税费[25]。
这件事彻底激怒了储户,他们愤怒地走上街头表示抗议。就在这时,有人举出了比特币的标识,真正的去中心化货币不会被任何中心化机构课税。
在法币和银行面临危机之时,比特币迅速吸引了人们的眼球,当然还有其价格飞涨的因素。可以说,塞浦路斯危机就是2013年比特币牛市的导火索。
就在2013年的比特币牛市阶段,Vitalik决心从加拿大滑铁卢大学退学,专心从事区块链和比特币行业。2013年10月,他用过去积攒的比特币去了以色列,并遇到了MasterCoin等项目。
目前很多人认为MasterCoin是历史上第一个真正意义上的ICO项目。它的方式很特别,是发行在比特币OMNI层上的Token。MasterCoin的收发地址都是比特币地址,并且在底层安全性方面基本可以和比特币划等号。这就是当时风靡一时的染色币技术,如今除稳定币USDT之外,已无非常活跃的项目。其实原因很简单,因为后来的以太坊上研发出了更强、更快、更便宜的Token发行技术。
在看到这些项目正在使用的协议之后,Vitalik意识到,或许可以在比特币中引入图灵完备的编程语言,这样就可以极大地扩展这些功能。目前,通常概念上的图灵完备是指:如果通过一系列操作数据的规则可以模拟单带图灵机,那么它就是图灵完备的。图灵机是艾伦·图灵在1936年提出的一种抽象计算模型,可以将其理解为一种数学逻辑机,理论上它等价于任何有限逻辑数学过程的终极逻辑机器。
换句话说,如果给比特币加入图灵完备的编程语言,比特币将从世界的账本变成世界的计算机!
最初,Vitalik试图向比特币社区递交这个提案。虽然大家认为很有意义,但是从中本聪还停留在社区之际就能感受到,比特币向往简单的账本功能,不希望变得复杂,因为那样可能会失去比特币赖以维生的强大安全性。所以Vitalik的提案并没有被通过,因此,Vitalik决定亲自去做!这是Vitalik的一小步,但却是整个区块链历史的一大步。
世界计算机,去中心化应用平台,未来的百亿美元市值项目——以太坊,正式登场了!
Vitalik将他的新项目命名为以太坊,并在2013年撰写了以太坊的白皮书。这种天才般的想法,先后感召了另外七位联合创始人,他们分别是:Anthony Di Iorio、Charles Hoskinson、Mihai Alisie、Amir Chetrit、Joseph Lubin、Gavin Wood和Jeffrey Wilke。虽然在以太坊的官方联合创始人名单中包括更多的贡献者,但是算上Vitalik在内的8位核心成员是更被社区认可的“以太坊八健将”。
以太坊的白皮书出自Vitalik,而黄皮书出自另一位天才Gavin Wood。他们在以太坊从构思到程序开发中有过大量的探讨(当然开发之后的迭代中,社区的探讨更多),由于篇幅有限,这里不再赘述。实际上,从他们的探讨中,可以看出为什么以太坊选择这样或那样的特性,感兴趣的读者可以参看Vitalik的博客“A Prehistory of the Ethereum Protocol”[26]。
2014年7月,以太坊的募资正式开始,它募到了约31000个比特币,当时价值约18000万美元。当时社区的很多人并不看好年纪轻轻的Vitalik。当年Vitalik在来中国寻找投资和帮助时,貌不惊人的他还曾被误认为是“为了融资而请来的外国演员”。
但是事实证明,投资以太坊或许是历史上回报最高的买卖之一。以太坊的众筹价格大约是0.25USD,最高点曾到过1200USD,涨幅超过550000%,目前以太坊仍价值200USD,如图1-16所示,涨幅依然超过80000%。
图1-16 以太坊的历史价格走势(数据来源:coinmarketcap.com)
以太坊为什么能有这么高的涨幅呢?这要归结于以太坊带来的无尽可能。
在过去,无论是比特币还是莱特币,仍然在利用支付这个基础的功能,包括Ripple和Stellar也只是延伸到了结算领域。
但是以太坊的图灵完备性将另一个“野兽”放出了笼子,那就是智能合约。
什么是智能合约?这个概念最早由1.1.1节提到的密码学家Nick Szabo在1995年提出。智能合约(Smart Contract)是一种以信息化方式传播、验证或执行合同的计算机协议,它允许在无第三方的情况下进行可信、可追踪、不可逆转的交易。
例如,在租房的场景下,违约的情况是非常多的。假如租客和房东签订了一份智能合约,房东和租客就可以把押金锁定在智能合约中,如果租客按期离去,则押金会自动转给租客,如果租客违约,则押金自动扣除并转给房东。
整个过程都是由智能合约自动完成的,没有人可以挪用或者拖欠押金,这相比传统的合同大大提高了效率。由于区块链的账本底层是不可篡改的,这份智能合约也同样无法篡改。
因此,以太坊的区块链+图灵完备智能合约的概念迅速创造了很多区块链的真实场景。
比如,有一个以太坊上的区块链项目,它利用智能合约引入了一种预言机的机制。场景是这样的,在世界杯期间,用户要押注两支球队的胜负。智能合约会根据最终的比赛结果,将下注筹码自动发给获胜者的地址。在这期间,没有中间人抽成,也不会担心中介跑路或者双方不兑现筹码。
再比如,以太坊上另一个名为MakerDAO的项目,利用智能合约设计了抵押借贷机制。用户可以抵押以太币,并且借出一定比例的DAI。1 DAI被设计为等于1美元。当用户把这些DAI通过智能合约归还后,用户抵押的以太币还会回到他自己的地址中去。如果以太币发生了暴跌,其他用户可以用DAI去以略低于市场价的价格,强行购买别人爆仓的以太币。这样,DAI将始终有足够的以太币抵押物,再辅以一些其他的调节机制,因此DAI始终稳定在1美元左右。
MakerDAO在没有任何第三方的情况下,设计了一个近乎完美的去中心化抵押借贷模式和去中心化美元,这就是智能合约的强大之处。
除此之外,基于智能合约,以太坊还将DApp的概念推到了世人面前(如图1-17所示)。DApp的全称是Decentralized Application,即去中心化应用。大家都很熟悉App应用,每天都会在手机等设备上使用,那么DApp是什么呢?
图1-17 Ethereum项目官网的口号就是:以太坊,区块链应用平台
DApp前端和中心化App前端没有区别,有区别的是后端。App使用中心化服务器,比如物理机房或者亚马逊、阿里云等,而严格意义上的DApp没有中心化服务器,它利用区块链作为服务器,智能合约为逻辑。当然,现在由于区块链的性能还有一定的瓶颈,一些DApp可能仅把部分功能上链,部分功能仍然使用中心化服务器。
以太坊希望成为一个DApp平台,截至撰写本书时,以太坊上已经有上千个DApp,而且其规模还在扩大中,如图1-18所示。
图1-18 以太坊DApp 24H日活Top10,2019年4月20日(来源:dapp.review)
以太坊的成功非一日之功。以太坊的早期版本可以用“拮据”来形容,它甚至没有一个良好的图形操作界面。随着以太坊的不断升级,它的功能也日趋完善。
目前,以太坊已经完成“君士坦丁堡”升级,在此之前,它就已经长期位于加密货币市值第二名,且一度占据比特币市值的一半。如今,它正在朝着ETH 2.0的升级目标进发——加入分片技术和Casper共识机制。本书后面的章节会详细介绍这两种技术,它们使以太坊的区块链更稳定,性能更高。
在以太坊的版本迭代中,还有一个重要的事件就是“the DAO”。去中心化公司(DAC)的概念已经由比特股风靡一时。在以太坊主网能够正常使用之后,以太坊的支持者也迫切希望建立一个去中心化公司或者去中心化组织(DAO)。
于是,2016年历史上最知名的DAO“the DAO”上线了,the DAO希望成为一个去中心化的VC,专门给各种区块链项目投资,投资决策当然是由所有参与the DAO的“股东”以共同的、民主的投票方式给出。在the DAO中,没有CEO,没有主管和经理,只有所有人的投票。
这看上去非常美好,the DAO像是一个乌托邦VC。但乌托邦之所以美好,是因为它完美无瑕。可是从结果上来看,the DAO绝对不是完美无瑕的。
当时,the DAO募集了价值1.5亿美元的ETH[27],占到当时以太坊流通量的很大比例(有推测表示,大多数以太坊社区的人都参与了the DAO投资)。每个the DAO的投资者都幻想着未来的发展,但是两行代码无情地击碎了他们的所有美梦。
世界上有两件事最令the DAO的开发者难过:the DAO有两行代码上下顺序写反了;黑客率先发现了第一件事。
黑客确实率先发现了这个Bug,并从the DAO的合约里不断地偷取以太坊。但是the DAO的开发者却无能为力,因为智能合约一旦被部署到以太坊网络中,就无法更改了。
一方面,黑客偷走ETH后在交易所中疯狂地倾售,另一方面,无数the DAO投资者却如热锅上的蚂蚁一般束手无策。幸好有一些白帽子团队,利用这个Bug紧急从the DAO合约中抢救了部分ETH出来。
面对黑客的咄咄攻势,以太坊社区想出了一个办法——篡改账本。
以太坊是一个非常伟大的项目,很多人更愿意称之为“回滚交易”,但是事实就是事实,以太坊决心篡改区块链账本。
看到这里,读者应该已经清楚一个概念,即区块链上的资产是依赖账本存在的。“你拥有5个以太坊”的真实含义是“在以太坊区块链账本上,某地址曾向你的地址转入5个以太坊,而且至今尚未转出”。假如从所有人的以太坊区块链账本上抹掉这一行记录,那你也将不再拥有5个以太坊。
以太坊社区决心要做的就是抹掉黑客的转账记录,这样就可以将ETH从黑客手中夺回来。这件事引发了极大的讨论。
反对的一派认为:任何人没资格这样做,这违背了去中心化精神,此先例一开后患无穷。
支持的一派认为:黑客是不道德的,而且此事规模太大,我们不得不采用这种极端手段。
双方各执一词,而且更有趣的是,双方阵营也有利益冲突,比如支持的一方往往也投资了the DAO,而反对的一方中有不少人偷偷购买了黑客抛售的“廉价ETH赃款”。
最终,在经过社区投票以及在Vitalik等核心人员的带领下,以太坊分叉为两条链。原链不回滚黑客的交易,命名为以太经典(Ethereum Classic,如图1-19所示),由社区团队接手开发维护。而新链回滚了黑客的交易,仍然由Vitalik等人领导,仍命名为以太坊。
图1-19 Ethereum Classic(ETC)Logo
这样,买到了黑客抛售的“廉价ETH赃款”的人手中的ETH就变成了ETC,而the DAO中被盗的ETH被全部追回。没有参加the DAO的ETH持有者则同时获得ETH和ETC。
追回赃款只是一部分,这次硬分叉带给以太坊乃至整个区块链社区的意义是非常重大的。通过这件事开始意识到,在区块链体系中也是可以“用脚投票”的,任何人都可以随时切换他们所支持的事物。
时至今日,ETH社区空前繁荣,ETC社区也生机勃勃。除了对待回滚交易这件事之外,两者的技术迭代之路也有了分歧。ETH希望转向PoS,总量没有上限,而ETC坚持PoW,总量趋于某个值。因此,ETC社区有时也称自己为“真正的、去中心化的以太坊”。
2016年7月,the DAO事件发生后,ETH的价格在12美元的位置出现了几次波动,但是谁也不会知道,ETH会在未来的牛市中冲到1200美元的恐怖高度。可以知道,这一波牛市正是以太坊催生的,并且随着价格的攀升,在中文网络上,想出以太坊天才构想的Vitalik Buterin被直接“封神”,比起Vitalik,你会看到更多人愿意叫他“V神”。
2017年的牛市到来目前有两个公认的原因,一是比特币的减半,二是ICO。
ICO(Initial Coin Offering)即首次代币发行,源自股票市场的首次公开发行(IPO)概念,是区块链项目首次发行代币,募集比特币、以太坊等通用加密货币的行为。
在2013年牛市时,发行新的代币是有门槛的,发行者需要看懂并更改比特币的源代码,且需要吸引一批矿工加入。否则就要使用染色币,但是染色币受制于OMNI等协议,使用起来相当不方便。
但是,智能合约的出现直接将发行新的Token简化到几行代码。更夸张的是,网络上有教程提供发行Token的模板代码,换句话说,只要你能熟练地使用“复制/粘贴”功能,并且拥有价值几美元的ETH,那么就能在5分钟之内在以太坊上发行一个崭新的Token。假如正确地使用了以太坊规范,你的Token安全性将和以太坊达到同一级别,因为以太坊网络以及网络上的所有ERC-20 Token的安全性,都是由遍布在世界各地的以太坊矿工保证的(起码在Casper共识上线之前是这样的)。
上文提到的几个应用场景,都是最早一批使用以太坊发行新Token的项目。截至目前,可以看到以太坊上已经出现了超过18万种ERC-20 Token。而每个Token背后可能都有一个“改变世界”的区块链项目和白皮书。
这数万份的白皮书,被推送到各个国家、各种领域的几乎所有投资人和投资机构的桌上。于是,无数热钱涌向了区块链行业,比特币从1000美元暴涨到19000美元,以太坊则从8美元涨到了1500美元。截至目前,最大规模的牛市就在ETH的催动下诞生了。
牛市的强烈爆发夹杂着泡沫,冲刷着一轮又一轮的投资者、用户和技术极客。你方唱罢我登场,单单2017年的牛市就足以写一部书。但是狂暴的欢娱总会带着狂暴的结尾,在牛市结束后,以太坊的价格大幅回落。
不过,以太坊还有健壮的技术和用户社区,目前以太坊社区也在齐心协力,希望把分片技术、Casper共识以及eWASM虚拟机等新技术引入以太坊2.0中,让以太坊的技术更进一步。
1.2.10 匿名币群雄并起
很多不够了解区块链的人都在反复地问同一个问题:区块链的应用到底有什么?我们能不能看到一款杀手级应用?
这个问题其实并不难回答,目前来看,区块链的最大应用是比特币——一种不需要中心化机构的点对点电子现金。但是很多人认为这个答案仍然不够极致。
玫瑰往往带刺,区块链最极致的应用就是伴随着黑暗,比如说匿名币。
在区块链诞生之前,人类几乎没有完成过任何一笔真正意义上的匿名转账,而区块链让这种操作成为现实。
让我们把时间切回2010年,软件工程师Evan Duffield偶然听说了加密货币,几个月后,他再次看到这个词时,决定深入研究一下。在读了比特币的白皮书后,Evan Duffield认为这将是“全球性的事件”[28]。
在区块链早期,并没有那么多加密货币可以选择,只有比特币。Evan积极参与比特币社区的事务和讨论。在讨论中,他发现了一个问题,比特币仍然不够匿名化。
一笔交易的匿名化分为两部分,即人和地址之间以及地址和地址之间。在比特币系统中,人可以拥有无限个地址,而且无须进行实名认证或者注册,因此人和地址之间是绝对匿名的。但是由于比特币的区块链账本是完全公开的,因此地址与地址之间的转账是完全透明的。
当时,比特币社区也发现了这个问题,他们讨论使用混币技术来提高比特币隐私的可能性。
“混币”看起来非常简单,正常的比特币或DASH非混币的交易看起来是这样的:
有1个地址向另外1个地址转账,有些可能还会加入找零地址,大概1个input和1~2个output。这样的交易相对比较容易追查,并不够隐私。比如在Mt.Gox被盗事件中,有的区块链研究人员就从转账记录中一笔一笔地追查到了黑客的蛛丝马迹。
而混币之后,可以将多个用户的交易需求混合在一起,比如3个地址同时向另外3~6个地址发行Token。这样的交易就变得极难追查了。
但其中的难点是,同一时间发起转账的用户之间并不认识,甚至彼此无法通信,更谈不上协同合作。在中心化系统中,只要让系统匹配多个用户的需求,并将它们混合在一起就可以完成混币。但是在BTC或者DASH这样的去中心化体系中,没有“系统”的存在,那么如何才能让几个互不相识的用户将币混在一起发出呢?
Evan也像Vitalik一样,兴致勃勃地向比特币核心开发社区递交了自己实现混币的方案。他的方案就是让一些节点当主节点,由主节点随机负责协助混币。
当然,结局也和Vitalik一样,比特币核心社区认为比特币的底层最好保持不变。因此Evan经过自己的思考之后,基于比特币设计了暗黑币(Darkcoin)。或许是暗黑币的名字太暗黑了,加之数字现金(Digtal Cash)的概念很火,因此暗黑币很快就改名为达世币(Dash),其Logo如图1-20所示。
图1-20 Dash Logo
Dash相比比特币改进了不少。首先它把挖矿算法改成X11, X11的意思是有11种加密算法串联,即便ASIC矿机攻破了某一种算法,也能继续坚持整体上的抗AISC;其次是在PoW矿工之上加入了一些主节点(MasterNode)。
成为主节点需要抵押1000个达世币,并且每年获得Dash挖矿产出的45%。正所谓收获越大,付出越多。主节点虽然不负责出块,但是需要负责Dash系统中三项重要的工作[29]。
其一是协助用户进行混币。每次需要混币时,都会通过哈希随机从遍布全世界的几千个主节点中选出若干个主节点,由它们来扮演“系统”的角色去帮用户们混币。其二是帮助用户锁定一些交易output,实现即时交易。通过这种方式,用户可以0区块确认,在几秒之内完成一笔交易。由于负责的主节点仍然是随机选出的,因此他们碰巧认识并联合作恶的可能性是非常小的。其三是参与Dash发展的投票。
当然Dash的隐私性也有缺陷,比如混币的详情会暴露给参与混币的主节点。再比如,有人诟病主节点让Dash看起来不那么“去中心化”。
另一个隐私币的有力竞争者是门罗(Monero)。门罗从骨子里就透着一股强抗审查的精神。
和大多数区块链项目不同,化名为Nicolas van Saberhagen的创始人从留下白皮书[30]那天起就一直保持匿名。在这份白皮书中,他详细描述了CryptoNote 2.0这个概念,基于此概念诞生了两个币种,一个是2012年诞生的历史上首个匿名币种Bytecoin,另一个则是2014年诞生的目前市值最高的匿名币种门罗(当然后面诞生的门罗在很大程度上参考了Bytecoin的底层)。
和Dash不同,门罗采用环签名的方法来增加其区块链的匿名性。确切地说,门罗的隐私包括三部分:用环签名隐匿了发送者的地址,用秘密地址隐匿了接收者地址,用RingCT混淆了交易信息。
环签名并非门罗币的独创,而是诞生于正统的密码学学术界。2011年,Ron Rivest、Adi Shamir和Yael Tauman三位学者在SIACRYPT上发表了一篇名为“如何泄露秘密”(How to Leak a Secrat)的论文[31],第一次向世人介绍了环签名的强大之处。
环签名是一种签名方法。假设在一个小组中,每人拥有一个私钥和公钥,他们可以对任意一个事件计算出一个环签名。此时,任何一个人(无论组内还是组外)都可以在不知道任何私钥的前提下,验证这个环签名是否包括组内成员的公钥。
这样说似乎不够直白。有一个著名的例子可以描述环签名,假设有一个皇帝,其一位大臣想要劝谏皇帝但又担心皇帝会怪罪自己,因此在奏折上签了一圈大臣的名字,然后再进行呈递。这样皇帝既可以知道奏折的内容,又无法判断谁是第一个起草这份奏折的。
在门罗中,环签名是这样被应用的。假如Alice想给其他人发送交易,又想隐匿自己,则她可以从门罗区块链网络中拉取其他人的签名来组成环签名,进而隐匿自己。由于环签名的验证方法,Alice既成功地向矿工隐匿了自己的身份,又让矿工能够验证这笔交易是合法的。
门罗最初只应用了环签名技术,后来在比特币核心开发人员Gregory Maxwell引入并讨论了Ring Confidential Transactions(Ring CT)的概念后,Monero Research Labs于2015年也加入了Ring CT技术以进一步增强门罗的隐私性[32]。
门罗的抗审查性并不局限于此,在2018年,著名的矿机生产厂商比特大陆终于攻克了原版CryptoNight加密算法,并研制出了CryptoNight算法的ASIC矿机,言外之意是让ASIC矿机进军门罗。
而门罗抗拒审查,也同样抗拒算力中心化。其社区认为,算力一旦集中,由矿工集团进行的潜在审查就会接踵而至。因此面对来势汹汹的ASIC矿机,门罗社区毅然决然地选择了硬分叉,直接改变加密算法,以保持门罗还能通过CPU、GPU挖矿的去中心化特性。
为此,门罗分叉为两个币种,一是门罗,二是门罗经典,如图1-21所示。门罗经典是仍然支持原有CryptoNight加密挖矿算法的币种。
图1-21 门罗和门罗经典Logo
相比两位强力竞争对手而言,ZCash来得更晚一些。
ZCash的创始人是Zooko Wilcox-O'Hearn,他是一位密码学家,并且曾是1.1.1节提到过的密码朋克(Cypherpunks)社区的成员。他在2016年组建了ZCash公司,主导开发了ZCash,如图1-22所示。
图1-22 ZCash Logo
ZCash的隐私思路比较独特,它采用了另一种密码学手段——零知识证明。ZCash的底层来源于比特币,并引入了zk-SNARK零知识证明算法。
顾名思义,零知识证明是指验证者将在“什么也不知道”(也就是零知识)的情况下完成验证。
这里举一个最基础版的零知识证明的例子。
假设有如下条件:
❑事实一:Alice知道A和B两个非1整数的数值;
❑事实二:Alice知道A×B=1293051234052410…1281。
此时,Alice提出了两个需求:
❑需求一:Alice想让第三方的Bob确信“Alice知晓A和B两个数字是多少”这个事实;
❑需求二:Alice不想把A和B的具体数值告诉Bob。
这时,Bob该如何通过零知识证明验证呢?Alice和Bob需要找到一个函数F(X), F(X)满足:
❑条件一:F(X)有特殊性质,F(X)×F(Y) = F(X×Y);
❑条件二:从F(X)极难倒推出X的值。
如果他们找到这样的函数,Alice可以放心地把F(A)和F(B)数值给Bob, Bob来计算F(A)×F(B)=F(1293051234052410…1281),如果验证通过,则证明Alice极有可能知道A和B的值。
当然,这样做还不够严谨,假如Alice胡乱编两个数F(C)和F(D),也碰巧等于F(1293051234052410…1281),或者Bob从F(A)强行倒推猜到了A的数值,这个证明都会有误。因此,还需要再引入几个偏离值和随机数来混淆对方。比如,Alice为了防止Bob猜出,可以给F(A×m)和F(B÷m),因为F(A×m)和F(B÷m)的乘积仍然为F(A×B)。当然为了防止Alice胡编,Bob也需要给出随机数和偏离值来考验Alice,进而验证Alice所说的话。
这只是一个最简单的零知识证明模型,实际情况下,ZCash要用零知识证明隐瞒发送和接收Token的地址和发送数量,比上述例子要复杂许多[33]。
通过前文可以知道,设置一些随机数的参数是非常必要的。ZCash系统为了能让ZCash更便于使用,内置了一组参数。但是这组参数是需要绝对保密的,一旦被别人破解,则整个系统的零知识证明都将失效。
为此,ZCash专门组织了两次参数生成的“神圣仪式”,第一次他们邀请了6个人,包括ZCash基金会成员、密码学家以及一个匿名者,每个人掌握一个“密钥碎片”,合并起来就组成了ZCash参数。只要有任何一个“密钥碎片”被销毁了,这个参数将永远无法被外人知晓,而这6位富有声望的人是没有任何理由不去销毁这个“密钥碎片”的。
在后续的ZCash升级中,为了能够令此参数更加不被外人所知晓,ZCash邀请了几十人参与这个神圣仪式,只要几十人中有任意一个人遵守了诺言,即在完成仪式后销毁了“密钥碎片”,则该参数将永远无法为外人所知。即便没有一个人遵守诺言,也需要有一个人从这几十人口中骗出“密钥碎片”,这也是难于登天的。
不过ZCash也有令人诟病的一面,比如ZCash公司最初为自身分配了20%的ZCash,以至于矿工在挖矿时,常称要“交税”。后来为了能够缓解这一问题,ZCash公司决定拿出其中一半的Token(即10%)建立ZCash基金会。很多团队也因此尝试去分叉ZCash,拿掉这20%的部分。不过目前看来,由ZCash公司负责的这条ZCash区块链的更新迭代速度是最快的。在最近的一次升级中,ZCash已经成功地让过去需要消耗大量时间去生成零知识证明的步骤变得更迅速了。
1.2.11 “黎明女神”EOS以及以太坊的其他“对手”
艾奥斯(希腊语为Έως,英语为Eos)是古希腊神话中的黎明女神,她是太阳神赫利俄斯和月亮女神塞勒涅的姐姐。传说她每到一处,散发着清香的花瓣和玫瑰香的水珠便会坠落在地上成为露水。
黎明女神艾奥斯每天都要用她玫瑰色的手指为她的弟弟——太阳神掀开门帘,也就昭示着黎明的到来。区块链的黎明似乎还没有到来,人们一直在寻找杀手级的DApp,那么到底谁能为区块链带来真正光明的未来呢?
以太坊作为第一个将智能合约带到区块链世界的项目,显然为未来区块链的大规模落地开了一个好头。但是,就像比特币一样,随着越来越多的人进入区块链行业,越来越多的“改良以太坊”方案也被提了出来,有些建议(以EIP形式)已经被以太坊采纳并整合,但是更多的想法并没有,所以从2015年开始,智能合约赛道如雨后春笋般诞生了诸多明星项目。
这些项目到底有哪些呢?
如果对本章前面介绍的去中心化公司(DAC)概念感兴趣的话,你应该会记得区块链鬼才BM。BM在比特股的一次手续费投票中失败后,黯然地离开了比特股社区。但他并没有灰心丧气,在2016年转手创立了区块链内容开源协议steem,并利用steem底层建立了一个博客和社交媒体网站Steemit,如图1-23所示。
图1-23 Steemit.com主页
Steemit可以说是所有区块链内容激励模式的鼻祖级项目,后来几乎所有的区块链内容激励项目,或多或少地都会参考借鉴Steemit。
steem仍然和比特股一样采用DPoS和石墨烯底层,不同的是,它更专注内容领域,并采用了三种Token并行的模型,所有在Steemit上撰写的文章都会被记载入区块链,永远无法删除。同时,它创造了一款全新的内容激励形式,持有steem的人可以为喜欢的文章点赞评论,持有量越高,点赞的权重就越大,这样文章撰写者就会得到激励池中的Token作为物质奖励。
这种评选机制,既有效地遏制了传统点评软件和推荐算法中的刷量因素,又能给文章创作者带来真金白银的物质奖励,因此Steemit迅速发展起来,其中知名作者的一篇文章甚至可以赚取上万美元。
2017年,当Steemit运行平稳之后,BM再次宣布离开。因为他觉得内容分发领域仍然很小,不能囊括各种区块链应用。于是,BM开启了下一个项目——EOS.IO,如图1-24所示。
图1-24 EOS.IO Logo
EOS的官方全称是Enterprise Operation System(企业商用系统),缩写恰好对应古希腊神话中的黎明女神。在这个时间点上,EOS真的会是划破加密货币熊市漫长暗夜的黎明女神吗?
从各种意义上来说,人们常用EOS和ETH对标。EOS仍然利用石墨烯底层,加入了智能合约,并加入了一些BM的“新想法”。很多人都诟病以太坊速度不够快,转账需要支付gas。于是EOS打出了口号:百万TPS+免费转账。
2017年,BM组建了公司Block.one,为EOS提供技术开发,并从2017年年中开启了EOS长达一年的众筹。EOS的众筹很有意思,除了前几天之外,后面将近一年时间内,每天都会释放出200万EOS,并且根据当天收到的ETH按比例给投资者分成。此时就出现了一个趣事,EOS的ERC-20 Token已经登陆各大主流的交易所,因此当时的投资者既可以参加EOS的一级市场投资,又可以直接在二级市场购买。一年之后,EOS募集了超过720万个ETH,价值数十亿美元,是募资最多的区块链项目之一。
EOS针对ETH提出的主要解决思路是:
❑替换掉PoW,改用DPoS-BFT;
❑引入CPU、NET和RAM等资源。
EOS设计了21位区块生产者(Block Producer, BP)节点,由他们负责打包区块。他们是由所有持有EOS的人投票选举出来的,如图1-25所示。同时还有几十位备用节点,也会按照得票高低随时准备顶替21位主节点。
图1-25 EOS的21位区块生产者排名情况,截至2018年4月21日15:40 GMT+8
(来源:eospark.com)
由于只需要21个节点达成共识,因此达成共识的速度大大提升。由峰值测试结果来看,EOS主网的TPS能够达到7000~9000。同时,由于EOS从底层设计上就对侧链友好,因此,假如按照EOS主网的TPS达到1万,再加上99条侧链,就可以满足此前百万TPS的设想。
以太坊希望成为世界计算机,但是为了能够让用户“有节制”地使用计算机资源,设计了gas机制,矿工执行任意一条智能合约都需要消耗一定量的gas。在EOS中,用户转账无须支付手续费,大大降低了日常使用成本。但是为了能够控制用户不滥用区块链内珍贵的资源,用户需要通过抵押EOS获取一定量的CPU和NET,通过Bancor兑换获取一些RAM。
其实要理解这种变化很容易,任何一台计算机都有CPU、带宽(NEW)和RAM,“世界计算机”也一样。使用EOS执行操作也需要消耗这些资源。像CPU和带宽,每天都可以恢复,也就相当于免费。RAM用完即走,可以随时通过Bancor协议兑换RAM和EOS。
这里有一个小彩蛋,可以看到从2010年BM刚加入Bitcointalk论坛时,他就曾有过比特币应该加入CPU、带宽、硬盘等资源的想法。而到了EOS.IO, BM终于把这些资源加进去了,可以看出BM的整个理念是一脉相承的。
就这样,EOS通过这些技术亮点,再加上火热的21位BP竞选,迅速进入了人们的视野。时至今日,EOS已经成为市值前10的区块链项目,总市值达到以太坊的1/4。
由于区块生产者的存在,EOS迭代速度非常快,21个节点就相当于有21个团队在为EOS工作。当然这是有偿的,EOS每年会增发5%,其中的1%就是给所有EOS区块生产者和候选节点的。EOS生态也由上述这些区块生产者进行治理,他们甚至还拟定了一个EOS宪章。
但DPoS或许是一把双刃剑。其积极的方面是大大提高了区块链的性能,使很多DApp得以快速发展,在EOS主网上线后几个月的时间内,EOS上的DApp已经创造了上百亿的成交额,发展速度远远超过以太坊上的DApp。
但是另一方面,很多人认为EOS不那么去中心化,21个节点有串通、联盟等行为。比如,有一次某知名BP没有及时将黑客列入黑名单,导致用户的EOS被盗。
但正如前面所言,区块链是一片黑暗的雨林,谁也不知道出路在什么方向。牺牲部分去中心化也许是一种“退回几步”的行为,但是更好的性能或许能让试错之路走得很远。
除EOS之外,还有几条竞争力较强的智能合约公链,比如同样采取DPoS的波场、由比特股和以太坊的前任联合创始人Charles Hoskinson领导的Caradano、号称中国以太坊的NEO、号称欧洲以太坊的AE等。
智能合约公链的百花齐放,反映了人们对真正能够使用,能够冲破“不可能三角”的底层区块链的渴望和探索。至于到底哪条公链能够取得最终成功,至今还是一个未知数,但这也正是区块链行业生机勃勃、不断向上的一个缩影。
1.2.12 比特币扩容之争始末
这是本节最后一个要讨论的问题。纵观公有链的发展历史,无数人对比特币提出了自己的建议,但比特币的底层协议只采取了一小部分,剩下的大多数想法都付诸在比特币的衍生项目上,比如莱特币、以太坊、Dash和比特股等。
但是比特币底层需要改进吗?如果需要的话,要怎么改进?又由谁来改进呢?
在弄清上述问题前,需要先看看比特币生态中的三大角色:
❑用户(所有的持有者、接受BTC支付的商家和机构);
❑开发者(包括中本聪、Bitcoin Core以及所有的比特币协议贡献者);
❑矿工(包括普通矿工、矿机厂商和矿池)。
三者息息相关,缺一不可,但是三者的诉求却有所不同,这就直接导致了后续的比特币扩容之争。
在比特币挖矿过程中,很可能出现两个矿工同时挖到同一高度区块的意外情况,由于网络同步延迟等原因,其余矿工选择哪个区块延续会有不同意见,这就会导致分叉,如图1-26所示。在中本聪的比特币白皮书里,提出了对这种意外的解决办法,那就是最长链原则。节点会更新两条链上的信息,一旦其中一条链的区块高度超过另一条,短链就会被舍弃。
图1-26 区块分叉示意图
分叉不一定都是由意外引起的,一些区块链的系统升级也要依靠分叉完成。分叉根据是否向前兼容又分为软分叉和硬分叉。如图1-27所示,如果新旧版本区块兼容,则为软分叉,如果新旧版本不兼容,就是硬分叉,系统中就会出现两条链。
图1-27 硬分叉和软分叉的对比
硬分叉系统升级要求所有矿工达成一致意见,否则很容易出现分叉出两条链的情况。当矿工们有不同的选择时,结果将是共识分裂,支持不同观点的矿工分别在两条链上挖矿。
因为挖矿难度会随算力调整,比特币系统平均每十分钟出一个区块。为了防止网络受到拒绝服务(DDoS)攻击,中本聪当时把比特币区块大小限制在1MB内。这就意味着比特币在10分钟内处理交易的数量是有限的,大概每秒只进行7笔交易,而VISA信用卡每秒可以处理2000笔交易。
较低的扩展性(scalability)造成了比特币交易拥堵、转账手续费高等问题,随着接受比特币的人越来越多,这些问题也日益尖锐起来,因此提高比特币的TPS一直是社区热议的话题。
比特币社区提出了许多扩容方案,比如扩大区块大小、减小每笔交易记录大小(隔离见证也有此效果)、拓展链下交易(闪电网络)、侧链(RSK)等。核心开发社区本着不分裂社区的原则,谨慎处理这些问题,但是大部分算力并不掌握在开发组手里,要进行升级,还是要听取矿工们的意见。
最早的争执源于是否要将比特币的区块大小从1MB调整到2MB。
开发者分出了不同的队伍部署方案,其中Gavin Andresen从Bitcoin Core(Bitcoin Core是中本聪制作的比特币钱包的维护团队)分裂出Bitcoin Classic开发组支持扩容解决问题,但遭到Bitcoin Core开发组多数人的反对。Gavin Andresen是中本聪指认的接班人,在被Bitcoin Core拒绝后,他开始游说中国矿工,决定在算力支持率达到75%的时候,将比特币区块大小提高到2MB。
在未充分协商的情况下强行分裂社区,会对比特币网络稳定造成重大威胁。为了解决这个问题,2016年2月,在比特币基金会的组织下,比特币社区在中国香港地区举行了第一次“中本聪圆桌会议”。在这次会议中,矿工代表们和开发组达成了一个共识,即继续开发推进软分叉“Segwit/隔离见证”,并考虑硬分叉将比特币从1MB扩容到2MB~4MB。
但是这次共识似乎还不够好,很快在2017年5月,比特币社区的成员们又在纽约举办了大会,希望形成Segwit + 2MB区块的共识。但是在这次大会中,矿工和开发者的矛盾出现了,比如UASF问题。
纽约共识更加脆弱不堪,三个月后由于BCH的诞生彻底宣告作废。2017年8月,在viaBTC矿池、蚂蚁矿池、BTC.com等矿工阵营的支持下,比特币现金(Bitcoin Cash, BCH)通过硬分叉诞生了,如图1-28所示。
图1-28 比特币现金Logo
比特币现金在比特币的基础上,将区块大小提高到了8MB(目前已经变成了32MB),不支持隔离见证和闪电网络,并且继承了此前比特币区块链所有的转账记录(这是与过去其他竞争币的最大不同,比如莱特币的区块链账本是从零开始的)。
直接提高区块大小毫无疑问可以达到立竿见影的扩容效果,但是这样的扩容并不见得是最好的方式。首先,包括比特币在内的任何区块链系统,其链上资源都是宝贵的。如果所有交易都从主链进行,必然会令主链变得拥挤不堪。其次,过大的区块链账本相当于变相提高了全节点的门槛。目前比特币的全节点的账本体积为几百GB,尚在家庭PC能够承受的范围之内。如果账本体积快速提高几十倍,家用PC将会彻底丧失存储比特币完整账本的能力,这无疑会损害比特币的去中心化特点。从这个角度来看,多层网络+链下结算或许是比特币更好的扩容方式。
当然,比特币现金迈出了尝试性的一步,是很有试错价值的。比特币现金当时有多个开发团队,其中最知名的当属Bitcoin ABC和NChain。
NChain的核心成员中,有一位开发者名为Craig S. Wright,中文俗称CSW。他曾自称是中本聪,并得到了Gavin Andresen的认可。但是在后来,人们逐渐发现他无法拿出私钥签名来证实自己的说辞。
这位颇具争议的CSW和比特币早期布道者Roger Ver都曾力挺比特币现金(BCH),但是比特币现金的发展并没有那么顺利。
通过前文知道,比特币的区块间隔每2016块调整一次,使其始终平均约为10分钟。2017年8月,BCH刚分叉结束,并没有很多的算力切换过来,BCH开发组出于担心,为BCH加入了EDA机制。在这个机制下,如果若干时间内没有出块,则BCH的挖矿难度会降低20%,最多降低6次。
由于BTC和BCH均使用SHA-256加密算法,因此其矿机是共用的。很多矿工发现了EDA漏洞这个窍门,那就先故意不挖BCH而挖BTC,让BCH出块时间拉长,并在EDA调节下变得简单,等到BCH难度连降6次之后,再集中将算力切换过来以大量爆块(区块间隔远低于10分钟)。
这样的挖矿方式持续了一段时间,当时BCH的区块平均间隔远小于10分钟,因此在补丁被修复之前,BCH的区块长度已经超越BTC。但是请注意,最长链法则只在意外分叉时生效。
后来又发生了一件事,2018年11月,BCH社区最知名的开发团队之一Bitcoin ABC提出了比特币现金0.18版客户端提案,并在2018年11月15日进行一次“硬分叉式”的客户端升级。0.18版最重要的特性包括:用规范交易排序(CTOR)替代拓扑交易排序(TTOR),激活OP_CHECKDATASIG和OP_CHECKDATASIGVERIFY(DSV)两个操作码。
然而BCH社区另一知名开发团队NChain却提出了另一个提案,即Bitcoin SV。Bitcoin SV主张:将版本退回到0.1版并永久锁定,同时将区块扩容到128MB;激活OP_MUL、OP_INVERT、OP_LSHIFT和OP_RSHIFT四个操作码[34]。
没错,NChain团队又提出了新的扩容思路,其主张更大的区块(由矿工制定)和更固定的协议(以后不再轻易更改)。BCH社区自此分流成两股,一股继续支持Bitcoin ABC维护的BCH,一股则转而支持NChain主导的BSV(Bitcoin Satoshi Vision,即“中本聪愿景的比特币”,如图1-29所示)。
图1-29 Bitcoin SV Logo
区块链世界虽然没有硝烟弥漫,但是可以有算力大战。虽然硬分叉并不依照最长链原则,但是2018年11月发生的BSV和BCH(特指Bitcoin ABC团队支持的BCH)的算力大战仍然让人记忆犹新。双方阵营调集了一切能够调集的算力来争取最长链,似乎拥有最长链就可以获得“真正的BCH”称号。最终这场算力大战以一个更新补丁结束,两条链不再有受到重放攻击的危险,因此都顺利地存活了下来。
我们没有办法分出到底谁胜谁负,但是市场似乎在暗示着答案:截至2019年4月21日23:00(GMT + 8),1BTC价值1BTC,1BCH价值0.05 BTC,而1BSV价值仅0.01 BTC。
扩容没有正确答案,无论是BTC,还是BCH、BSV,都必将继续试错下去。