点个关注👆跟腾讯工程师学技术
导语 | 是什么让 Web 3.0 与 Web 2.0 如此不同?本文使用以太坊生态作为例子,从 Web 2.0 开始,由浅入深,一步步介绍 Web 3.0 的应用架构。
Web 3.0 vs Web 2.0
-
首先,必须有一个地方用于存储重要的数据,比如用户信息、帖子、标签、评论、点赞等等,这需要一个不断更新的数据库。
-
其次,后端代码(使用Node.js、Java或Python等语言编写的)必须定义Medium的业务逻辑。比如当一个新用户注册时、发布一条新博客时 或 在其他人的博客上评论时,分别会发生什么。
-
第三,前端代码(通常用JavaScript、HTML和CSS编写)必须定义Medium的UI逻辑。例如,网页长什么样,用户跟页面上的每个元素交互时会发生什么。
但所有这些都在变化之中。
区块链技术解锁了一个激动人心的Web 3.0应用新方向。在本文中,我们将聚焦于以太坊区块链给我们带来了什么。
(二)是什么让 Web 3.0 如此不同?
不像Medium这样的Web 2.0应用,Web 3.0消除了中间人,没有中心化的数据库存储应用状态,也没有中心化的Web服务器承载后端逻辑。
取而代之的是,你可以利用区块链,在一个由互联网上匿名节点维护的去中心化的状态机上构建应用。
这里的“状态机”,指的是维护某个状态的机器,包括某个给定的程序状态和该机器上未来允许的状态。区块链就是由某个“创世”状态实例化,并有着非常严格的状态转移规则(即共识机制)的状态机。
更好的是,没有一个单一实体可以控制这个去中心化状态机,因为他是由网络中的每个人共同维护的。
那后端服务器呢?不像Medium的后端控制方式,在Web 3.0中,你可以编写定义了你的应用逻辑的智能合约,并将它们部署在去中心的状态机中。这意味着,每个想要构建区块链应用的人都在这个共享的状态机上部署他们的代码。
还有前端呢?几乎保持不变,除了一些我们后面将会介绍的特例之外。
现在架构大概长这个样子:
一探究竟
现在,我们一起更深入地探究是什么让这一切成为可能。
(一) 区块链
再往下,就是以太坊虚拟机,用于执行智能合约中定义的逻辑,并处理在这个全球可访问的状态机上发生的状态改变。
EVM不理解像Solidity和Vyper这些用来编写智能合约的高级语言。取而代之的是,你必须把高级语言编译为EVM可以执行的字节码。
(四) 前端
-
建立你自己的节点,该节点运行以太坊区块链软件
-
使用第三方服务提供的节点,如Infura,Alchemy和Quicknode
敏锐的读者可能也在下面的图中注意到了,前端代码并没有存储在区块链上。我们可以像在Web 2.0中那样在AWS上托管此代码,但那样就给你的DApp制造了一个中心化的卡点。如果AWS宕机了怎么办?如果它审查你的应用怎么办?
这就是为什么,如果你想要构建一个真正去中心化的应用,你应该选择把你的前端托管在一个去中心化的存储方案,比如IPFS或Swarm。
所以现在应用架构看起来更像是这样:
区块链数据查询
到目前为止,我们讨论了如何通过签名并向区块链发送交易,从而向区块链写入数据。但是怎么从区块链智能合约读取数据呢?有两种主要的方法:
以太坊的平均gas价格
平均交易手续费
开发框架
结语
Web 3.0 的核心是去中心化,这也是与 Web 2.0 最本质的差别。而去中心化,则要求由分布式网络来维护系统状态,并且分布式网络需要由不同利益方维护的节点构成。
记录下原文中几个有意思的短语:
-
rabbit hole: 用于表示一个离奇的、令人迷惑的或者荒诞的情况或环境,通常难以从中解脱。
-
take-home: take sth. home 可以表示吸收/记住会议上的想法、观点或概念。文中使用“-”连接两个单词使其成为形容词,可理解为“值得吸收的”。
本文译自:The Architecture of a Web 3.0 application
推荐阅读
点击下方空白 ▼ 查看明日开发者黄历
本文来自微信公众号“腾讯云开发者”(ID:QcloudCommunity)。大作社经授权转载,该文观点仅代表作者本人,大作社平台仅提供信息存储空间服务。