Web3.0 App 的设计架构,看这一篇就够了(web软件架构)

先来回顾下 Web2.0 应用程序架构,一图胜千言:

Web3.0 App 的设计架构,看这一篇就够了(web软件架构)

图示是对大多数 Web 2.0 应用程序如何工作的一个很好的抽象总结。以一个博客平台为例:

首先,必须有一个地方来存储基本数据,也就是数据库;

其次,要有后端代码(用 Node.jsJavaPython 等语言编写),用于定义业务逻辑;

第三,还要有前端代码(通常用 JavaScript、HTMLCSS 编写),用于实现 UI 和交互;

这些代码都托管在集中式服务器上。


视角来到 Web3.0 ,消除了中心化,没有集中式的数据库,没有存放后端代码的集中式 Web 服务器。采用了区块链技术,在互联网上的匿名节点维护的分布式 状态机 上构建应用程序。

状态机”是指一台机器,它维护一些给定的程序状态、以及该机器上允许的未来状态,它具有非常严格的规则(即共识)来定义状态如何转换。

没有一个实体可以控制这个分布式的状态机 —— 它由网络中的每个人共同维护。

后端逻辑代码化身成状态机上的“智能合约”,这是开源的。

前端部分呢?暂按下不表,先看此时数据库、后端代码演变后的架构图:

Web3.0 App 的设计架构,看这一篇就够了(web软件架构)


再进一步看看这些新颖的概念:

  • ethereum blockchain,以太坊区块链,被认为是“世界计算器”,一个可全局访问的状态机,对等节点网络维护,状态的更改遵循共识规则的约束;只要是写入了数据,就会被记录,数据不能再更新回去;
  • 智能合约:以太坊上运行的程序,由高级编程语言编写,例如 Solidity 或 Vyper;

Web3.0 App 的设计架构,看这一篇就够了(web软件架构)

任何人都能检查智能合约是否合理;

  • EVM 虚拟机,用于执行合约的环境,相当于执行引擎;

OK,视野来到了前端代码部分。按道理将,前端代码应该也是用智能合约的方式实现,实际上,它也确实如此,不过要更为复杂一点。

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

广播新交易有两种方式:

  1. 设置自己运行以太坊区块链软件的节点;
  2. 使用Infura、 Alchemy和Quicknode等第三方服务提供的节点;

借助第三方节点可能会更轻松一点,它的逻辑是这样的:

Web3.0 App 的设计架构,看这一篇就够了(web软件架构)

每个以太坊客户端(即提供者)都实现了 JSON-RPC 规范。这确保了当前端应用程序想要与区块链交互时,有一组统一的方法。JSON-RPC 是一种无状态、轻量级的远程过程调用 (RPC) 协议,定义了多个数据结构及其处理规则。它与传输无关,可以通过多种方式传输,比如 HTTP、套接字、其它传输环境,JSON (RFC 4627) 作为一种数据格式。

还有一个很重要的东西,进行身份验证,鉴权。通常借助 Metamask 实现;

Web3.0 App 的设计架构,看这一篇就够了(web软件架构)

Metamask 将用户的私钥存储在浏览器中,每当前端需要用户签署交易时,它就会调用 Metamask。


将所有内容都存储在区块链上是很昂贵的,更新数据都需要收费,所以还有一个 去中心化的链下存储解决方案 —— IPFS/Swarm

架构图如下:

Web3.0 App 的设计架构,看这一篇就够了(web软件架构)

IPFS/Swarm 是用于存储和访问数据的分布式文件系统,你可以轻松去检验它。


到目前为止,我们已经讨论了如何写入,那如何读取数据呢?

答案是借助 The Graph,The Graph 是一种链下索引解决方案,可以更轻松地查询以太坊区块链上的数据。前端工程师可以直接调用,这比传统的 REST API 更具有吸引力。

现在,Dapp 架构如下:

Web3.0 App 的设计架构,看这一篇就够了(web软件架构)

截至目前,架构图已初成雏形。


引申补充,完整的实现上图这一架构,成本有点高昂。所以,有一种流行的扩展方案 —— L2 scaling 解决方案

Web3.0 App 的设计架构,看这一篇就够了(web软件架构)

在侧链操作,然后提交到主链。

Web3.0 App 的设计架构,看这一篇就够了(web软件架构)

