构建Web3.0
要了解Web3.0的关联,首先要理解互联网是如何构建的。互联网的构建从客户端(计算机)开始。你的个人计算机、智能手机和平板计算机都是客户端。当你上网时,你的客户端不断请求访问储存在各种服务器中的信息。
服务器是托管网络的软硬件。也就是说,它们存储网络的所有数据。你可能认为它们是服务器群,或者堆积着成千上万个黑色立方体的科技公司的计算机房。其实,那些黑色立方体就是服务器。
客户端发出请求,服务器授权,这就是硬件之间交换信息的方式。单个服务器可以有数千个客户端,所有客户端都共享一个编写了交互规则的通用协议。客户端、服务器与协议的组合称为客户端-服务器模型,它使我们的智能手机和笔记本计算机不必存储数据及运行维护互联网的计算。
一旦建立了硬件通信系统,就会形成网络,它为编程语言及其相关的软件包提供了运行场所。编程语言及其相关的软件包可以用来构建平台,也就是你看到的部分:网站和应用程序。
把数以千计的网络结合在一起,就形成了人人皆知爱恨交加的互联网。以上这些方面在Web3.0和前几代互联网中,都是一致的。图1-1呈现了典型的网络结构和两代互联网之间的特性差异。
区块链只对构成互联网的一小部分产生影响。由于服务器的存在是为了响应客户端的请求,它的职责之一就是存储数据,而这通常是通过数据库来完成的。Web3.0只是用区块链替代了数据库,其他的不同之处在于后续的互联网新兴技术。要理解为什么会这样,让我们来看看为什么今天的互联网会以这样的方式发展。
图1-1 互联网基础设施
在遗留系统中,互联网的大部分组成部分都被私有化,这是通过一个自然进化过程实现的。为什么会这样呢?我们假设一个20世纪90年代的场景。那时,现代互联网基础设施尚不存在,但相关各方已完全了解客户端-服务器模型。
爱丽丝(Alice)是一名软件开发人员,她想推出一个网络应用程序。为了让应用程序支持公开访问,爱丽丝需要找到一个或多个服务器,以托管她的应用程序代码。自己构建硬件基础设施,既昂贵,又不切实际,因此她寻求第三方帮助。有人给爱丽丝介绍了鲍勃(Bob),他最近开了一家专门为爱丽丝这样的客户运行服务器的小公司。不过,鲍勃的服务器设置给爱丽丝带来了许多风险,这些风险都源于缺乏信任。一个明显的问题是,因为不够信任,爱丽丝不会给予鲍勃全部的应用程序数据库权限。即便鲍勃很诚实,他也没有资源或专业知识来增强安全防护,避免网络攻击。如果鲍勃失势或公司倒闭,那么爱丽丝的应用程序将无法运行。如果爱丽丝的应用程序的增长超过鲍勃的服务器容量,应用程序也将无法访问。爱丽丝无法信任创建应用程序所需的人力或技术。
幸运的是,爱丽丝找到了IBM(国际商业机器公司)的顾问戴夫(Dave),他能解决她的后顾之忧。戴夫称,他的团队能提供受一流防火墙和备份系统保护的无限服务器空间,这几乎能确保爱丽丝的应用程序零风险。爱丽丝从不得不相信鲍勃的话,转变为信任由IBM的声誉和信用背书的工业级服务器。在IBM的帮助下,爱丽丝完成了代码编写,并准备推出该网络应用程序。
互联网上的每一位构建者都在做相同的选择,即坚持与最杰出的服务器提供商合作。如今,推动中心化的大型企业是互联网的基石,因为他们帮助互联网建立了信任。
众所周知,IBM并不是垄断互联网的公司,因为它没有意识到互联网建设的关键不在于大型计算机。统治互联网的,主要是谷歌(Google)、微软(Microsoft)和亚马逊(Amazon),因为它们创造了“云”,也就是大型科技公司的服务器。
在潜入“云”端之前,我们必须退一步思考。客户端-服务器模型可用来成功地接入网络,但如果不添加开发者工具,它不会创建任何有用的东西。开发者工具这个术语涵盖了构建互联网的其他组件中的一部分,它包括操作系统、编程语言、编译器、应用程序接口(Application Programming Interface,API)、软件开发工具包、负载均衡器、浏览器、搜索引擎和内容交付网络等。30年前,这些工具并不普及,但如今,这些工具是互联网上的通用标准。
最初,谷歌、微软和亚马逊并没有成为提供云服务的公司。它们在截然不同的领域构建了互联网服务:谷歌主攻搜索,微软提供软件服务,亚马逊经营电子商务。当时,创建互联网公司没有捷径可走,也没有托管网络的简单方法,更没有在这些网络上制作平台所需的有用的开发者工具。而如今,大型科技公司要么利用现有的开发工具做到顶尖,要么从头开始,研发出顶尖的开发者工具。
现在,让我们看看在2020年,爱丽丝将如何创建她的网页应用程序。首先,她会使用一门编程语言(这也是她的专长),以此来对整个应用程序的逻辑进行编码。这和20世纪90年代的做法差不多,也不需要第三方帮助,因为许多编程语言都是开源的。为了让爱丽丝构建一个运行软件逻辑的网络,也就是说,把她的应用程序放到互联网上,她需要找到服务器来托管她的应用程序代码。这个过程类似于爱丽丝和鲍勃、戴夫的合作,只是现在,除了大型科技公司的云服务,她没有其他更好的选择。
爱丽丝这个例子忽略了当今开发者工具带来的所有额外负担。在20世纪90年代,爱丽丝此时可能快要完成应用程序的开发,因为开发者工具很少,这种高效对爱丽丝的网页应用程序没有好处。这个应用程序使用起来可能很复杂,甚至很难被搜索到,并且不容易与类似的网络集成。简而言之,在早期互联网时代,爱丽丝的应用几乎无法吸引到除了朋友和家人的任何用户。
大型科技公司之所以如此庞大,是因为他们为爱丽丝和像她这样的开发人员提供了服务。为什么这么说呢?让我们看看在2020年,爱丽丝在互联网上使用云设置她的应用程序后,将采取哪些其他步骤。首先,她需要一个服务器数据库。她可以自己创建一个,但综合考虑,更好的选择是共享现有的大型科技公司的数据库,因为大型科技公司的数据库可以为她处理组织协调和安全问题。爱丽丝必须采取的一项安全措施,是设置与谷歌账户等单点登录兼容的用户名和密码访问控制。爱丽丝还需要设置一种支付方式,她可能会使用亚马逊API网关之类的服务,一举解决电子商务的所有问题。为了确保用户搜到应用程序,爱丽丝必须以符合谷歌搜索算法的方式,构建整个应用程序。要吸引用户,该应用程序至少需要在脸书(现已改名为“元宇宙”)上线,最好还要借助诸如微软的领英(LinkedIn)API,将应用建立在一个更大的平台上。然后,爱丽丝需要开发一个单独的移动应用程序,同时满足苹果(Apple)应用商店和谷歌应用市场的要求。在这之后还有类似的后续流程,以便不同版本手机能够使用苹果支付和谷歌支付购买付费服务,并与应用商店搜索算法匹配。爱丽丝还必须确保她的应用程序和任何可下载的软件,以及各种存在竞争关系的操作系统相互兼容。
尽管除了编写应用程序代码,爱丽丝还采取了这些额外的步骤,但她只是在软件上添加预包装的组件,而这些还是由其他人所有和控制的。从这个意义上说,互联网应用程序就像是忒修斯之船(the Ship of Theseus)的思想实验:当你不断维修和替换这艘古老船只的零部件时,它将在什么时候不再是忒修斯之船了?随着互联网应用程序里装满了越来越多的第三方组件,它将在什么时候不再为爱丽丝等开发者所有?如果你想实际地看待这个悖论,我认为答案取决于你对大型科技公司的信任程度。
互联网是成千上万个像爱丽丝这样的网络结合在一起的产物。这些网络都是默认私有的,只有在一系列复杂的授权后,它们之间才能进行交互。当然,这并不是对互联网的全面解释。这只侧重向Web3.0过渡过程中发生变化的方面。既然我们已经掌握了“互联网”的含义,那么就能从字面意义上来理解中心化和去中心化这两种类型的互联网了。
与Web3.0相比,爱丽丝参与的互联网是高度中心化的。它的最底层是数据结构,里面几乎都是中心化的数据库。爱丽丝的应用程序数据在某个地方,由单个实体控制,基于同样的原因,爱丽丝宁愿选择戴夫的IBM数据库,而不是鲍勃的自制数据库。向上一层的互联网层是构成数据结构硬件的服务器。服务器将数据传输给客户端,并且归托管数据库的同一家公司所有。服务器托管制作爱丽丝的网络和平台的所有编程逻辑,包括爱丽丝的应用程序代码和相关的软件包。
如果爱丽丝使用谷歌云(Google Cloud)制作她的应用程序,而你正在使用该程序,这意味着你的计算机将通过谷歌的服务器、利用谷歌的开发工具、从谷歌的数据库中请求数据,这就是中心化。稍后我们将讨论与此相关的互联网三巨头。现在,让我们看看加入区块链时,整个结构将如何变化。
大致而言,在Web3.0中,数据结构由区块链组成,而不仅仅是数据库。旧数据结构必须归公司所有,才能确保安全,但这种新数据结构受到保护,恰恰因为公司无法拥有它。究其原因,如果你还记得的话,在于奇特数据库(区块链)的两个独特功能:首先,它的数据是完美的,它用数学方法来避免错误;其次,所有数据是不可篡改的,这让它成为一种永恒的真理。对爱丽丝来说,选择区块链数据结构更可靠,而且可能更便宜。
下一个Web3.0组件是硬件基础设施,它用来将应用程序数据结构和用户相连。客户端-服务器模型是实现此操作的典型做法,只是服务器必须分布在Web3.0环境中,这样网络将有利于鲍勃的人工设置,而不是戴夫的工业设计。由于服务器默认托管区块链是安全的,鲍勃不需要任何额外的安全措施。如果他失去对公司的控制,世界各地其他像他一样的人,都会弥补网络的异常。IBM的服务器机房现在看起来过时了,里面的网络安全保护没有必要,此外,还有受地域限制的单点故障。更重要的是,Web3.0可以探索客户端到客户端的模型,因为如果网络足够高效,可以分配服务器计算资源,客户端就能自由交互,而无须相互信任,因为客户端信任底层的数据结构。
开发者工具使网络成为独特而有用的平台。现阶段,将Web3.0开发者工具与熟悉的网络开发者工具进行比较,几乎是不可能的,因为现在没有(也不确定会有)明确的标准。Web3.0开发者工具建立在初始阶段的基础设施上,它在很多方面和旧的基础设施都不具可比性。下面对Web3.0开发者工具的介绍,大多基于理论以及很多领先初创公司的目标。
Web3.0网络和爱丽丝的应用程序一样,是默认公开的。这意味着用户名和密码没有意义,连接通过权限控制连接平台的API也没有意义。这些东西是内置的,会自动发生。当区块链身份规定访问控制时,没有用户名或密码的互联网开始成为可能。这个问题比较复杂,在第六章我们再详说。当你使用公共网络时,API存在的意义也不大。例如,以前应用程序必须安装大型科技公司强加的额外组件,而现在可以将这些组件作为内置和无条件免费的模块。对爱丽丝来说,这意味着其中的许多应用插件都有预打包代码,她不需要重新制作。如果她制作了一个原始插件(今天看起来这就像是针对她的应用程序的独特API),这个原始插件同样会被预先打包,供其他人使用。
没人需要重新造轮子,做无用功。而且,这也不会有损爱丽丝或其他任何人的收入模式或知识产权。脸书在社交游戏星佳(Zynga)公司使用它的API来制作像开心农场(Farmville)游戏这样的应用程序后才受益,同样,爱丽丝也会在其他人使用她的预打包代码时受益——只是这一次,爱丽丝和星佳(Zynga)公司不需要为了运行自己的应用程序,信任像脸书这样收割利润的傀儡师。
因此,成千上万的这种默认的公共网络,共同创造了Web3.0。