作者: 冒志鸿(ArcBlock 首席架构师、首席执行官)

我准备从本月开始推出一个专栏《去中心化应用认知升级》,配合这个专栏我还准备制作一些相关的短视频,定期播出或者通过 Clubhouse 讨论。这个专栏面向更广泛的关注区块链和去中心化应用的人,而不仅仅是开发者或专业人士,力图每一段短视频只讲述一个概念和知识点,并且配合 ArcBlock 的实际设计和实现,让更多人在认知去中心化应用(Decentralized Applications,缩写 DApps)价值的同时,意识到这一切已经不仅仅是愿景,而是立刻可以使用的现实技术和产品。

cover

很多年前在互联网刚刚开始商用的时候我亲历过一件事:一个著名的广告设计背景的团队为客户设计一个网站的方案,设计非常精美,从审美角度他们在所有的竞争者中一枝独秀,但只有一个问题——他们认为是 HTML 页面就是图片,因此每个页面他们的设计都是一张完整的图片!在今天大家对 Web 的认知之下,看起来这是很可笑的事情,但是在当时这样的事比比皆是。今天如果看去中心应用,如果以为就只是一个和互联网架构一样的东西,使用了区块链,使用了智能合约,就认为这是去中心化应用应该的样子,就如同以为做 Web 网页和做一批印刷彩页图片一样。

破除迷思就是认知升级的一部分

去中心应用一直是一个非常令人费解的名词。对去中心化应用的本质不太能够透彻理解,这并不奇怪。几年前,我自己刚刚开始接触这个领域的时候,同样也会对各种概念困惑不解,看着市场上各种是是而非的描述,甚至偶尔怀疑自己的智商或者多年的计算机科学常识。早期的 DApps 更多流于概念,以至于很多人都很迷惑,而且对去中心化应用的各种曲解层出不穷——有过度崇拜的原教旨主义者(比如言必称去中心化程度够不够的哪些人),有故弄玄虚的各种“概念”(比如“胖协议”什么的),更有很多出于商业推广目的而夸大其辞的宣传。最近这两年,由于对去中心化应用的过度憧憬进而带来的失望,似乎又开始走向另一个极端。

因此在过去几年里, 我们边开发 ArcBlock 平台边撰写了数十篇文章从多个不同的角度来探讨什么是 DApps,以及什么不是 Dapps,实现 DApps 有些什么优势。我们撰写的由中信出版集团去年出版的《区块链实战:从技术创新到商业模式》一书更是拿出了好几章篇幅来阐述这个问题。

在 2019 年《去中心化应用开发设计:学习如何运用聚焦去中心化的产品思维模式》的在线课程中,我主要从去中心化身份(DID)角度讲述了开发去中心化应用的思想。如果你还没有看过那个讲座,那么我建议你花一些时间去听一下,因为开发去中心化应用最需要的是一种思维模式的转变,在开发方式、开发工具、语言、框架甚至技能方面并不需要太大的更新,但却需要在设计思想上有一些新的思路。

类比“中心化应用”与“去中心化应用”

了解 ArcBlock 的朋友都知道,我们在产品和技术设计上经常提到“第一性原理”,但是在帮助大家如何更好地理解去中心化应用的时候, 我想更多使用“类比”的方法。

前些时候,我们的设计师曹雯写了一篇用乐高积木来类比理解 ArcBlock 体系架构的文章《逛乐高玩具店:开发一款去中心化应用的有趣旅程》就是从类比的角度让读者轻松理解我们的软件架构,获得了很多好评。

当我们采用正确的类比,就很容易理解去中心应用和中心化的应用的区别和联系,一些问题和疑问就迎刃而解。无论是建筑设计还是乐高积木,都是用类比的方法来帮助大家更好理解:建筑和去中心化应用是从宏观的角度类比,让大家更容易体会什么是去中心应用;从乐高积木看去中心化应用,是从微观的类比,让大家从细微处去理解如何构建中心化应用。 两者有异曲同工之妙。需要注意一点,“类比”的方法往往是为了帮助大家的理解,有些时候未必精确,因此一定需要在类比对概念理解后,进一步深入思考。

model

图: 一个用积木搭成的房子的模型和实际的房子

软件设计师(Software Architect)和和建筑设计师(Architect)都是 Architect,因此我们不妨用住宅来理解一下,从架构的角度,去中心化软件跟今天常见的互联网时代的中心化软件有什么区别和联系。

下图左边的高层公寓,可能是很多人都熟悉的每日生活环境。用这样的住房来类比今天的很多互联网服务还是挺贴切的:公寓式的住宅是一种典型的具有中心化特点的服务,很多住户共享了楼道、楼梯、电梯,包括地面以上的空间。很多情况下,住户实际上并没有拥有建筑或者土地,本质上只是在“租用”使用权。对比想象一下,你使用的微信、微博等很多互联网服务,你是和千千万万其他人一起“租用”服务提供商搭建的服务,你账户其实并不是真正属于你,你的数据并不在你的掌控之下。

house

图:香港一处高层公寓(Unsplash @jcgellidon)和澳洲一栋现代风格住宅(Unsplash @rarchitecturemelbourne)_

图右则是用一栋独立的住宅来类比“去中心化应用”。去中心化应用更加强调用户的自主性,一如这样的独栋住宅,住户往往自主拥有其土地,拥有其建筑。这正如同“去中心化应用”所强调的,用户应该拥有自主的身份、用户拥有自主的数据资产。

结合这个类比,也许会更容易理解“去中心化应用”这四大重要特点,你可以试着理解和思考一下:

  • 自主的用户身份和认证体系,没有人能夺取和控制
  • 用户数据的确权和授权,数据自主可控、数据可携带
  • 更好保护隐私和抗审查的能力
  • 能去中心化地运行,降低对其他服务的依赖

