Web3.0 的宏观架构

本文来自于一块链习《区块链技术公开课100讲》第 25 讲 happycryptoschool.org 创始人、专业区块链讲解员
Peter 王广忠 老师分享的《Web3.0 的宏观架构》复盘内容。

感谢一块链习的邀请,能够跟大家做一次关于下一代互联网宏观架构的分享。

先简单介绍一下我自己。我叫 Peter 。本职工作是 Web 开发者,程序员,写了十几年代码了。

从2014年开始就陆续生产一些比特币视频教程,从2018年春天开始全职做区块链,自封”专业区块链解说员“。立志生成最易懂的严肃内容,把复杂的知识点给大家理顺,节省大家的自学时间。

欢迎大家可以到知乎 zhihu.com/people/peterl 和 Github github.com/happypeter 上关注我,另外我还有一个专门发布区块链讲解视频的网站叫 happyscryptoshool.org – 快乐加密学院。

关于自我介绍就是这些了,下面介绍一下今天要分享的内容大纲。

对于区块链的价值可以有不同的理解角度,其中一个是区块链在下一代的互联网,也就是 Web3.0 ,中所扮演的角色。现在大家的共识是下一代 Web 一定是去中心化的。

Peter 希望让各位看官理解互联网去中心化会面临哪些挑战,到底有哪些具体的困难,区块链如何解决这些困难。

分享的内容大致会分下面几个部分:
1)为何下一代互联网的未来是去中心化的
2)区块链作为激励层和事实层,如何解决中心化的问题
2)去中心化用户 ID 的工作流程
4)从 App 到 DApp–设计范式转换

通过这些内容,希望能帮大家能建立一套新的区块链项目的估值模型,也就是放眼一个比智能合约更大的场景,从下一代互联网的角度来理解区块链。

理解目前一些知名的区块链项目是否有可能成为 Web3.0 的最终组件,这样就会对各条公链项目的存在意义有更清晰的认识。

下面正式进入第一部分。

互联网的未来是去中心化的

为啥下一代互联网一定是去中心化的?这个答案很简单,技术的发展都是去中心化的,技术永远是要赋能个体的。

1943年 IBM 董事长说世界上只要有5台超级计算机就够用了,大家都只需要用自己的傻终端连接到这几台计算机即可。后来小屌丝苹果和微软不信,带来了个人计算机这一波。

这张美女图是苹果公司早期的一个非常著名的广告,里面拿着斧子要去砸独裁者,也就是 IBM 。右边这张图片是 Apple2 ,真正打响民用个人电脑第一枪的产品,注意,个人电脑的先行者是苹果,不是微软。

同样,互联网早期,很多大公司是很讨厌互联网的,因为底层协议不安全,同时没有人监管,黄赌毒充斥,所以大公司的愿景是建立严格监管的纯洁的全球化的公司内网。

实际上,最终还是公有的互联网取得了胜利。无需批准的环境,才是创新爆发的环境。

以上都算是硬件角度的去中心化,软件行业其实也经历了去中心化。最早微软是通过买软件盈利的,2000年以后随着开源软件和 Google 这样的互联网公司的兴起,卖软件这个事显得不是那么常见了。

Google 们的软件都是免费给大家用的,那么 Google 们靠什么挣钱呢?答案是持有用户的数据。

垄断是个双刃剑。产业的早期,垄断可以有效的带来效率,这一点大家可以去看一下彼得蒂尔的《 Zero to One 》。但是产业成熟一些之后,垄断会限制市场活力,造成市场扩张变慢。

互联网的今天已经进入了大垄断阶段,下一代互联网的任务是去破除垄断,去中心化的互联网就是破除垄断的方式。

去中心化互联网的最根本的目标是数据确权,让用户会拥有自己的数据。这样,数据可以自由的去交易,经济就会更有活力。这让我想起了最近几年的农村土地确权问题。

互联网的中心化已经非常严重了。对于中国用户,微信加上淘宝,几乎就是半个互联网了。如果把常见的几大平台都关了,那么互联网对你我还剩多少实用价值呢。

我自己从感情上特别喜欢这些新兴的大互联网公司,因为它们引领的社会运行方式要比之前的系统强很多,公平而且高效。但是不可否则,这些都是私人商业公司,会成为新的独裁者。

互联网诞生之初,是一个完全去中心化的事物,期待赋能每一个个体,清除一切的社会层级,给每个人平等的机会。

