*本文做者为Qtum量子链研究院核心工程师郑义,原文发布于Qtum量子链(qtumchain)公众号前端
目录算法
1、 信息数据库
2、 互联网进化史编程
1. 单向流动的Web 1.0后端
2. 双向互动的Web 2.0浏览器
3. 去中心化的Web 3.0安全
3、 Web 3.0服务器
1. 信息共享网络
2. 数字货币的诞生并发
3. 去中心化应用平台
4. 开发中的项目
4、 对应用平台将来发展的思考
序言:
自比特币诞生以来,已通过去了十年的时间,区块链和数字货币的概念已经被你们所熟知。现在,业内开始频繁说起Web 3.0的概念,但关于Web 3.0究竟是什么,却不多有人能说清楚。本文将带您一览Web 3.0的前因后果,而且对Web 3.0的各类说法进行去伪存真,最后给出对Web 3.0的将来发展方向的思考。
“信息交流是人类的基本需求”
人类既是信息的生产者也是消费者。信息交流是生产和消费过程当中必不可少的环节。
在没有互联网的时代,信息交流的手段十分有限。人们只能当面走到一块儿,或者经过书信的方式进行交流。
以获取知识为例:教师教书、学生听讲、学生提问、老师解答。学生经过和老师信息交流,获取了新知识。
以商品交易为例:货比三家、讨价还价、达成一致、一手交钱、一手交货。买家和卖家经过信息交流,完成了交易。在这样的交流过程当中,信息的持久、隐私、防篡改等特性都难以保证。
上图:电视剧大宅门中的“袖里吞金”片断,中国古代隐私交易的方式
互联网的出现,大大提高了信息交流的效率和质量。
人们获取知识的方式,变成了搜索引擎、知乎、Wiki、在线课堂。任何问题,只要在电脑或手机上轻松点击,答案就当即以图片、文字、视频的方式返回给你。
人们进行交易的方式,也变成了淘宝浏览、支付宝支付、快递送货、确认收货的流程。足不出户,遍览天下商品,买东西变得十分便捷。
“生产力决定生产关系,生产关系会副作用于生产力”
图1:Web 1.0和Web 2.0,单向和双向的信息流动
互联网的最先期是Web1.0的模式。彼时,信息只能从Server向Client单向流动。网站对于全部用户来讲,是只读的。
Web 1.0的典型应用包括网址导航、门户网站等。咱们有幸找到了知名网址导航Hao123在2011年的页面截图来帮助咱们回顾Web 1.0的历史,以下图。能够看到,网站的全部信息都以静态的方式呈如今网页上供用户浏览。当时崛起的中国四大门户网站,新浪、网易、搜狐、腾讯,都位于网页上方的最显眼位置。这也能够看出,在2011年,Web 1.0的应用占据着市场的主导位置。
图2:2011年的Hao123截图,Web 1.0的网站占据主流(图片来自百度知道)
Web 1.0模式下,生产关系是简单的生产者/消费者模式。Server负责生产信息:网址导航收集网址,门户网站撰写新闻,都是生产信息的过程。Client负责消费信息:点击网站连接跳转,阅读新闻,都是消费信息的过程。
不过,单向的信息流动俨然没法知足信息交流的需求。通过PHP、Java等网站后端技术以及Ajax、JavaScript等网站前端技术的迅速发展,互联网很快进入了Web 2.0时代。这时,信息能在Server和Client之间双向流动。网站对于用户而言具备了可读写性。
Web 2.0就此产生了大量的应用。时至今日,咱们平常使用的绝大多数应用都是工做在Web 2.0的模式下。其应用主要包含两大类,让咱们以今天Hao123的页面截图为例介绍以下:
1. Server提供工具,Client与Server进行信息交互从而使用工具。典型的应用有搜索引擎、聊天工具、支付工具、网络游戏等。例如图中的百度、百度地图、12306都是属于这一类。
2. Server提供平台,Client能够经过平台上传信息、获取信息、进行用户间的交流等。典型的应用包括社交网络、电商平台等。例如图中的淘宝网、京东商城、58同城、知乎都属于这一类。
图3:2019年的Hao123截图,Web 2.0的网站占据主流
Web 2.0的生产关系和Web 1.0相比发生了巨大的改变:
首先,Server提供给Client的再也不仅仅是信息,而是包括计算、存储、交易甚至物流等在内的各类服务。其次,Client必须和Server进行信息的交互,才能使用Server提供的服务。最后,Server提供的信息不只能够由本身生产,还能够来自于Client的上传。
Web 2.0的产生和发展很好地印证了历史惟物主义中的两个重要观点:
1. 生产力决定生产关系。随着互联网上生产的信息量不断增长,Web 1.0已经没法知足生产力的需求,Web 2.0应运而生。例如当时,随着网站的不断增长,基础的网址导航已经没法知足海量网站的检索需求,因此才产生了搜索引擎。又譬如阿里巴巴最开始的模式是企业黄页,但随着企业和商品的不断增长,其逐渐演化为了电商平台。
2. 生产关系会副作用于生产力。Web 2.0改变了互联网节点间的生产关系后,Client具有了信息生产者和消费者的双重身份,这进一步激发了Client生产信息的能力和意愿。在这样的环境下,先是产生了BBS、社交网络等以UGC(用户生产内容)为主的平台,又迎来了直播、短视频等以PGC(专业生产内容)为主的应用。互联网上的信息量和信息种类进一步获得提高。
但正是随着信息量和信息种类的进一步提高,Web 2.0的瓶颈也体现了出来——即Server的中心化问题。在Web 2.0这种Client/Server的模式下,Server成为了信息的“中介”:全部的信息都会通过Server,部分会存储在Server。那咱们是否能够彻底信任Server会正确地、合适地、如约地处理这些信息呢?
答案显然是否认的,Server的中心化问题正是Web 2.0模式难以逾越的障碍。只有改变互联网节点之间的生产关系,让信息再也不通过中心化的Server,才能完全解决这个问题。
在这样的背景下,Web 3.0的概念逐渐显露了出来。Web3.0的核心思想是去中心化,也叫作P2P(Peer-To-Peer)。在Web 3.0的模式下,节点之间经过直接的链接来交流信息,而再也不须要中心化的Server。全部节点都是对等的关系,不区分Client和Server,而是统一称之为Peer。Peer须要遵照特定的计算、存储、网络等协议来链接其余Peer从而加入到去中心化应用中,并提供必定的计算、存储、带宽等资源来维持应用的运行。
误区1:语义网络(Semantic Web)、人工智能(AI)等技术是Web 3.0。
分析:这些技术能够看作是生产工具的进步。它们提高了人们生产信息、交流信息的能力,但并无从本质上改变生产关系,因此不能被认为是Web 3.0。
“ 不一样的去中心化生产关系 ”
大多数人可能没注意到,最先的Web 3.0的尝试实际上来自于一项沿用至今的技术:BT(BitTorrent)。BT产生的动机是为了解决大型文件传输时带宽不足的问题。在Client/Server的模式下,Server发布了大型的文件后(例如操做系统、视频文件、游戏安装包等),会面临大量的Client同时下载。因为Server的带宽有限,则会出现Client下载速度过慢的问题。这是一个典型的随着生产力提高,生产关系没法知足生产力的场景。
BT所以设计了一套去中心化的文件传输方案。当Peer发布文件的时候,会把文件切分红许多小的数据块,供其余Peer进行下载,同时发布全部数据块的哈希值供验证。当其余Peer下载了数据块并进行哈希值验证后,会提供给更多的Peer下载。最终,文件会以数据块的形式分布在多个Peer中。新的下载者下载文件的时候,其实是同时从多个Peer下载文件的不一样部分,并最终拼接成完整的文件。带宽的压力就变成由多个Peer共同承担,下载速度从而获得了提高。
图4:BT的网络结构(图片来自Threestory Studio)
在最初BT的设计中,除了Peer以外,还须要一个或多个Tracker节点来实时记录每一个文件分布在哪些Peer中。下载者会链接若干个Tracker来获取文件的Peer信息,从而决定链接哪些Peer来获取文件。Traker一般会由一些下载站来维护。后续,BT加入了分布式哈希表(DHT,DistributedHash Table)的设计,将文件和节点的映射关系分布式地记录在多个Peer中,从而实现了彻底对等的网络。现在的BT网络中,Tracker和DHT两种模式是共存的。
BT还存在一个问题:缺少对Peer的激励机制。这形成了部分Peer只下载不上传,影响了整个网络的文件传输。后来出现了PT(PrivateTracker)模式,即私有的Tracker。PT会让每一个链接本身的Peer上报本身的上传量和下载量,从而给予“上传下载比例”高的Peer更好的待遇:积分奖励,更高的下载优先级、带宽等。
不过BT很好地解决了Server的中心化问题,见下表。
基于BT的思想,产生了不少相似的Web 3.0技术,例如电驴(eMule)、PPTV等,也产生了迅雷、VeryCD等咱们所熟知的互联网产品。但后来,这些应用都走向了没落。由于随着CDN、网盘等技术的出现和发展,BT主要解决的带宽问题,在Web 2.0的模式下也获得了解决。而BT的Web 3.0特性,如隐私性、可信性等,对于用户来讲并非特别重要。再加上各国对于盗版的严厉打击,BT的市场份额相比其巅峰时期大大缩水。
事实上,因为BT能够工做在Tracker、PT、DHT这3中不一样的模式下,因此对应了3种不一样的生产关系。它们之间的区别以下:
这些模式的尝试给后来的Web3.0系统设计带来了一些启发:
1. 给节点赋予多种不一样的类型,更有利于激发用户的活力。由于不一样用户使用系统的目的并不一致。在BT中,有的用户是为了下载数据、有的是分享数据、有的是创建社区。用户须要根据本身的需求选择对应类型的节点进行运行,而彻底对等的网络是作不到这点的。
2. 给贡献服务的节点以适当的激励,更有利于促使用户为系统做出贡献。若是没有激励机制的存在,一些恶意的节点会不遵照协议,只使用系统但不做出贡献。例如BT中的只下载不上传的状况。
2009年比特币的产生给Web 3.0带来了新的一类应用——数字货币。比特币提出的动机是为了创建一套全球化的货币体系和支付网络,这在Client/Server模式下是难以实现的。由于Server的中心化问题,包括数据丢失、隐私保护、可信计算,对于货币和支付应用来讲是很是致命的。另外,Server会面临政府的监管,单一中心创建的货币和支付系统很难被全世界所接受。
比特币的设计充分吸收了BT的经验,赋予了节点不一样的类型,且给贡献服务的节点以奖励。比特币的节点分全节点和轻节点两种。全节点负责维护服务也可使用服务。轻节点则只能使用服务。其中全节点又分为普通全节点和矿工,矿工会额外提供算力以换取数字货币做为奖励。
图5:比特币的网络结构(图片来自Mastering Bitcoin)
比特币经过如下方式解决了Server的中心化问题:
比特币的生产关系能够总结为:部分节点提供服务,全部节点使用服务。全部全节点是服务的提供者,负责同步信息、验证信息。其中,矿工是有偿的服务提供者,即提供算力,得到奖励。其余是无偿的服务提供者。全部节点都是服务的使用者:从网络同步交易信息,拥有数字货币后能够发起交易。
在比特币使用日益普及的同时,也面临着一些问题,但随着技术的发展都获得了必定程度的解决。好比,PoW共识面临着能源问题,因而后来PoS共识被提出,并应用在了Qtum等新的区块链系统中。又好比,交易的金额是以明文的形式存储在区块链上的,存在必定的隐私问题。因而zk-SNARK、MimbleWimble等隐私算法被提出,并应用在了ZCash、Grin、Beam等新的区块链系统中。
以太坊在比特币以后开启了新的一种Web 3.0模式,咱们称之为去中心化应用平台。以太坊在区块链上加入了虚拟机功能,容许用户在链上建立去中心化的应用,也叫作智能合约或DApp。以太坊上的虚拟机叫作EVM,可使用对应的Solidity语言编写应用。由此,以太坊上诞生了一大批DApp,包括链上代币、收藏游戏、去中心化交易所、预测市场等。
图6:以太坊上的DApp(图片来自DApp Review)
以太坊的生产关系仍然是部分节点提供服务,全部节点使用服务的模式。可是可使用的服务除了数字货币的转帐交易以外,还能够进行DApp相关的操做。例如,开发者能够发布DApp,普通用户能够交互式地使用DApp。这种模式赋予了Web 3.0更多的可能性,容许开发者灵活地构建各类各样的去中心化应用,而没必要关心底层的去中心化协议。
以太坊是去中心化应用平台的首次尝试,存在着不少明显的不足。其中最为主要的是性能问题。由于全部节点都会运行一遍链上的智能合约以验证合约的正确性,因此合约的运算和存储等资源受到了单个节点的CPU、内存、硬盘的限制。EOS经过下降去中心化程度,将共识改成了dPoS,即合约只须要21个高性能的超级节点进行验证,从而提高了合约的性能。但这仍旧未能突破单个节点的资源限制,与Web 2.0模式下应用的性能相差很远。
从已有的信息共享、数字货币、去中心化应用平台三种Web 3.0的应用模式能够看出两点:
1. Web 3.0的底层技术还没有成熟。一方面表现为,当前的底层技术所能提供的性能较弱,没法支撑大规模的应用。另外一方面,不少Web2.0应用依赖的底层技术,在Web 3.0模式下都还没有出现解决方案,开发者开发一个新的Web 3.0应用的时候,不得不从新进行底层模块(包括传输层、网络层等)的设计和开发。
2. Web 3.0的应用模式还有待探索。目前Web 3.0可以应用的场景过于狭窄,不少Web2.0涉及的领域,例如社交网络、电商平台等,没法在Web 3.0的模式下落地。这些场景都会遇到Web 2.0中的Server中心化问题,可是目前并没能经过Web 3.0的模式进行解决。另外,Web 3.0也有望催生出更多新的应用模式和生产关系。
对Web 3.0底层技术的探索一直进行着,如下列举一些项目供参考。其中去中心化应用平台主要是为解决DApp运行环境的性能问题。而文件存储、消息通讯、数据库这3个分类,是为了提供一些经常使用的底层技术的解决方案。
目前对于Web 3.0应用模式的探索还很是早期。从下图中能够看出,Web 3.0的项目,大多数都在照搬Web 2.0中一些成功的模式,而没有进行太多的思考和创新。不少项目虽然使用了区块链等去中心化技术,但生产关系仍是传统的Client/Server模式,以致于每每陷入到了严重的误区中。
图7:Web 3.0的应用图谱(图片来自Medium)
误区2:Web 3.0会取代2.0,全部应用均可以去中心化。
分析:
1. Web 3.0会和2.0、1.0共存。能够看到Web 2.0的出现并未彻底取代1.0,传统的门户网站仍然存在而且知足部分用户的需求。因此,Web 3.0并不会取代它的前辈们,这三者是共存的关系。
2. 有些应用经过Web 2.0的模式就能很好实现,不须要Web 3.0。例如,有些项目想要实现去中心化的分布式计算(也叫Volunteer Computing或Grid Computing)平台,包括Golem、Enigma、Sonm等。但实则用Client/Server的模式就能很好实现,NiceHash、BOINC都是成功的例子。
3. Web 3.0可以解决一部分Web 2.0解决不了的问题。就像Web 2.0解决了搜索引擎和电商中的交互问题同样,Web 3.0目前也解决了文件传输的带宽问题和货币的全球支付问题。
4.Web 3.0会诞生全新的应用模式和生产关系。就像Web 2.0诞生了涉及网络同样,Web 3.0目前也诞生了信息共享、数字货币、去中心化应用平台这些之前没有过的模式。
“ 应用平台的完善,才会带来应用的爆发 ”
曾经Web 2.0的出现,虽然从本质上来看是互联网信息量增长所催生的,可是直接因素仍是依靠底层技术的完善,特别是应用平台的完善。
最初,开发者须要使用复杂的MFC、QT等技术开发客户端程序和服务器进行信息交互。随着Chrome浏览器的出现和完善,以及JavaScript浏览器端编程语言的普及,你们才转而构建交互式的网页应用,或称做Web App。最后,进入了移动互联网时代,iOS和Android两大平台占据了主流地位。直到今天,Web2.0的应用已经稳定地集中在Chrome、iOS、Android三大平台上。
只有当完善的、通用的应用平台出现,而开发者没必要再关注网络通讯、消息队列等底层技术细节的时候,才能把更多的思考放在应用的设计上,从而带来应用爆发式的出现。如下咱们对比了正在开发中的Web 3.0应用平台:
能够看到,虽然Web3.0应用平台还处于MFC、QT的时代,但众多项目正在努力向着下一阶段演进。从开发环境而言,EVM和WASM等虚拟机的功能十分有限,缺少IO、文件、进程、线程、异步、Socket、定时任务等操做系统级别的接口,而Linux虚拟机和云的尝试也许会带来起色。从计算性能而言,虽然跨链、侧链技术能必定程度上带来扩展,可是应用仍然没法作到内部并行,并且始终受到单节点性能的限制,所以链下扩容技术更有潜力。从存储性能而言,全局可验证的要求致使了全部的操做、中间状态都记录在区块链上,存储空间过大,正在探索的P2P存储和链下存储值得期待。
基于当前技术发展的趋势,咱们认为,去中心化应用平台至少要达到如下要求,才是发展更多Web 3.0应用的基础:
1. 既提供可靠的链上计算环境,又提供高性能的链下计算环境。
2. 链上计算保证安全、可验证。
3. 链下计算容许应用内并发,计算、存储等资源可无限扩展。
其中的技术难度主要在链下计算部分,目前并无成熟的解决方案。但相信不久的未来,必定会出现。到那个时候,将会开启互联网、区块链和数字货币的下个十年。
免责声明:本文仅表明做者我的观点,不表明 Qtum 量子链基金会立场,不构成任何投资意见。欢迎关注Qtum量子链(qtumchain)官方公众号,了解更多区块链技术最新研究资讯。