通过上图的类比,可以很容易理解“去中心化应用”和现在的“中心化应用”有些什么异同,以及在未来你自己会更希望拥有什么样的应用。但也请思考一下上面的这种类比也会有些什么偏差?最容易的偏差是左图是一个比较拥挤的公寓,而右图是一栋比较高端的住宅,在现实中也会有高端豪华的公寓和比较局促的独栋住宅。但如果在类比的时候能够认清这些偏差,透过现象看本质,还是能更好地利用类比来理解一些新生事物的概念。

“中心化应用”和“去中心化应用”有很多共性

那么去中心化应用的一切都是独立自主的吗?用建筑的概念来类比是很容易理解的,虽然你的独栋房子是非常的独立而去中心化的,但是通常你会接入大家共用的供电网络、电话、宽带,你的房子通常也会接入所在小区的小水道系统……除了这些你还会享受各种公共服务,比如邮局会给你寄信,快递公司给你投递包裹,警察会维护治安,所在地政府会负责道路、路灯等市政的一切。去中心应用正如这“去中心化的”独栋住宅一样,给了你非常大的独立性和空间,但是你并没有因此和世界隔离。这里不得不再强调我一直坚持的一个观点:中心化和去中心化并不是绝对的和对立的关系。

作为去中心化应用,仍然可能需要使用一些中心化服务来让应用变得使用体验更好。例如域名(DNS)体系是一个相对中心化的体系,去中心化应用固然可以完全不使用域名,也有一些新的去中心化域名服务正在兴起,但是离被公众接受还有很大的距离。同样,去中心化应用的服务器,乃至目前的区块链,都不是脱离互联网而存在的。 这正如独栋的房子仍然得建立在地上,理想中的独栋房子总是建在规划好的区域,这样才能有更好的公共服务。

这也就很容易理解,虽然“去中心化应用”有更好保护隐私和抗审查的能力,但并非“法外之地”,它带来的是对非法强取豪夺的对抗能力,仍然符合现代法治社会的治理机制,甚至是一种更加体现民主法制的治理方式。在合法性方面,中心化和去中心化应用并无太大的区别。

“去中心化应用”更难设计和实现吗?

采用类比的方法,你可以自问是设计一栋 30 层的高层公寓的“难度”更大呢? 还是设计一栋独栋的两层别墅难度更大呢?施工建造一栋高层公寓的成本更高,对建筑要求更高?还是独栋别墅的成本更高,对建筑要求更高? 但也同时想一下,相同面积的住宅,通常是一栋高层公寓里一套单价更贵,还是独栋别墅更贵? 为什么?

去中心化应用的在设计和实现的思想上有所区别,其实搞明白去中心应用概念之后是非常自然的,甚至比中心化应用更为容易理解,因为我们人本身就是去中心化的,不存在一个“母体(Martrix)”系统来统一连接管理全世界的人类,相反每个人通过自己对世界的感知来建立起自己的世界。 因此某种角度而言,去中心化应用更为简单和直接。

从软件工程角度出发,设计、开发和运营一个有很多用户的中心化服务的成本和难度很可能远远大于去中心化应用。 但是作为用户来使用去中心化应用的费用可能会高于租用中心化的服务。

ArcBlock 的 ABT 节点Blocklet 框架就是把这个设计、开发和运营的门槛进一步降低。事实上我们相信未来的去中心应用的繁荣将带来大量中小,甚至个人开发者的繁荣,而不是今天大量的互联网巨无霸垄断的局面。

用户更难安装和使用 “去中心化应用” 吗?

去中心化应用的一个非常重要的特点是“去中心化部署”。去中心化部署一直是一个难题,在上一代去中心化应用的运动中,去中心化软件最大的挑战就是安装。在过去的去中心化社交软件的运动中,最成功最有影响力的项目如 Mastondon、Diaspora,当你看到其如何开始的文档,就会知道,除了技术极客和程序员们,还需要有巨大的热情和一定的网络和服务资源,才有可能安装其这些去中心化应用的实例。也正是因为这样困难,他们的设计往往需要一些热心人为一群人来建立共享的实例,才可能让更多的用户参与。

deployment

最近流行的和区块链相关的很多去中心化应用都没有解决这个关键问题,大部分去中心化软件其实还是中心化部署的,比如 CryptoKitties、Uniswap 等都只是把智能合约部署在区块链上,而 Web 的前端仍然采用互联网服务一样的方式部署。

ArcBlock 的 ABT 节点和 ABT 通证机制可谓是去中心化应用皇冠上的明珠,ArcBlock 的 ABT 节点解决的最大的问题就是 “去中心化部署”。 在 ArcBlock 平台上,用户只需要付出 ABT 通证,就能全自动获得 ABT 节点的节点资源,这些节点的安装、部署、启动、管理全部是自动化的, 用户通过 NFT 来证明自己对节点和服务的使用权。我将在未来的视频演示中,展现如何轻松地实现 ABT 节点的 “去中心化部署”。这仅仅是一个开始,未来这将会成为人人可用的服务,并且会越来越完善。


今天的第一部分,给出的是一种思维方式, 用类比的方法思考什么是去中心化软件和服务,和中心化服务有什么区别, 破除对去中心化应用的迷思。对这些有了清晰的认知提高,下面随我们一步步展开,看看 ArcBlock 平台现在已经可以帮助开发者做到什么。一切才刚刚开始,很多事情也许超乎想象, 因为去中心化软件的设计思维是一次认知的升级。