但是事实是互联网发展了几十年,垄断组织却变得越来越大,那么问题出在哪里呢?简单来讲,互联网缺乏属于自己的激励层和事实层。

先聊聊事实层为何是不可或缺的。

第一,信任之跟,必须是不可篡改的数据。而互联网天生是个不安全的环境,数据也只能存在某人的数据库中,不能保证不被篡改,也不能让其他人验证有没有被篡改。

所以说,互联网上只有数据,没有事实。那么什么是信任之根呢?也就是 Root Of Trust 。我们信任 taobao.com 这个域名,是因为 DNS 系统是不可篡改的,是域名系统的信任之根。

我用支付宝转账给你1块钱,那么支付宝数据库是信任之根。我们相信 HTTPS 通信是安全的,原因是我们相信证书是安全的,证书的安全取决于发证机构,发证机构,也就是 CA 是信任之根。

但是 Web3.0 的信任之根是区块链。随着互联网发展,我们需要越来越多的信任之跟。以后 DNS ,转账记录和证书为啥可信?因为是基于区块链的不可篡改数据的。

信任之根都有个特点,就是要有能力数据是安全的,不可篡改的。但是当前互联网的实际情况是荒谬的,所有的信任之根都是中心化的。

也就是说就是存在一小拨人的数据库中的,数据可不可信,完全在于你信不信这些人是靠谱的。而区块链的游戏规则是 In Math We Trust。

我们不需要相信任何人,只需要相信数学就可以了。区块链的本质是全球任何人都有权利持有数据的一个拷贝,数学可以保证让诚实的人达成共识,去保证数据的不可篡改。

第二,有了事实层,才能实现规则的自动执行。法院是法律的执行者。而当前的互联网,也就是 Web2.0 上就没有一个执行者,太自由了,适合分享,但是不适合惩治罪恶。

但是有了真正可信的数据,我们就可以用程序去自动化的执行规则,这就是智能合约的基本思想了。

关于惩治罪恶,大家可以去了解一下 Nerovs 项目的加密法院思想,关于智能合约,以太坊等其他项目都可以参考,这个我们不展开。因为咱们今天的主题就是智能合约之外的另外一个维度。

事实层的作用就介绍到这里,下面介绍为什么激励层是不可或缺的。

第一,去中心化系统必须是能够自运行的。真正去中心化的世界中是没有大公司,没有平台方,没有服务器的,那么用户为什么会有动力去自发的维护系统呢?

例如能持续的为他人存储数据呢?答案就是要有代币激励。区块链还有另外一个名字就是去中心化账本,运行在上面的代币给互联网带来了激励层。

第二,保证利益统一,大家可以朝着一个方向去努力。传统的民粹注意往往带来的是暴民政治。去掉一个暴君,换来成千上万的暴君。

但是区块链是基于贡献值的民主,发言权的大小是根据贡献大小来分配的。这个跟简单粗暴的一人一票是不同的。

第三,代币可以有效防止资源的滥用。互联网是公共资源,Web2.0 条件下很多资源都是免费的。坏人于是就可以滥用资源,发起 Email SPAM 或者 DDOS 攻击。

比特币的前身之一 Hashcash 就是专门用来防范 Email SPAM 也就是垃圾邮件的,可见防止资源滥用是区块链的基因里面就有的东西。

以上就是对事实层和激励层作用的分析了。有了区块链带来的事实层和激励层,互联网才可能实现去中心化。

去中心化之后的互联网,有下面两个特性。

第一,安全架构升级。中心化服务器本身就是一个漏洞。去中心化意味着,如果一个强盗想要抢劫,他必须亲自进入每个人的家里去抢,而不是直接在大街上,一次性的抢几百万人。

所以中心化服务器本身就会让攻击有足够的利益驱动。另外,就是中心化服务器上主流的方案是要把数据在服务器上解密的,所以只要攻破服务器,就可以拿到明文数据了。

我写过一篇文章叫《端到端加密是一种生活方式》haoqicat.com/ce/e2e 大家可以去参考,这里我就不展开了。

第二,就是网络效率提升,带宽和存储都可以更充分的利用。这个也不展开了,可以去参考一下 IPFS 的思路。