这样既节约成本,又能达到目的,真是大聪明。

本瓜就把这个侧链执行,理解为代码的预编译吧,编译后再放到浏览器引擎上做真正的编译执行。

  • 附:以上框架的开发工具是 Hardhat

本篇就是完整的“浅析 Web3.0 DApp(去中心化应用程序)设计架构”。

以上!作为入门级架构浅析,说的真的很通透了!三连了!

我是掘金安东尼: 一名人气前端技术博主(文章 100w 阅读量)

终身写作者(INFP 写作人格)

坚持与热爱(简书打卡 1000 日)

我能陪你一起度过漫长技术岁月吗(以梦为马)

觉得不错,给个三连吧(这是我最大的动力 )

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年9月14日 上午9:46
下一篇 2024年9月14日 上午9:58

相关推荐

  • 深圳临床医学院5名医学生获市医学研究专项资金项目立项(深圳市临床医学研究中心)

    近日,2023年深圳市医学研究专项资金项目评审结果揭晓,深圳临床医学院5名医学生获得立项,其中博士生2项、本科生3项,共获资助35万元。此科研立项为深圳市首次启动的医学科研专项工作…

    科研百科 2024年4月8日
    106
  • 系统集成与项目管理

    系统集成与项目管理 系统集成与项目管理是软件开发过程中非常重要的两个环节。系统集成是将不同的软件组件和硬件设备组合起来,以实现一个完整的系统。项目管理则是在软件开发生命周期中,对开…

    科研百科 2024年12月12日
    0
  • 区直工委验收华法党建品牌建设工作(法 党建品牌)

    1月5日,区委组织部四级调研员于文生一行莅临华龙区法院检查验收党建品牌建设工作。党组成员、副院长王照民主持会议。 验收组听取了诉讼服务中心支部和执行局支部党建品牌内涵及特色品牌创建…

    科研百科 2023年7月10日
    72
  • 蹭蹭匿名聊天

    蹭蹭匿名聊天 最近我想和你聊聊。我们可以聊聊你最近在做什么,有什么有趣的经历。或者我们可以聊聊我们共同的爱好,看看我们可以从中得到什么乐趣。 我想听听你的故事。你有什么想分享的吗?…

    科研百科 2024年12月4日
    5
  • 搭建项目管理系统源码

    搭建项目管理系统源码 随着软件开发的不断进步,人们对于项目管理系统的需求也越来越高。项目管理系统可以帮助开发人员更好地管理项目进度、资源、质量和成本,从而提高项目管理的效率和精度。…

    科研百科 2024年12月17日
    0
  • 达索系统:工业软件推动制造业“数智化”转型(达索的工业软件)

    发展数字经济是把握新一轮科技革命和产业变革新机遇的战略选择。“十四五”规划提出“打造数字经济新优势”,以数字化转型整体驱动生产生活和治理方式的变革。加快推动数字经济与实体经济的深度…

    科研百科 2022年7月12日
    286
  • 工程建设类项目管理软件

    工程建设类项目管理软件 随着现代工程建设的日益复杂和高效,项目管理软件已经成为工程建设中不可或缺的一部分。工程建设类项目管理软件可以帮助项目管理人员更好地管理项目进度、成本和质量,…

    科研百科 2024年8月18日
    31
  • 保研加分小能手|大创项目,你值得拥有!(保研 大创)

    新生入校,在了解各方面情况的时候,会听说有个“大创项目”在保研/评优评奖的时候能加分!能证明自己的科研经历,全国公认! 还有这等好事? 这个“大创项目”到底是个啥?咱们快来聊一聊吧…

    科研百科 2024年4月6日
    92
  • 工程erp管理系统(工程erp 管理软件)

    工程ERP管理软件概述 随着信息技术的不断发展,工程ERP管理软件已经成为工程领域中不可或缺的一部分。ERP(Enterprise Resource Planning,企业资源规划…

    科研百科 2024年6月5日
    69
  • 华为erp系统流程详解

    华为ERP系统流程详解 华为ERP系统是华为公司推出的一款集采购、生产、物流、财务等功能于一体的企业资源计划系统。本文将详细介绍华为ERP系统的流程。 一、用户管理 华为ERP系统…

    科研百科 2024年11月30日
    2