简析Web3 架构:前端、后端和数据

简介: 当谈论 Web 3.0 架构时,通常指的是 DApps,它代表去中心化应用程序。从发展历史来看,Web 2.0 架构由最熟悉的组件组成:

当谈论 Web 3.0 架构时,通常指的是 DApps,它代表去中心化应用程序。从发展历史来看,Web 2.0 架构由最熟悉的组件组成:

image.png

  • 前端:浏览器从主机服务器获取并呈现给用户的客户端应用程序。目前主流的框架包括 VueReactAngularEmber 或者其它流行框架。
  • 后端:服务器端应用程序,通常,一个应用程序会接管所有繁重的逻辑,它通过 API 与客户端交互,并使用一种流行的后端语言编写:JAVANodeJsC#GORubyPython
  • 数据库:可以是 NoSQLSQL 数据库服务器,用于存储所有客户端和服务器数据,目前最流行的数据库是 PostgresqlMongo

当然,还有更多的组件,这取决于可扩展性,但这不在本文的主题范围内。

Web 3.0 DApp中的后端

image.png

DApp 的主要区别在于去中心化,不需要集中式数据库或 Web 服务器,可以利用区块链在计算机网络之间分发应用程序。区块链将充当“状态机”,通过验证预定义规则来维护程序状态和稳定性。状态机在区块链网络的所有参与者之间传播,验证通过关于程序稳定性的共识进行存档。

后端逻辑通过智能合约实现,稍后将部署到共享状态机(区块链网络)。因此,后端驻留在点对点网络中,每个人都可以通过匹配某些标准(例如,拥有和锁定加密货币以便对更改进行投票或向程序提出建议)做出贡献。接下来看下DApp中前端是如何工作的。

Web 3.0 DApp中的前端

image.png

DApp 中前端架构主要专注于与智能合约(去中心化程序)的通信,它不同于常见的前端-后端通信。区块链网络中的每个节点都承载着程序的状态,如果要与智能合约进行通信,则必须与其中一个节点进行通信,它可能是:

  • 测试节点,如 InfuraAlchemyQuicknode
  • 或者通过自己运行状态机来设置自己的节点

启动区块链基础设施可能非常具有挑战性,尤其是想要扩展它以添加更多节点时。当用户提供时会很方便,缺点是它创建了一个集中的依赖组件。所有提供商都在实施 JSON-RPC 规范以与区块链网络进行通信。RPC 或远程过程调用,是一种请求-响应协议,它定义了允许客户端将消息发送到远程机器以执行功能并检索响应的规则。在这样的通信中,程序在客户端机器上运行,这意味着客户端不知道远程机器,所有通信都通过 HTTP 或 Web 套接字进行。

当提供商连接到区块链时,客户端能够获取有关区块链状态的信息。但是客户端如何写入区块链网络?所有写请求事务都需要使用客户端的私钥进行签名,每笔交易都会向客户收取 gas 费,这是一种加密货币,它将用于验证交易的其他节点(矿工)。

这样的提供者,如 Metamask,就像交易签署者和提供者一样。它将私钥存储在浏览器中并在客户端发出交易请求时进行签名,它还连接到区块链网络。

Web 3.0 DApp 中的数据层

image.png

由于交易 gas 费用,将数据存储在区块链中可能会非常昂贵,使用非区块链解决方案(如点对点存储的 IPFSSwarm)更为合理。

  • IPFS :一种点对点文件系统协议,允许跨机器网络存储数据,在没有流行浏览器的原生支持的情况下,IPFT 使用私有或公共网关连接到网络。
  • Swarm : 类似于 IPFT,唯一的区别是系统通过以太坊区块链网络中的智能合约维持。

为了使前端也去中心化,可以使用相同的点对点存储解决方案。

最后是为了简化查询存储在区块链或点对点网络中的数据,可以使用Graph,它将 GraphQL 查询转换为智能合约事件和点对点网关。

总结

Web 3.0 DApp 架构可能看起来相当势不可挡,确实如此,但是出现了更多旨在简化构建体验的工具,例如 hardhatthirdweb