关于中心化的问题,去中心化的优势,区块链作为事实层和激励层的作用,我们就聊到这里了。似乎未来是非常美好的,但是美好的愿景也必须要保证技术上的可行性对吧,所以咱们进入下一部分《去中心化的 ID 》。

去中心化的 ID

下一代的互联网如果想要真正去中心化,那么最基础的条件是用户的数字身份,简称 ID ,也必须是去中心化的。

那什么是 ID ?为啥它必须要去中心化?去中心的互联网上登录这个词是不是过时了呢?去中心的 ID 系统又是是如何工作的呢?好,咱们来一窥未来之鳞爪。

首先回答一个简单的问题,什么是数字身份,也就是我们这里说的 ID ?数字世界中,用户的 ID 是所有她说过的话,做过的事以及所有经历的总和。

ID 不仅仅是用户名和密码。举例来说,我的 Github 用户名是 happypeter ,这个 happypeter 是我的 ID 标识,英文叫 identifier 。

而密码是用来证明我是 ID 拥有者的密钥,但是一会儿我们会聊到,密码跟私钥还是有很大不同的。强调一下,happypeter 不是我的 ID ,而只是我 ID 的标识。


我的 ID 是数字形式的我,或者说是一个虚拟的我。ID 是一切可以定义我的数据的综合,是通过技术产生的所有的我的个人数据。当前互联网条件下,我的 ID 就是由我使用过的 App 中保存的数据组成。

但是,我们并不拥有我们自己的 ID ,谷歌, Facebook,或者国内的淘宝和微信才拥有我们的 ID 。

现在要来问一个严肃的问题了。我们为啥需要去中心化的 ID 呢?答案其实很简单,用户需要掌握自己的数据。前面提过了,去中心化的目的就是实现数字资产确权。

先来介绍一下什么是去中心化的 ID 。它和当前中心化的 ID 有什么大的区别呢?我的微信 ID 是属于微信所有的,其中包含我的 ID 标识,也就是用户名,也包含其他的我的个人数据。所有的数据都是保存在腾讯的数据库中。

相比之下,去中心化的 ID 不被任何其他人拥有,用户是它唯一的主人。它是用户自己生成的,自己拥有的,标识符是全球唯一且保存在区块链之上的。

每个用户都需要有一个真正能够被自己控制的 ID 。用户应该有权利决定我要分享什么内容,分享给谁,以及何时停止分享。

从技术角度,没有去中心化的 ID ,就不会带来 App 设计思想的范式转换,就不会有真正的 DApp 产生,关于这个范式转换,最后一部分内容中会展开来讲。

去中心的 ID 系统目前还没有大规模应用,所以很难说最终的方案是什么样的。但是目前有很多组织都在围绕 W3C DID w3c-ccg.github.io/did-s 和 DIF identity.foundation/ 来推进基础设施建设和标准制定。

DIF 的成员有微软,IBM ,Mastercard ,微众银行,以及一些区块链项目,例如以太坊,比原链和 Blockstack 等。

用户首先要去生成自己的 ID 标识,创建自己在去中心世界中的用户名。传统上比较常见的情况是,电话号码,邮件地址以及社交账户都经常被用来做用 ID 标识去登录各个应用,这种 ID 标识的好处是对用户友好,非常容易记忆。

但是问题是,它们都是通过某个第三方提供的,可能会被人家删除。如果采用去中心化的系统,这里我们以 Blockstack 为例,如果使用 Blockstack 生成的标识,标识就会直接存放到区块链上,并且是遵守 W3C 的 DID 规范的,DID 的全名就是去中心化的标识。

DID 的问题是对用户不友好,不像中心化系统中,我直接就可以用 happypeter 做我的 ID 标识。DID 看上去是下面这个样子:

did:example:123456789abcdefghi

因为 Zooko 三角的限制,DID 很难生成成人类容易理解的字符串。并且去中心化条件下,想要把 DID 绑定到 happypeter 也基本是不可能的。

去中心化的世界是没有服务器的,用户自己保存自己的数据。类似以太坊这样的区块链项目有点像大型机,试图把所有数据都保存到链上。

但是可以想象,一个人在使用社交 App 的时候,一天就会生成多少数据,所以比较可行的方式还是采用一个分层的架构。

只把需要作为信任之根的数据保存到链上,而大部分的用户 ID 数据都加密后保存到链下。

用户可以把这些数据都保存到自己的设备上,或者完全受自己控制的云上。最好存储介质本身也是基于区块链的去中心化的,例如 IPFS 或者是 Blockstack 的 Gaia 系统等等。

