主页 > imtoken官网钱包app > Web3.0 应用架构,是什么让 Web3.0 与众不同?

Web3.0 应用架构,是什么让 Web3.0 与众不同?

imtoken官网钱包app 2023-06-30 05:27:06

Web3.0应用程序架构,是什么让Web3.0与众不同?

Web 3.0 应用程序(或“DApps”)具有与 Web 2.0 应用程序完全不同的架构。

以博客园为例,这是一个简洁的博客站点,用户可以在其中发布自己的内容并与其他人的内容进行交互。

作为一个 2.0 的 web 应用程序,听起来可能很简单,但是博客花园的架构中有很多东西使这成为可能:

综上所述,当你在博客园上写一篇博文时,你与它的前端交互,前端与它的后端通信,后端与它的数据库通信。所有这些代码都托管在中央服务器上,并通过互联网浏览器发送给用户。这是对当今大多数 Web 2.0 应用程序如何工作的高级总结。

但这一切都在改变。

区块链技术为 Web 3.0 应用开辟了一个激动人心的新方向。在本文中,我们将重点介绍以太坊区块链带来的好处。

是什么让 Web3.0 与众不同?

以太坊智能合约的编程语言

不同于Blog Garden等Web2.0应用,Web3.0省去了中间人。没有存储应用程序状态的集中式数据库,也没有后端逻辑所在的集中式 Web 服务器。

相反,您可以利用区块链在由互联网上的匿名节点维护的分散状态机上构建应用程序。

“状态机”是指维护某些给定程序状态和该机器上允许的未来状态的机器。区块链是一个以某种初始状态实例化的状态机,并且具有非常严格的规则(即共识)来定义该状态如何转换。

更好的是,没有单个实体可以控制这个分散的状态机 - 它由网络中的每个人维护。

后端服务器呢?在 Web3.0 中,你可以编写定义应用程序逻辑的智能合约,并将它们部署在去中心化的状态机上,而不是如何控制博客园的后端。这意味着每个想要构建区块链应用程序的人都将他们的代码部署在这个共享状态机上。

前端呢?它几乎保持不变,除了一些例外,我们稍后会介绍。

这是架构的样子:

从现象看本质

以太坊智能合约的编程语言

现在,让我们更深入地了解一下是什么让这成为可能。

区块链

以太坊区块链经常被吹捧为“世界计算机”。这是因为它是由对等节点网络维护的全局可访问的确定性状态机。此状态机上的状态更改由网络中的对等方遵循的共识规则控制。

因此,换句话说以太坊智能合约的编程语言,它实际上被设计为世界上任何人都可以访问和写入的状态机。因此,这台机器不属于任何单一实体,而是由网络中的每个人共同拥有。

还有一点需要了解:数据只能写入以太坊区块链——你永远无法更新现有数据。

智能合约

智能合约是在以太坊区块链上运行的程序,它定义了区块链上发生的状态变化背后的逻辑。智能合约是用 Solidity 或 Vyper 等高级语言编写的。

由于智能合约代码存储在以太坊区块链上,任何人都可以查看网络上所有智能合约的应用逻辑。

以太坊智能合约的编程语言

以太坊虚拟机 (EVM)

接下来,您拥有以太坊虚拟机,它执行智能合约中定义的逻辑并处理状态机上发生的可全局访问的状态更改。

EVM 不理解用于编写智能合约的高级语言,例如 Solidity 和 Vyper。相反,您必须将高级语言编译成字节码,然后 EVM 可以执行。

前端

最后,我们有了前端。正如我们之前提到的,它定义了 UI 逻辑,但前端也与智能合约中定义的应用程序逻辑进行通信。

前端和智能合约之间的通信比上图中显示的要复杂一些。接下来让我们仔细看看。

前端代码如何与以太坊上的智能合约进行通信?

我们希望我们的前端能够与我们的智能合约进行通信,以便它们可以调用函数,但请记住,以太坊是一个去中心化网络。以太坊网络中的每个节点都会在以太坊状态机上保存一份所有状态的副本,包括与每个智能合约相关的代码和数据。

以太坊智能合约的编程语言

当我们想要与区块链上的数据和代码进行交互时,我们需要与这些节点之一进行交互。这是因为任何节点都可以广播请求以在 EVM 上执行交易。然后矿工将执行交易并将结果状态更改传播到网络的其余部分。

广播新交易有两种方式:

设置您自己的运行以太坊区块链软件的节点

使用 Infura、Alchemy 和 Quicknode 等第三方服务提供的节点

如果您使用 3rd 方服务,则不必自己处理运行完整节点的所有麻烦。毕竟,在你自己的服务器上设置一个新的以太坊节点可能需要几天时间。 (有很多数据需要同步——它甚至会占用比典型笔记本电脑所能处理的更多的带宽和存储空间。)

此外,存储完整的以太坊区块链的成本会随着 DApp 的扩展而增加,您需要添加更多节点来扩展您的基础架构。这就是为什么随着您的基础架构变得越来越复杂,您将需要一名全职 DevOps 工程师。他们将帮助您维护基础架构,以确保可靠的正常运行时间和快速的响应时间。

总而言之,避免这些令人头疼的问题是许多 DApp 选择使用 Infura 或 Alchemy 等服务来为其管理节点基础设施的原因。当然,有一个权衡,因为这会创建一个集中的阻塞点,但让我们把那个兔子洞留到另一天。

继续,让我们谈谈供应商。当您需要与区块链交互时(无论是您自己设置还是使用第三方服务的现有节点)连接的节点通常称为“提供者”。

以太坊智能合约的编程语言

每个以太坊客户端(即提供者)都实现 JSON-RPC 规范。当前端应用程序想要与区块链交互时,这确保了统一的方法。如果您需要开始使用 JSON-RPC,它是一种无状态、轻量级的远程过程调用 (RPC) 协议,它定义了各种数据结构及其处理规则。它与传输无关,因此这些概念可以在相同的进程、套接字、HTTP 或许多不同的消息传递上下文中使用。它使用 JSON (RFC 4627) 作为数据格式。

通过提供者连接到区块链后,您可以读取存储在区块链上的状态。然而,如果你想写入状态,在将交易提交到区块链之前,你还需要做一件事——使用你的私钥来“签署”交易。

例如,假设我们有一个 DApp 可以让用户阅读或发布博客文章到区块链。您可能在前端有一个按钮以太坊智能合约的编程语言,允许任何人查询特定用户撰写的博客文章。 (回想一下,从区块链读取数据不需要用户签署交易。)

但是,当用户想要在链上发布新帖子时,我们的 DApp 将要求用户使用他们的私钥“签署”交易 - 只有这样 DApp 才会将交易中继到区块链。否则,节点将不接受交易。

Metamask 通常派上用场的地方。

Metamask 是一种允许应用程序轻松处理密钥管理和事务签名的工具。很简单:Metamask 将用户的私钥存储在浏览器中,每当前端需要用户签署交易时,它就会调用 Metamask。

Metamask 还提供了与区块链的连接(作为“提供者”),因为它已经与 Infura 提供的节点建立了连接,因为它需要它来签署交易。这样一来,Metamask 既是提供者又是签名者。

程序学习分享»Web3.0 应用架构,是什么让Web3.0 与众不同?