相关文章
|
1天前
|
监控 Java 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第13天】随着现代应用的复杂性日益增加,传统的单体应用架构已不足以满足快速迭代和可扩展性的需求。本文将探讨如何通过微服务架构来提升后端开发的效率和系统的可靠性,涵盖微服务设计原则、技术栈选择、部署策略以及维护实践。我们将分析微服务的优势与挑战,并提供一系列实施建议,帮助开发者在构建和维护分布式系统时做出明智决策。
|
1天前
|
存储 监控 API
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第13天】在现代软件开发中,随着业务需求的多样化和开发流程的复杂化,传统的单体应用架构逐渐显得笨重且难以适应快速变化。微服务架构作为一种新兴的分布式系统设计方式,以其灵活性、可扩展性和技术多样性受到广泛关注。本文旨在探讨微服务架构的核心概念、设计原则以及实施策略,为后端开发人员提供一种提升系统性能和开发效率的有效途径。
19 2
|
1天前
|
存储 监控 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第9天】 在本文中,我们将深入探讨如何在后端开发中构建一个高效的微服务架构。通过分析不同的设计模式和最佳实践,我们将展示如何提升系统的可扩展性、弹性和维护性。我们还将讨论微服务架构在处理复杂业务逻辑和高并发场景下的优势。最后,我们将分享一些实用的工具和技术,以帮助开发者实现这一目标。
|
1天前
|
监控 测试技术 持续交付
构建高效可靠的微服务架构:后端开发的现代实践
【5月更文挑战第14天】 随着数字化转型的浪潮,企业对于灵活、可扩展且高效的后端系统的需求日益增长。本文旨在探讨如何通过微服务架构来实现这些需求,涵盖微服务设计原则、开发流程以及持续集成和部署(CI/CD)的最佳实践。文中还将讨论监控、日志管理与容错机制,以确保系统的可靠性和性能。
|
1天前
|
设计模式 API 持续交付
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第14天】在现代软件开发的快速迭代与多变需求中,传统的单体应用架构逐渐显露出其局限性。微服务架构作为一种新兴的分布式系统设计模式,以其灵活性、可扩展性及容错性受到广泛关注。本文将深入剖析微服务架构的核心概念,探讨其在后端开发中的应用,并提出一系列实施策略和最佳实践,以期帮助企业和技术团队更好地应对复杂多变的业务挑战。
|
1天前
|
Web App开发 前端开发 JavaScript
什么是 Web 应用开发领域的 Frontend Fragmentation(前端碎片化)现象
什么是 Web 应用开发领域的 Frontend Fragmentation(前端碎片化)现象
9 0
|
1天前
|
负载均衡 JavaScript Java
构建高效微服务架构:后端开发的新视角
【5月更文挑战第13天】在现代软件开发中,微服务架构已经成为一种流行趋势。它通过将应用程序拆分为一组小型、独立的服务来提高可扩展性、弹性和可维护性。本文将探讨如何构建一个高效的微服务架构,包括选择合适的技术栈、设计良好的服务接口、确保数据一致性以及实现有效的服务发现和负载均衡。
|
1天前
|
前端开发
|
1天前
|
监控 持续交付 数据库
构建高效可靠的微服务架构:后端开发的新范式
【5月更文挑战第13天】 在当今软件开发的世界中,微服务架构已经成为了一种流行且有效的设计模式。它通过将大型复杂系统分解为一组独立的、可部署的服务来提高系统的可维护性、可扩展性和敏捷性。本文将探讨如何构建一个高效且可靠的微服务架构,包括关键的设计原则、技术选型以及可能面临的挑战。我们的目标是为后端开发者提供一套实用的指南,以便在构建现代化应用程序时做出明智的决策。
|
1天前
|
监控 API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第12天】 在现代软件开发的浪潮中,微服务架构已经成为了设计复杂系统的首选模式。它通过将大型应用程序拆分成一组小而专注的服务来增强系统的可维护性和可扩展性。本文将探讨微服务架构的关键概念、优势以及如何在后端开发中实现一个高效的微服务系统。我们还将讨论一些常见的挑战和最佳实践,以帮助开发者避免陷入常见的陷阱。
17 6