区块链真能改变世界?细谈区块链应用落地的六大挑战

原创
2282 天前
10087

很多人都说2018年会是区块链商用化的元年,但2018年都过大半年了,区块链距离改变我们的生活还非常远,除了ICO可作为募资跟投资的手段之外,区块链的应用可说是寥寥可数,目前排行最热门的DAPP,其DAU最多也不过数千人,连早期试用者都还很少,更别提什么改变人类生活了。


​▲去中心化应用的DAU非常低

如果要票选21世纪以来最被炒作、吹捧的技术,区块链绝对会榜上有名,由于区块链是多个计算机科学技术综合应用的产物,其运作逻辑与限制,对普罗大众来说并不是这么好理解,这导致很多所谓的媒体、专家、政治人物,都错误理解了区块链的特性,你听这些人讲区块链,会错认区块链是万灵丹,似乎任何难题只要套上「去中心化」、「区块链」就能解决。

本文将尝试用较浅白的语言,让大家了解区块链应用落地的六大挑战。

挑战一:效能与可扩展性

区块链的应用,也就是DAPP,必须运行在「支援智能合约的底层链」上,我们可以把底层链想像成是如Android或iOS的作业系统,如果作业系统有问题,运行在其上应用程式当然也会有问题,目前底层链的最大问题,就是效能跟可扩展性不足,拿以太坊为例,以太坊的TPS (transaction per second ——每秒能处理信息交换量)约在15 ~30的水准,做个对比,VISA的TPS平均是2,000~4,000,其峰值可达到25,000 ,两者根本不在同一个水平,这也是为什么去年加密猫跟今年的FOMO 3D虽然用户不多,但却足以瘫痪以太坊,让网路交易塞车的原因。


▲区块链的TPS 远低于 VISA

为什么区块链会跟传统中心化系统(如VISA)的效能有如此巨大差异?主要原因在于区块链是分散式帐本的技术,不管是什么DAPP,其运算结果都必须同步在每个节点上才能算达成共识。这就好比一群人做决定,必须经过讨论才能达成共识,但一个人做决定只要过自己这关就好了,前者一定会比后者慢。

所有区块链系统都无可避免的会遇到三个因素的平衡难题—— 效能、安全性、去中心化,这三者不可能完美兼顾,目前主流公链如比特币跟以太坊,都是往「安全性」与「去中心化」靠拢,而牺牲了效能。

但只要效能问题一天不解决,DAPP 就无法落地成为大规模应用,很多顶尖的电脑科学家都千方百计想优化区块链的共识演算法,试图解决效能问题,于是就有了「千链大战」,各种底层链项目如雨后春笋般不断冒出,很多项目都声称其链的TPS 可达数十万甚至百万以上,但或多或少都有所妥协,像是EOS 牺牲了去中心化特性(只有21个节点),而IOTA 则牺牲了安全性(没有矿工机制,节点作恶代价低)。

挑战二:更新不易

众所周知,所有的公链都是开源项目,一般人若想成为节点,必须下载其开源软件才能参与网路并共同维护帐本,每个人都运行一样的软件,才能让节点间的帐本能够同步。换句话说,如果今天有工程师优化了共识演算法,推出新版本的软体,也必须让所有节点都买单下载,才会让改版真的成功。

但问题是,共识算法的更新,往往会牵涉矿工节点的利益。举例来说,目前业界的普遍看法都是PoW虽然安全但太没有效率,新一代的区块链往往采用PoS或是DPoS,于是乎原本用PoW的区块链,也想改成PoS或DPoS ,但如果撤销PoW机制,原本矿工花大把钞票购置的的矿机就瞬间变成废铁了!矿工当然不愿意这么做,这正是以太坊目前所面临的问题,在可能冲击矿工利益的状况下,以太坊的工程师社群只能渐进修改共识机制,不能躁进,不然矿工会不愿意下载新版本的软体而导致帐本分岔。

这就是区块链奇耙的地方,因为它是分散式的系统,即便工程师想更新软件,也得网路的节点都买单才行,这加深了区块链技术更新的难度。

挑战三:责任归属问题

区块链去中心化的特性,使出事后的责任归属变得相当困难。举例来说,假设某银行被骇客入侵,受害者可以找银行求偿,但如果区块链被51% 攻击,用户必须自己承受所有的损失,对于已经习惯中心化系统的人来说,这样的「特性」是很难接受的。

挑战四:不能保证上链内容的正确性

区块链虽然可以在一定程度上确保帐本不可被窜改,但是却不能保障内容写入区块链前的正确性,举例来说,一个洒农药的香蕉,仍然可以在农产品履历追溯的区块链写上自己的香蕉是「有机」的。

其实光这点就可以打破很多人对区块链的应用的想像,举例来说前阵子柯文哲曾表示想要用区块链纪录选举募款金额,以避免名嘴追杀,但事实上,就算真的把募款金额上链,我们也不能保证上链的募款金额是正确的,或是真的把每一笔募款都上链了,在无法确保这两件事的前提下,用区块链纪录募款金额只不过是脱裤子放屁罢了。

