很多人都说“2018年是区块链商用化的元年”,但2018年都过去大半年了,真正落地的区块链应用屈指可数。目前排名第一的DApp,其DAU(用户日活跃量)最多也不过一千多人,连早期试用者都很少,更别提什么改变人类生活了。
图:去中心化应用的DAU非常低
如果票选21世纪以来“被炒作、吹捧最多的技术”,区块链绝对榜上有名。区块链是多个计算机科学技术综合应用的产物,其运作逻辑与限制,对普通大众来说,并不是那么容易理解。这就导致很多所谓的媒体和专家学者,都错误地理解了区块链的特性。如果你去听这些人讲区块链,会错认为区块链是“灵丹妙药”,似乎任何难题只要套上“去中心化”、“区块链”就能解决。
区块链应用真正落地,进入寻常百姓生活,其实难度很大,难在何处呢?且看本文梳理的区块链应用落地的六大挑战。
1. 性能与可扩展性
去中心化应用,即DApp,必须运行在支持智能合约的底层公链上。底层公链可以想像成是Android或iOS系统,如果系统有问题,运行在其上的App自然也会有问题。
目前,底层公链最大问题是性能和可扩展性不足。拿以太坊为例,以太坊的TPS(每秒能处理的信息量)在15~30笔之间,而中心化的VISA,TPS是2000~4000笔,峰值可达到25000笔。这两者根本不在同一个量级,这也是为什么去年的加密猫跟今年的FOMO 3D,虽然用户不多,却足以让以太坊网络拥堵、瘫痪的原因。
图:目前区块链的TPS远低于VISA
区块链与传统的中心化系统,为什么在性能方面有如此巨大的差异?主要原因在于,区块链采用的是分布式账本的技术,无论什么DApp,其运算结果都必须同步到每一个节点上才算达成了共识。这就好比一群人做决定,必须经过讨论才能达成共识,和一个人做决定的速度相比,前者一定会比后者慢。
所有的区块链系统,都无可避免地会遇到三个因素的平衡难题——性能、安全性、去中心化。这三者不可能完美兼顾,目前主流公链,如比特币和以太坊,都往安全性和去中心化靠拢,牺牲了性能。
但只要性能问题一天不解决,DApp就无法落地成为大规模应用。很多顶尖的计算机科学家,都在千方百计地优化区块链的共识算法,试图解决性能低下的问题,于是就有了“千链大战”。各种底层公链项目如雨后春笋般不断冒出,很多项目声称其TPS可达数十万甚至百万以上,但或多或少都有所妥协,比如:EOS牺牲了去中心化特性(21个节点),而IOTA牺牲了安全性(没有矿工机制,节点作恶代价低)。
2. 共识算法的更新
众所周知,所有的公链都是开源项目。一般人若想成为节点,必须下载其开源软件才能参与网络并共同维护账本,每个人都运行一样的软件,才能让节点间的账本能够同步。换句话说,如果今天有工程师优化了共识算法,推出了新版本的软件,也必须让其他节点都下载,才能让改版真的成功。
但问题是,共识算法的更新,往往会牵涉矿工、节点的利益。举例来说,目前业界的普遍看法是,PoW虽然安全但没有效率,新一代的区块链往往采用PoS或是DPoS。于是,原本用PoW的区块链,也想改成PoS或DPoS,但如果撤销PoW机制,之前矿工花费巨资购置的矿机可能就要报废了。矿工当然不愿意这么做,这正是以太坊目前所面临的问题。在可能冲击矿工利益的状况下,以太坊的开发者社群只能渐进地修改共识机制,不能躁进,不然矿工会因为不愿意下载新版本的软件而导致分叉。
这就是区块链“奇葩”的地方,因为它是分散式的系统,即便开发者想更新软件,也得网络上的节点都买单才行,这就加深了区块链技术更新的难度。
3. 责任归属问题
由于区块链去中心化的特性,出事后的责任归属变得相当困难。举例来说,假设某银行被黑客入侵,受害者可以找银行赔偿,但如果基于PoW的区块链项目遭受51%算力攻击,用户必须自己承受所有的损失。对于已经习惯中心化系统的人来说,这样的特性非常难以接受。
4. 不能保证上链内容的正确性
区块链虽然可以在一定程度上确保账本不可篡改,但却不能保证写入内容的正确性。举个例子,一个使用了农药的香蕉,仍然可以在追溯农产品的区块链上,标记为有机产品。
其实,光这点就可以打破很多人对区块链应用不切实际的幻想。举个例子,前阵子台湾柯文哲表示,想用区块链记录选举的募款金额,以避免媒体的不实报道。但事实上,就算真的把募款金额上链,也不能保证上链的募款金额是正确的,或是真的把每一笔募款都上链了。
同样的问题,也出现在智能合约的触发条件上。举个例子,假设有个世界杯竞猜DApp,猜测今天德国足球队是否会赢球,用户用以太币下注。假设德国队踢赢了,由于这个资讯独立于区块链之外,智能合约必须仰赖外部输入“德国队赢球”这个资讯才能触发智能合约。
这时候会面临两个问题:1、谁来输入“德国队赢球”这个资讯;2、谁来确保“德国队赢球”这个资讯是正确的。
你可能会说,智能合约可以接入世界杯官网的API啊,官网的资讯总不会错吧。这时,第二层问题就来了:怎么确保这个智能合约接入的API是正确的?如果合约代码有后门怎么办?
通常这类问题,会通过投票的方式解决。也就是说,只要过半数用户认可“德国队赢球”这个资讯,它就自动会成为触发智能合约的条件。
再深入问一个问题:德国队赢球这个资讯大众容易获取,但智能合约的触发条件普通大众难以知道,如果只有少数人知道呢?这样就不能用投票的方式解决了,势必要找公证人来当资讯的输入者,这样问题又回到了原点。如果要找公证人,那为什么还要做智能合约,干脆写法律合同好了。
所以,看出问题了吗?智能合约的应用范围是有限的,只要智能合约的运作需要输入外部资讯,合约本身怎么设计就会变得比较复杂,智能合约并不能取代所有的传统合约。
5. 智能合约的代码审核
DApp的智能合约代码写在区块链上,这意味着代码是公开的,可供大众审核,但一般人看不懂代码。如果真的要确保代码没有问题,势必得要找一个公正的第三方审核代码的安全性。
不过,区块链本身不就是要“去中介化(trustless)”吗?怎么这时候又要找第三方了?
先不说DApp,退一万步来说,当我们在使用区块链系统的时候,都必须建立在对整条链的信任上。我们必须信任,比特币和以太坊的代码没有问题,才会去使用它。像比特币和以太坊这种大型开源项目,自然会有很多工程师去审核代码,相对比较安全。
但对于各种智能合约的应用来说,就不是这么一回事了。所以,现在出现了各种智能合约的审查机构。不过这么一来,只不过是把信任转嫁给这些审查公司而已。从这个角度来看,区块链永远不可能做到实质上的“去中介化”。
再者,代码审核这件事本身难度很大,即便现在没有检测出问题,也难保之后不会出事。以2016年著名的以太坊The DAO攻击事件为例:
The DAO在当时是区块链有史以来最大的众筹项目,但因为被黑客发现其智能合约的漏洞,盗走了约370万个以太币。由于受影响人数众多,当时以太坊创始人V神不得不跳出来主持大局,宣布将发布新版本的软件,把账本回滚到尚未被攻击的状态。有少部分人认为,此举违反了区块链去中心化的精神,不愿意更新版本,于是留在原地。这就是以太坊首次硬分叉,以太坊经典由此而来。
像The DAO这么火的项目,其用于募资而写的智能合约自然会经过严格的审核,可惜即使经过顶尖计算机专家与社群的检查,仍然被黑客发现了重大缺陷。
智能合约的核心精神——代码即法律,虽然想法很好,但实际执行中,还要克服很多问题。
6. 用户可能根本不在乎是否去中心化
区块链的特点——去中心化、透明、不可篡改,这些都很好,但普通用户真的在乎吗?
Duck Duck Go是一款标榜不会追踪隐私的搜索引擎,Ello是无广告版的脸书,两者都很棒,但从用户数而言,都不算成功的项目。为什么?
因为比起隐私或广告干扰,用户更在乎的是能不能解决他的问题。搜索引擎如果搜索不到最多、最精准的资料,社交媒体如果无法满足跟朋友互动的需求,大家就不会有动力去使用。
假设底层公链的性能问题解决了,某公司开发了一个去中心化、开源版本的Facebook,姑且称为DFB。DFB号称可以解决个人资料被滥用的问题,且绝对不会追踪隐私。但因为DFB建立在区块链上,导致性能会稍微弱些。这意味着每点开一个对话窗口,或是每浏览一张照片,都会比中心化版本的Facebook多几十毫秒甚至几百毫秒上的延迟,你还会想用吗?答案不言可喻。
笔者认为,并非所有的应用都适合用区块链技术实现去中心化的版本。如果DApp不能比中心化App更能满足用户的核心需求,光在透明、去中心化、不可篡改这几个特点上做文章,是没有意义的。
小结
总而言之,对普通大众而言,理解区块链有一定的难度,因为不好懂,所以让很多人对区块链的了解非常片面,进而对其应用产生不切实际的幻想。
希望阅读完本文的读者,能理性地认识到:区块链并不是万能的,距离大规模的应用还有很多挑战,还有很长的路要走。