因为这样数据就完全不会某个公司控制了。当然,如果做好了足够多的备份,保存到多个普通云服务上似乎也问题不大,因为数据都是加密过的。

每一个 DID 都有自己的一个公钥,也一起存放到链上,用户可以用私钥来进行认证和授权。如果你不太熟悉密码学,不太了解数字签名是如何工作的也没关系。

只需要知道,用户可以通过私钥签名去证明自己是 DID 的所有人。但是通过签名的方式进行认证,跟通过密码登录进行认证是有本质区别的。

比特币开发者 Peter Todd 有一次在 Twitter 上说
If you’re logging in it is centralized

如果你登入一个 App ,那么这本身就是中心化的了。因为传统上,用户名密码都是 App 数据库中保存的,密码登录相当于用户去请求 App 把门打开,然后进入 App 之中,然后享受 App 赋予我的各项权力。

而去中心化的方式下,用户根本没有必要待在 App 里面,每次我需要一个执行某个操作,只需要出示我的签名即可,用签名向 DApp 其它参与者证明我是有某项权力的。

类似的,授权过程也是通过私钥签名来完成的,例如,我要允许哪些朋友查看我的帖子,哪些人可以编辑我的文档等等,这些都是可以实现的。

以上就是,去中心化 ID 的基本原理了。

范式转换

从以 App 为中心,到以 用户ID 为中心。

中心化条件下,数据和应用之间的关系是这样的。很多人会同时使用一款非常流行的应用,例如 Facebook 或者微信,用户的数据要按照 Facebook 或者微信的格式分别保存到它们各自的数据库中。

这样带来两个结果:第一,数据的所有者是 Facebook 或者微信,或者说数据是属于应用的,很多底层的数据即使用户自己也拿不到。

第二,虽然同是社交应用,但是 Facebook 最终为用户保存的数据格式跟微信是不一样的,或者说是不兼容的。

即使用户能够下载到自己的所有facebook 数据,那么拿到其他应用中,其他应用也是不能解析的。这两个结果就造成了,用户的数据是跟 App 绑定的。

去中心化的 ID 条件下,这里发生了一个巨大的范式转换。

应用的设计原则从以应用为中心,变成以用户为中心。

以用户为中心,说的具体点就是以用户 ID 为中心。


去中心化条件下。用户持有自己的 ID ,也就是说自己持有自己的全部个人数据。同时,我和我的朋友们存放的社交类数据的格式都是一致的,因为大家都是遵循互联网上的同一套开放标准。我和朋友之间建立的关联,也是我 ID 的一部分。

用户的 ID 数据是自己存放的,而不是存放到某个应用的数据库中。那么应用的角色就从原来的规则制定者,变成了真正的工具。应用在保存数据的时候,必须要按照用户指定的那套开放标准去存。

这样,用户就占有了完全的主动权,享有 Freedom To Exit 。因为如果我不喜欢应用 A ,那我可以随时切换到应用 B ,例如,我自己在使用微信的时候,其实有些功能我是不用的,这些功能总会骚扰到我。

那么我就可以切换到 B 版本的微信。切换之后,即使我的朋友们并没有切换到应用 B ,那么我们的连接也依然不会中断,因为底层的数据是格式统一的,不同的应用都是一样可以解析的。

或者说我们的链接是发生在数据层,而非 App 层。类似比特币这样的 P2P 网络,各个节点遵从统一的通信协议,那么不管你是用官方的客户端,还是自己手写一个客户端,都是可以正常跟网络交互的。这就是所谓的未来的应用设计是以用户为中心的。

传统的 App 为王,会变成 Protocol 为王。Facebook Google 有无限的资源,可以雇佣最好的开发者,去不断完善自己的 App ,App 吸引更多的用户,用户数据要依附于 App ,从而让价值都凝结到了 App 之上,于是垄断平台变得更强大。

而去中心化的世界中,价值依然是凝结在数据上,但是数据是属于个人的,而所有的精力全部都用在开发协议的的构建上,所谓的开放协议其实说白了就是用户跟用户之间的沟通规则,游戏规则,这些都是开放的。

这种范式转换带来好处就是,用户成了网络上的第一等公民,不会被某个应用所绑定,同时也享有了对自己数据的完全支配权。理解这种范式转换,是理解去中心化互联网,或者说理解 DApp 的一个关键点,值得特别强调。