同样的问题,也出现在智能合约的触发条件上,举个例子,假设有个DAPP 是世界杯博弈的应用,今天有个赌局是赌德国足球队是否会赢球,用户用以太币跟庄家对赌,假设德国队真的踢赢了,由于这个讯息独立于区块链之外,智能合约必须仰赖外部输入「德国队赢球」这个讯息才会触发打币的条件,这时候会面临两个问题:

一、谁来输入「德国队赢球」这个讯息

二、谁来确保「德国队赢球」这个讯息是正确的

你可能会说,智能合约可以接世界杯官网的API 啊,官网的资讯总不会错吧!这时第二层问题就来了,你怎么能确保这个智能合约接的API 是正确的呢?如果合约代码有后门怎么办?

通常这类的问题,会由投票的方式决定,也就是说只要过半数用户认可「德国队赢球」这个资讯,它就自动会成为触发智能合约的条件。

那我们再更深入地问一个问题,德国队赢球是大众可认知的讯息,但如果智能合约的触发条件无法被大众认知,只有少数人能够知道呢?这样就不能用投票的方式解决了,势必要找公证人来当讯息的输入者,但问题又回到原点,如果要找公证人,那我还做智能合约干嘛,干脆写法律合约就好了…

所以看出问题了吗?智能合约的应用范围是有限的,只要智能合约的运作需要输入外部讯息,合约本身怎么设计就会变得比较复杂,智能合约并不能取代所有的传统合约。

挑战五:需要审核智能合约的代码

DAPP 的智能合约代码会写在区块链上,这意味着代码是公开的,可供大众检视,但一般民众看不懂代码,如果真的要确保代码没有问题,势必得要找一个公正的第三方审核代码的安全性…

等等,区块链本身不是就是要「去信任」(trustless)吗?怎么这时候又要找第三方了?

先别说DAPP,退一万步来说,事实上当我们在使用区块链系统的时候,本身都必须建立在对整条链的信任上,我们必须信任比特币跟以太坊的代码没有问题才会去使用它,像比特币或以太坊这种大型开源项目,自然会有很多工程师去审核代码,算是比较安全的,但对于各种智能合约的应用来说,就不是这么一回事了,所以现在才会出现各种智能合约的审查公司(smart contract auditor),不过这么一来就只是把信任转嫁给这些审查公司而已,从这个角度来看,区块链永远不可能做到实质含意上的「去信任」。

再者,代码审核这件事本身是很困难的,即便现在检查觉得没问题,也难保之后不会出事。举2016年以太坊著名的The DAO攻击事件为例,The DAO在当时是区块链有史以来最大的众筹项目,但因为被骇客发现其智能合约的漏洞,盗走了约370万个以太币。由于受影响人数众多,当时以太坊创办人V神不得不跳出来主持大局,宣布将发布新版本的软体,把帐本回滚到尚未被攻击的状态,有少部分人认为此举违反了区块链「去中心化」的精神,不愿意更新版本,于是留在原地,这就是以太坊首次硬分岔——以太坊经典(Ethereum Classic)的由来。

像The DAO 这么火红的项目,其募资的智能合约自然会经过严格的审核,可惜即使经过顶尖程式专家与社群的检验,仍然被骇客发现重大缺陷。智能合约的核心精神——代码即法律(code is law)虽然立意良好,但实务上要执行,还是要克服很多技术以外的问题。

挑战六:用户可能根本不在乎你到底是不是「去中心化」

区块链的本质——去中心化、透明、不可篡改,这些都很好,但普通用户真的在乎吗?

我们可以从一些立意良好的「中心化」项目看出端倪,DuckDuckGo是一个标榜不会追踪你隐私的搜寻引擎,Ello是无广告版的脸书,两者都很棒,?但以用户数而言,都不算是实质意义上成功的项目,为什么?

因为比起在乎隐私或广告干扰,用户更在乎的是你能不能解决他的问题,搜寻引擎如果搜寻不到最多、最精准的资料,社群媒体如果无法满足跟朋友互动的需求,大家就不会有诱因去使用。

假设今天底层公链的效能问题被解决了,某公司在一条效能超强的链上开发了一个去中心化、开源版本的Facebook,我们就叫他DFB 好了,DFB 号称可以解决个资被企业乱用的问题,且绝对不会追踪你的隐私。但DFB 因为建立在分布式运算、储存系统(区块链)的关系,导致效能会比较差一点,这意味着你每点开一个对话视窗,或是每浏览一张照片,都会比中心化版本的Facebook 多几十毫秒甚至几百毫秒上的延迟,你还会想用吗?

答案不言可喻了。

笔者认为,并非所有的软体都适合用区块链去做去中心化的版本,如果DAPP不能比中心化应用更加满足用户的「核心需求」,光在透明、去中心化、不可篡改这几个特点上做文章,是没有意义的。

结论

坦白说,区块链真的不是很好懂,因为不好懂,所以让很多人片面误解区块链的特性,进而对其应用产生错误的想像,现在有不少教授、专家、媒体、政治人物,都把区块链视为万灵丹,而忽略其本质上最根本的限制。