赞
踩
目录
Web 3.0 应用(即DApps)的架构与 Web 2.0 完全不同。
以一个简单的博客网站Medium为例,用户可以在这里发布他们自己的内容并与其他用户的内容互动。
作为一个 Web 2.0 应用,可能听起来会很简单,但仍有以下这么多特性构成了Medium的架构,才使得一切成为可能:
首先,必须有一个地方用于存储重要的数据,比如用户信息、帖子、标签、评论、点赞等等,这需要一个不断更新的数据库。
其次,后端代码(使用Node.js、Java或Python等语言编写的)必须定义Medium的业务逻辑。比如当一个新用户注册时、发布一条新博客时 或 在其他人的博客上评论时,分别会发生什么。
第三,前端代码(通常用JavaScript、HTML和CSS编写)必须定义Medium的UI逻辑。例如,网页长什么样,用户跟页面上的每个元素交互时会发生什么。
把这些串联在一起,当你在Medium上写博客文章时,你跟它的前端交互,前端跟后端通信,后端跟数据库打交道。所有的这些代码都托管在中心化的服务器上并通过一个网络浏览器发送给用户(译者注:前端代码会通过网络发送到前端并在浏览器渲染,后端以接口形式对前端提供服务)。这是对现在大多数的 Web 2.0 应用如何运作的一个比较好的顶层抽象总结。
但所有这些都在变化之中。
区块链技术解锁了一个激动人心的Web 3.0应用新方向。在本文中,我们将聚焦于以太坊区块链给我们带来了什么。
是什么让 Web 3.0 如此不同?
不像Medium这样的Web 2.0应用,Web 3.0消除了中间人,没有中心化的数据库存储应用状态,也没有中心化的Web服务器承载后端逻辑。
取而代之的是,你可以利用区块链,在一个由互联网上匿名节点维护的去中心化的状态机上构建应用。
这里的“状态机”,指的是维护某个状态的机器,包括某个给定的程序状态和该机器上未来允许的状态。区块链就是由某个“创世”状态实例化,并有着非常严格的状态转移规则(即共识机制)的状态机。
更好的是,没有一个单一实体可以控制这个去中心化状态机,因为他是由网络中的每个人共同维护的。
那后端服务器呢?不像Medium的后端控制方式,在Web 3.0中,你可以编写定义了你的应用逻辑的智能合约,并将它们部署在去中心的状态机中。这意味着,每个想要构建区块链应用的人都在这个共享的状态机上部署他们的代码。
还有前端呢?几乎保持不变,除了一些我们后面将会介绍的特例之外。
现在架构大概长这个样子:
现在,我们一起更深入地探究是什么让这一切成为可能。
1) 区块链
以太坊区块链被誉为“世界计算机”。这是因为他是由点对点节点网络维护的全球可访问、确定性的状态机。该状态机的状态改变受网络中的节点间遵循的共识规则所约束。所以,换句话说,跟字面意思一样,它确实是被设计为世界上任何人都可以访问和写入的状态机。这就使得该机器不由任何一个单一实体独有,而是由网络中的每个人共同拥有。
我们还要知道一件事:数据只能写入以太坊区块链——你永远无法更新现有数据。
2) 智能合约
智能合约是以太坊区块链上运行的一个程序,它定义了区块链上发生的状态改变背后的逻辑。智能合约使用高级语言编写,比如Solidity或Vyper。
因为智能合约的代码在以太坊区块链上存储,所以每个人都可以检查网络上所有智能合约的应用逻辑。
3) 以太坊虚拟机(Ethereum Virtual Machine, EVM)
再往下,就是以太坊虚拟机,用于执行智能合约中定义的逻辑,并处理在这个全球可访问的状态机上发生的状态改变。
EVM不理解像Solidity和Vyper这些用来编写智能合约的高级语言。取而代之的是,你必须把高级语言编译为EVM可以执行的字节码。
4) 前端
最后,是前端。如前所述,前端定义了UI逻辑,但是它也跟智能合约中定义的应用逻辑进行通信。前端和智能合约之间的通信比上图中显示的要复杂一些,接下来我们仔细看看这部分。
我们希望前端可以与智能合约
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。