总结

主体内容就是这些了,最后来总结一下。

第一,Web3.0 将会是可信互联网,各项基础设施都会根植到区块链中,利用数据的不可篡改性,实现 trust-less 的系统。Web2.0 的这种,互联网本身不可信,大公司才可信的状况会被打破。

第二,我自己的一个感受是:

DAPP 是基础设施,会成为互联网的一部分。

目前来讲,互联网是公有的,但是 App 基本都是私有的,微信,淘宝,背后都是私营公司的财产。这就好比一个城市,道路,排水,公园,这些是公有的,但是具体到每一座房子,一般都是个人所有的。

但是未来的 DApp 会成为互联网的一部分,DApp 可以被私人公司发起,但是最终要实现公有。比特币是一个成功运行了十年的 DApp ,关于 DApp 谁去维护,比特币的故事最有说服力。

第三,数据,其中主要的一个就是每个人的 ID 未来不会割裂到各个 App 之中了,而是一个完整的符合公开标准的金矿。开放统一的数据,就能赋能创业者,带来新的创新动力。

最后,今天的内容总体上还是比较粗线条的,如果大家想要了解更多的技术细节,正在运行的 Web3.0 的实例是 Blockstack.org 可以作为参考。

谢谢!

参考资料

文章中很多观点都不是我的原创,很多都来自以下资源:
microsoft.com/ownyourid
blockstack.org/videos/
Avengers

最后来波硬广~

一块链习与 Polkadot 社区大使、奥克兰大学软件工程一等荣誉学士学位 陈锡亮老师紧锣密鼓准备的《 Substrate 快速入门与开发实战》将于 6 月 2 号重磅开课!

介绍课程之前,不妨先把课程报名链接给到大家,毕竟这门课程不到 25天(6月2日)就开课了,当前名额不足 40个。

且本期还有一个重磅福利:现在报名只需1299元!学习完本系列课所有视频,按时完成所有课后作业,结业时返还 50%学费。因此,有意向报名的同学,可以先抢座再看,不然可能会面临没有名额的风险。

接下来,就正式为你深入介绍这门课程

1、课程内容

这里就不废话了,直接上课程大纲,供你参考。

2、课程导师

Bryan 陈锡亮,Polkadot 社区大使,Substrate & Polkadot 代码贡献者,奥克兰大学软件工程一等荣誉学士学位,Centrality (https://centrality.ai) 产品架构师,现负责CENNZnet项目架构和开发。多年全栈开发经验,包含桌面端 C++ hard realtime application、C# .NET WPF 开发,后端 node.js、Java开发,前端 angular.js、react 开发,手机端 iOS,、Cordova 开发等。

3、适合人群

区块链技术开发者 | 2年以上经验互联网开发者「入 学 必 备 技 能」
系统学习时间过一门编程语言 (必备)
以推荐度排名:Rust, C++, Swift, C, Javascript, Go, Scala, OCaml, Java
对Unix命令行基本了解 (必备)
基本的Web开发知识 (了解)
基本区块链知识(了解)

4、教学模式

我们会以50人的小班形式进行管理:

体系化在线录播教学
全程2名班长5名助教带班强化训练
8次作业+1次项目操盘
助教批改作业&点评
小组群协作学习+微信班级群交流
每周日讲师在线直播答疑

5、学习时间

〔福利〕学习完本系列课所有视频,按时完成所有课后作业,结业时返还 50%学费。
〔重要〕付费后的同学请立即添加一块链习Jessie 班长微信号(ID:yikuailianxi),获取开课通知。
〔保质〕为了保证教学质量和效果,每期课程仅招收 50 人。授课期间无故不交作业,学习态度差的同学,将进行劝退。
「一块链习」所有实训营课程承诺:开课学习 3 天内不满意无条件退款。

6、你将获得

✅了解Substrate、Polkadot生态圈及Substrate底层代码实现
✅学会如何利用Substrate开发一个可产品化的区块链项目
✅具备Polkadot.js SDK 使用与前端项目开发的能力
✅掌握如何设计与完善区块链项目的相关技巧
✅结识全球第一批对Substrate技术充满热情对工程师

有意向报名的同学,赶快扫描下方图片二维码前去报名吧,这回可真的是要凭借手速来抢了,Fighting!