区块链火了这么久,为什么我们能用到的DApp还是没几个?
去年下半年开始,由于代币经济的火热,区块链逐渐进入了大众视野。
ICO、大妈进场、百倍币、传销……区块链的金融属性被过分夸大,甚至逐渐成为了非法融资的途径之一。
随着今年上半年金融有关部门的联合打击、区块链行业的自律和投资者的日趋冷静,区块链逐渐走向了应用化的「正途」。
抛开区块链可以发币,区块链本身的好处还有许多,比如可溯源、公开透明、分布式抗打击等等。也有不少企业将区块链率先应用到了 B 端的云服务领域。
但是,与区块链行业火热不同的是,作为一个普通的「用户」,似乎除了比特币、以太坊钱包之外,依然用不到什么区块链的产品……
这是为什么呢?难道区块链和人工 智能 一样,最终也只能成为「神龙见首不见尾」的后端制成技术吗?这似乎和诸多区块链项目声称的「打造下一代互联网」的愿景并不一致。
毕竟,互联网最大的特点就是人人可接入的易用性。
在讲到“为什么没有”之前,首先要讲另外一个问题,就是“区块链到底能不能实现普通用户的互联网应用场景?”
这里说的普通用户的用户场景,就是指我们每天上网刷微博、聊微信、看电影、听音乐这些活动。
先说结论:这些都能实现。
不谈区块链,我们先举另外一个例子——分布式网络 ZeroNet。
ZeroNet 是一个上线于 2015 的分布式基础设施,它旨在构建一种完全无中心服务器的网络环境。
ZeroNet 本身并不是一个 DApp,而是一个承载 DApp 的平台。它像以太坊、EOS等主链一样,提供了一个可以搭建 DApp 的开发和通信框架。
但与主流区块链项目不同,ZeroNet 没有为了区块链而牺牲掉项目的可用性。如果说在以太坊上 DApp 的开发环境还处于超文本链接协议诞生之前的水平,那么 ZeroNet 则为 DApp 开发者提供了一个类似于现代网页开发的开发环境。
ZeroNet 本身使用 Python 语言写成,但开发者可以使用 HTML5、JavaScripts、CoffeeScript 等现代网页语言编写程序。与其它基础设施不同的是,ZeroNet 支持标准 SQL 数据库,可以方便地开发出真正无服务器的动态网站。
在没有使用任何中心服务器的情况下,ZeroNet 有去中心的微博、去中心的微信、去中心的在线视频网站、去中心的音乐网站等等,基本上你在普通互联网上每天要做的事情,在 ZeroNet里都可以实现。
但是,经过了 3 年的发展,ZeroNet 的用户量却并没有显著增长。虽然 ZeroNet 并不是现在区块链界所认可的利用区块链技术的 DApp,但是作为分布式应用 ZeroNet 提供了一个比现在所有区块链技术都更成熟的解决方案。
这也意味着,ZeroNet 踩过的坑,区块链应用也都要踩一遍。
存储冗余问题
去中心化千好万好,最不好的一点就是:不经济。
之前曾有媒体报道,仅 Google 一家公司就存储了 5EB 的互联网数据,即 50 亿 GB。而对于每一个使用 Google 的普通用户来说,无论是使用 Google 进行搜索,收发邮件,听播客还是看视频,都不需要本地有如此海量的存储空间。
而对于分布式应用的用户来说,每个用户既是使用者,又是存储和带宽的贡献者。这意味着抬高了普通用户使用分布式应用的门槛。
在传统互联网模式下,比如 Google 要保障一个视频永久在线并被所有人都能看到,可能只需要留存一份视频(实际情况可能会有几份备份)。
但在分布式应用中,的每一个用户节点对于整个网络来说都是不可靠的。因此,要保持这个视频随时随地都能被访问,可能需要数十倍甚至数百倍于传统网络中的被分量。
理论上,如果有一个精妙的算法,可以动态调节出全网的可靠存储量和总带宽。而实际上,现在的分布式应用都比较粗糙,以 ZeroNet 为例,它视每一个用户均为全量备份节点。
在 ZeroNet 中,当你访问一个网站,它就会默认把这个网站的所有数据下载到你的本地,并自动为他人做种。如果你删除了这些数据,那么你自己也不再能继续访问这个网站。
尽管提供了可选做种文件这一功能,但同样的如果你取消了对一个可选文件的做种你也自然不能继续看这个文件了。因此,在 ZeroNet 这种模式下,几乎不可能承载大型视频网站,
而 ZeroNet 的这一问题其实也困扰着几乎所有的区块链分布式应用。
“私密”内容
大家经常听到,区块链的账本是一部“加密”的账本。
但这里的加密,并非普通人理解的加密。事实上,我们还经常听说区块链的另一个特性“透明可追溯”。
区块链的加密,是指通过加密方式确保参与整个链条的每一个节点都不能超出规则修改,也不能伪造成别人添加信息的一种手段。
而大多数的区块链,都遵循透明可追溯的原则,每一个节点都可以看到每一次交易的信息。
私密内容与分布式存储存在意义上的冲突,换个更简单的例子来说。我们都知道当我们用迅雷下载一部影片的时候,迅雷也会在下载的过程中利用一部分带宽来帮助别人下载,这是一个典型的“你帮我,我也帮他”的模型。
但如果你要传输或存储的并非是一个公开文件,而是一个只有你和对方可以看的私密文件,那么第三人为什么要帮你们去“做种”呢?
没有私密会带来许多问题,比如聊个天全网都知道了,写个日记也全网都知道了。
而更糟糕的是,这个问题很难从技术的角度解决,即便是设计出了可存储私密信息的分布式应用也很难推广。因为这一冲突根植于分布式网络的理念——如果一个东西是完全私密的,那么别的用户就没有协助你存储这一内容的义务。
网络延时
目前,在以太坊及之后的一些区块链里,秒级成交已经成为了宣传点之一。
但“能做到”和“做到要多少成本”不是一个概念。
以以太坊为例,现在有一种很流行的做法是把一篇文章放到一笔以太坊交易的备注里,以达到通过以太坊永久保存的目的。而如果你要让一笔以太坊交易成立,是需要花费一定的矿工费的。
所谓矿工费,就是指交易发起者需要交纳一定的以太坊,用于奖励那些主动传播这笔交易的人。而如果你想要在以太坊上实现“秒级信息传递”,高额的矿工费自然是少不了的。
而抛开需要矿工费的那些分布式项目,网络延时也是一个大问题。因为P2P网络不存在一个稳定的中转服务器,因此每次发送信息都是通过多个作为用户的节点中转送达,在信息传递上很难满足即时传输。
抱着“人人为我,我为人人”的 ZeroNet 里,虽然发布文章不需要矿工费,但文章的同步速度是很慢。用户可能发布之后几个小时后,才能被人看到。
文章还好,如果是要实现微博、微信这种需要高频信息发布和接收的 App,就会出现一些问题。比如在 ZeroNet 中的分布式微博 ZeroMe 中,一条微博下面的评论经常出现前后时间线错乱。这就是因为评论者发布的时间虽然早,但同步的时间慢,而后来者已经根据他之前的回复进一步展开了讨论导致的。
伪去中心化
在目前众多可以使用的分布式应用里,伪去中心化是最严重的一个问题。
何为伪去中心化?即应用并非全部去中心化,或关键部件无法去中心化。
比如许多 DApp 呈现给用户的仍然是一个网站的形式,而对于网站来说呈现界面需要能够存储前端界面的中心化服务器和在域名注册商那里注册的域名,这都是暂时无法中心化的。
伪去中心化有什么问题?问题非常大,在普通用户领域几乎可以说是去掉了 DApp 的一切好处。
区块链在许多场合的应用都是解决一个信任问题,比如疫苗、酒、水果等商品药品的区块链溯源,是为了解决货物从生产出来交付到消费者手中这一过程每一个环节的信任问题。
在过去的中心化权威认证模式下,信任是逐级传递的,消费者信任商场,商场信任物流,物流信任仓储,仓储信任厂家。如果问题出现在仓储环节,而物流没有发现,那么商场和消费者没有办法进行进一步检验。在这种模式下,消费者必须假设完全信用商场,其检验才是有效的。
在区块链信任模型下,消费者、商场、物流、仓储、厂家这些角色彼此之间都是透明的,消费者可以越过商场这一环节去直接追溯货物在仓储时是否有得到妥善保管。在这种模式下,消费者无需假设信任任何人,因为自己可以做全程的检验。
然而,如果此时,交付给用户的查询界面是一个网站,那么就存在一个网站所有权的问题。网站由谁设立,网站的后台是否真的接入了区块链数据库,还是说只是一个中心化的数据,这些消费者是无法检验的。因此,凭空又多了一个消费者需要信任网站没有作假的假设。
换一个例子来说,在内容分发领域,目前最知名的区块链内容分发网站是 Stemmit。但 Stemmit 并没有采用我们上文提到的文章上链的办法,而只是把区块链应用在了文章作者的激励上。
因为如果把文章内容“刻在”区块链上,意味着读者需要专门安装非常复杂的相关客户端和本地环境才能阅读文章,这与内容分发的本质存在冲突。
而如果把区块链应用在激励体系上,表面看起来可以解决一些作者对平台不信任的问题,比如平台资源倾斜、官方刷榜、修改收益数据、抽成过高等。
但这其中的一个问题是,如果域名、前端展示甚至是内容本体数据都以中心模式受 Stemmit 控制,那么一个去中心的激励规则成立的前提,也是大家认可 Steemit 官方不会在这个规则中作假。
如此一来,区块链及其代币也就失去了它的意义,直接改名叫“网站积分”就好了。
另一个例子是在视频领域——PeerTube。
2015 年上线的开源项目 Peertube,旨在构建一个去中心的 YouTube 社区。它通过 WebTorrent 和 ActivityPub 等分布式技术,实现了让一个视频网站可以在完全不存储视频源文件的情况下运转。
然而,这并不能逃过 DMCA TakeDown 的「正义制裁」,因为随着时代的发展「服务器上存在侵权文件」已不再是数字侵权的唯一构成要件。提供在线播放、文字链接等服务,均有可能造成侵权。
而一旦被确认侵权,Peertube 上的视频尽管永存于 P2P 网络,但用于播放这些永存数据的前端网站(域名和运行网站界面的服务器)则会被停止服务。
这导致 Peertube 失去了其原本为了反对 Youtube 对视频拥有控制权而建立的目的。
移动端不好做
DApp 这个词的流行,一方面源自于以太坊社区的发明,另外一方面源自于移动互联网对传统互联网的压倒性普及。
在十年前,类似的概念还叫做“分布式计算”,如果一定要找造个类似的词也一定是 DWeb 而不是 DApp。
然而事实上, DApp 在移动端上的实现难度要远大于 PC 端。
在移动端上实现 DApp 有几个不同侧面的难点:
首先,是技术层面,移动端计算性能和存储空间受限,对于任何 DApp 来说都难以在移动端上跑全量节点(比如矿机、冷钱包,或类似的)。因此,如果预期 DApp 的主要应用场景是在移动端,那么会面临网络贡献量与使用量不匹配的问题。
其次,在政策方面,无论在任何一个国家和地区,拥有移动市场半壁江山的苹果都遵循需要有一个应用开发者来承担应用可能带来的侵权风险的原则。这导致一些基于社区开发的开源项目,无法登陆苹果 App Store,因为事实上没有人可以为应用中的内容负责。
这种冲突,有点类似于实体经济中的共享经济,共享经济瓦解了酒店集团、出租车公司的利益,同时分散了他们的责任。一旦出现事故,难以确定责任主体,也就无从谈及追责和赔偿。
这是一种新技术与几百年来业已形成的成熟 商业 规则之间的冲突,是区块链行业自身无法解决的。
「不可篡改」=「无法消错」
我们早前经常听说区块链是「不可回滚」的,后来我们又听说很多区块链社区投票一致实现了「集体回滚」。
为什么区块链中,回滚是一件重要的事情呢?
区块链本质上是一种数据库技术,在当今的大部分认知中,区块链被认为是一种「先进」的数据库技术。
然而事实上,区块链却是一种天生瘸腿的数据库技术。在数据库最基础的四大功能「增删改查」中,区块链只能实现增和查两项。
这在区块链的特性中被体现为「不可篡改性」,而大多数情况下这对于一项数据库技术来说并不是什么好事。
在传统数据库中,管理员拥有对数据库进行任意修改的权限,这意味着数据库中的数据出现异常,管理员一个人就可以实现数据的修正。而在区块链中,并没有这个管理员,想要实现数据修正,必须所有用户同意才可以。
如果我们假设有一个顶尖黑客通过漏洞,为自己的 QQ 上增加了 100 万Q币。腾讯技术部门的成员发现了这一问题,只要在数据库中将对应 QQ 的 Q币值改回去就可以了。
而如果此时,Q币是使用区块链存储的,那么麻烦就来了,因为这个黑客修改100万Q币的行为已经发生而且被同步到了每一个用户的手里,那么腾讯不得不发出一个公告「请求」8 亿 QQ 用户共同修改这一事实才能「回滚」。
小节
诞生于 2001 年的分布式协议 BitTorrent 在过去的 17 年中,被广泛应用于互联网的几乎每个角落。而推出这一协议的背后公司 BitTorrent Inc 却在音乐分发、视频平台、在线直播、To B 云盘、加密通信、P2P 浏览器等几乎全部领域竞争失败,并于今年 6 月份被尚未推出实际产品的区块链项目波场收购。
在币圈中,有人认为区块链不应与互联网技术等同,不能用互联网的应用场景去衡量区块链的发展。这确实是一种理性的看法,事实上区块链确实更像是去年热炒的人工 智能 。
它是一项在未来不可或缺的技术,但本身并不具备以单一技术实现转化并大规模应用的能力。
但是,区块链的热度已经远超于人工 智能 ,几条公链为了冲击市值也都将自己的对标对象描绘为整个传统互联网而非纯粹的技术公司。而技术本身也不一定能撑起高的 商业 价值。
在拂去区块链虚高的市值之后,在区块链应用领域似乎也需要一场祛魅的革命。
AD: 8月30日,猎云网2018年度“智慧+新服务”企业服务峰会落地上海!携手众多行业先锋领袖,共同探讨企业服务行业新风向。