区块链基础——区块链应用架构概览

目录

区块链应用架构概览:

1、区块链技术回顾

1.1、以太坊结点结构

1.2、多种应用场景

2、区块链应用架构概览

2.1、传统的Web2 应用程序架构

  2.2、Web3 应用程序架构——最简架构

2.3、Web3 应用程序架构——前端web3.js ether.js

2.4、Web3 应用程序架构——去中心化的链下存储

2.5、Web3 应用程序架构——加速获取链上数据

2.6、Web3 应用程序架构——L2 scaling 解决方案

3、Scaffold-ETH2 Dapp应用框架演示

3.1、Scaffold-ETH2介绍

3.2、Scaffold-ETH2使用及安装

1、使用Scaffold-ETH2必须预先安装的开发工具

2、克隆源码,安装依赖,修改hardhat配置

3、在第一个终端中运行本地网络

4、运行本地网络结果

5、在第二个终端上,部署测试合约

6、部署测试合约运行结果

7、在第三个终端上,启动 NextJS 应用

8、启动 NextJS 应用运行结果

9、浏览器页面访问测试页

10、浏览器页面访问测试页面结果


区块链应用架构概览:

区块链应用架构通常包括以下几个关键组件:

1.区块链网络:由多个节点组成的去中心化网络,每个节点都保存着完整的区块链数据副本,并通过共识算法来保持网络的一致性和安全性。
2.智能合约:在区块链上执行的自动化合约,通常使用智能合约平台(如以太坊)来编写和部署。智能合约可以定义和执行一系列预定的规则和操作,从而实现各种功能,如数字资产交易、去中心化金融服务等。
3.用户界面:提供给用户与区块链应用交互的界面,可以是网页、移动应用程序或其他形式的用户界面。用户界面通常与区块链网络和智能合约进行交互,允许用户查看信息、发起交易、管理资产等。
4.身份验证和访问控制:用于验证用户身份并管理其在区块链应用中的访问权限的机制。这可以包括基于密码学的身份验证、多重签名等技术,以确保只有授权用户可以执行特定操作。
5.数据存储:用于存储与区块链应用相关的数据的机制。这些数据可以包括用户资产信息、交易记录、智能合约状态等。在一些情况下,数据可能会存储在区块链上,而在其他情况下,可能会使用传统的数据库或分布式存储系统。
6.安全性和隐私保护:包括各种技术和机制,用于确保区块链应用的安全性和用户数据的隐私保护。这可能包括加密技术、权限控制、安全审计等。

这些组件通常相互交互,共同构成一个完整的区块链应用架构,用于实现各种去中心化应用的功能和特性。

1、区块链技术回顾

1.1、以太坊结点结构

逻辑可分为6层 1.数据层 2.网络层 3.共识层 4.激励层 5.合约层 6.应用层

1.2、多种应用场景

如图所示:

举例说明:

区块链票据:区块链票据是指利用区块链技术来管理和传输票据信息的一种方式。举例来说,假设有一家公司需要向另一家公司支付货款,它可以创建一个电子票据,并将其存储在区块链上。这个电子票据包含了支付的金额、双方的身份信息以及支付的时间等信息。当支付完成时,这个交易将被记录在区块链上,双方都可以查看并验证交易的合法性,从而增加了交易的透明度和可信度。

供应链金融:供应链金融是利用金融工具来支持供应链中的各个环节,以促进供应链的流畅运作和资金的有效利用。通过区块链技术,供应链金融可以实现更高效的资金流动和信息共享。举例来说,一家供应商可以将其应收账款转化为数字资产,并将其存储在区块链上。金融机构可以基于这些数字资产为供应商提供资金支持,从而缩短资金周转周期,降低融资成本,并提高供应链的稳定性。

最高法司法链:最高法司法链是指利用区块链技术来改善司法系统的运作和透明度。通过将法律文书、裁决结果和司法记录等信息存储在区块链上,可以确保这些信息的不可篡改性和可追溯性,从而提高司法系统的公正性和可信度。举例来说,法院可以将裁决结果记录在区块链上,当事人和相关利益方都可以通过区块链查看和验证这些信息,从而减少争议和纠纷的发生,提高司法效率。

2、区块链应用架构概览

2.1、传统的Web2 应用程序架构

图示是对大多数 Web 2.0 (B/S)应用程序如何工作的一个很好的抽象总结。 首先,必须有一个地方来存储基本数据,也就是数据库; 其次,要有后端代码(用 Node.js、Java 或 Python 等语言编写),用于定义业务逻辑; 第三,还要有前端代码(通常用 JavaScript、HTML 和 CSS 编写),用于实现 UI 和交互; 这些代码都托管在集中式服务器(中心化服务器)上。

  2.2、Web3 应用程序架构——最简架构

视角来到 Web3.0 ,消除了中心化,没有集中式的数据库,没有存放后端代码的集中式 Web 服务器。采用了区块链技术,在互联网上的区块链节点维护的分布式 状态机 上构建应用程序。 “状态机”维护一些给定的程序状态,它具有非常严格的智能合约语言和共识机制来控制状态如何转换。

2.3、Web3 应用程序架构——前端web3.js ether.js

Web3 App与区块链上的数据和代码进行交互时,任何节点都可以广播在 EVM 上执行交易的请求,然后结点执行交易并将结果状态更改传播到网络的其余部分。 广播新交易有两种方式: 1.自己运行以太坊区块链软件的节点并直接连接; 2.使用Infura、 Alchemy、moralis和Quicknode 等第三方服务提供的节点,设置提供者url; Web3身份验证 1.通过钱包连接来验证身份和鉴权,例如 Metamask、Wagmi 等

2.4、Web3 应用程序架构——去中心化的链下存储

IPFS、Swarm、filecoin以及NFT.storage等是用于存储和访问数据的分布式文件系统,任何人都可以轻松去访问和检验。 ipfs的基础是p2p网络

2.5、Web3 应用程序架构——加速获取链上数据

如何加速获取链上数据? The Graph是用于整理、归纳区块链数据的去中心化索引协议 (Decentralized Indexing Protocol) 。使用GraphQL来查询开放式API的应用被称作子图 (Subgraph) ,其用来检索网络上已经被索引的数据。 借助 The Graph,可以更轻松地查询以太坊区块链上的数据,这比传统的 REST API 更具性能优势。https://thegraph.com/

2.6、Web3 应用程序架构——L2 scaling 解决方案

Web3 应用程序架构指的是构建在区块链技术之上的下一代互联网应用程序架构,其核心特点包括去中心化、安全性、透明度和用户控制权。L2 scaling 解决方案则是针对区块链网络的可扩展性问题提出的一种解决方案,旨在通过将部分交易或数据处理放到链下进行,以减轻链上压力,提高整体吞吐量和性能。

举例来说,以以太坊为例,它是一个智能合约平台,但由于其链上交易处理速度较慢,处理费用较高,导致了交易拥堵和高昂的 Gas 费用。为了解决这些问题,许多 L2 scaling 解决方案被提出,其中包括:

  1. 侧链(Sidechains):侧链是与主区块链相连接的并行区块链,可以处理主链上的一部分交易。通过将部分交易移至侧链上进行处理,可以减轻主链的压力,提高整体的交易吞吐量。Plasma 和 OmiseGO 就是基于侧链的 L2 解决方案。

  2. 状态通道(State Channels):状态通道是在参与者之间直接开启的加密通道,可以在通道内进行快速和廉价的交易。只有在需要时才将最终状态提交到区块链上,从而减少了链上的交易数量和成本。闪电网络是基于状态通道的 L2 解决方案的一个例子。

  3. 侧向扩展(Layer-2 Rollups):侧向扩展是一种将大量交易汇总并批量提交到主链的方法,以减少链上交易的数量和成本。Rollup 解决方案通过在主链上提交一个包含所有交易数据的 Merkle 树根哈希来证明侧链的状态,从而实现了链上验证和安全性。Optimistic Rollup 和 ZK-Rollup 是两种常见的 Rollup 解决方案。

1.二层网络是一条独立的区块链,它扩展了以太坊并继承了以太坊的安全保证。通过桥连接到L1网络 2.交易在L2链操作,然后把多个交易一起打包提交到主链。 3.L2网络:Arbitrum、Optimism、Starknet、Polygon

2.7Web3 应用程序架构(总结)——通用Dapp架构

3、Scaffold-ETH2 Dapp应用框架演示

3.1、Scaffold-ETH2介绍

一个开源的用于在以太坊区块链上构建去中心化应用程序的工具包。 可以使开发人员更容易创建和部署智能合约,并构建与这些合约交互的用户界面。 遵循我们上述的通用Dapp应用架构 工具: NextJS, RainbowKit, Hardhat, Wagmi, Viem, and Typescript.

3.2、Scaffold-ETH2使用及安装

1、使用Scaffold-ETH2必须预先安装的开发工具

Node (>= v18.17)

Yarn (v1 or v2+)

Git

2、克隆源码,安装依赖,修改hardhat配置

git clone https://github.com/scaffold-eth/scaffold-eth-2.git

cd scaffold-eth-2

yarn install

hardhat.config.ts文件

defaultNetwork: "localhost"

3、在第一个终端中运行本地网络

yarn chain

(1) 该命令使用 Hardhat 启动本地以太坊网络,自动生成20个钱包账号,可用于测试和开发。

(2) 可以在 中 hardhat.config.ts 自定义网络配置。

4、运行本地网络结果

5、在第二个终端上,部署测试合约

yarn deploy

(1) yarn deploy 命令使用位于  packages/hardhat/deploy 中的部署脚本将合约部署到网络。

(2) 可以自定义部署脚本。

(3) 合约位于 packages/hardhat/contracts 中,可以根据需要进行修改。

6、部署测试合约运行结果

7、在第三个终端上,启动 NextJS 应用

yarn start

8、启动 NextJS 应用运行结果

9、浏览器页面访问测试页

在以下位置访问您的应用程序: http://localhost:3000 。

可以使用该 Debug Contracts 页面与您的智能合约进行交互。

可以在 中 packages/nextjs/scaffold.config.ts 调整应用程序配置。

10、浏览器页面访问测试页面结果

结语:本篇全文搬运老师PPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/574456.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈菊风实时音视频 (RTC)与实时操作系统 (RTOS) 在智能硬件领域应用

近年来,菊风通过实时音视频赋能智能手表、智能门禁、智能门锁/门铃、智能眼镜等数十种智能硬件,与一众合作伙伴共同探索在IoT智能硬件领域的不同场景应用,积累了丰富的实践经验。在智能硬件中,RTOS因其轻量化的系统内核&#xff0…

C#基础之函数基础

函数 文章目录 1、函数基础1、概念2、函数位置3、基本语法4、实际运用5、return 2、ref 和 out1、ref 和 out 使用2、区别思考 登录 3、变长参数和参数默认值1、变长参数2、参数默认值 4、函数重载5、递归函数思考1 阶乘思考2 阶乘相加思考3 竹竿减半思考4 递归循环输出 1、函数…

多客圈子交友系统 uniapp+thinkphp6适配小程序/H5/app/api全开源,多款插件自选,支持个性定制!

网上交友的优点包括: 1. 方便:网上交友可以随时随地进行,不受时间和空间的限制,方便且高效。 2. 匿名性:网上交友可以实现匿名性,用户可以匿名地搜索、聊天或交换信息,保护个人隐私和安全。 3.…

RE | BUUCTF 刮开有奖1

题目:BUUCTF 刮开有奖1 参考: BUUCTF 刮开有奖(特别详细了,尽自己全力理解所写)(这是主参考,写得很详细 BUUCTF_刮开有奖(主参考的参考,思路很清晰 我是大菜鸡…尽力写自…

报错:图片验证码接口对接vue+springboot(下一个笔记会记录整个验证码的代码)

问题:空指针异常ai: 根据错误堆栈信息中提供的方法调用位置,看起来空指针异常是在 AuthCodeServiceImpl 类的 authUserCoded 方法的第 41 行发生的。 为了解决这个问题,你可以检查 AuthCodeServiceImpl 类中 authUserCoded 方法的第 41 行&am…

Qt xml示范

1.数据格式 #ifndef XML_DATA_H #define XML_DATA_H#include<QWidget>struct Student {int s_id;QString s_name;double s_math_score;double s_english_score;}; struct Teacher{int t_id;QString t_name;QVector<Student> t_students_v; };#endif // XML_DATA_H…

【JavaEE网络】TCP/IP协议:细节与应用

目录 TCP/IP协议协议格式传输层重点协议UDP协议UDP协议端格式 UDP的特点TCP协议TCP协议端格式 TCP的特点 TCP/IP协议 协议格式 应用层&#xff08;后端开发必知必会&#xff09;&#xff1a;这一层也有很多现成的协议&#xff08;后面还会重点介绍HTTP协议&#xff0c;这是做…

从0开始用C写贪吃蛇(基于链表)

目录 1. 游戏背景 2. 游戏效果演示​编辑​编辑​编辑 3. 实现目标 4. 技术要点 5. 控制台程序 5.1 设置控制台窗口的长宽和名字 5.2 控制台屏幕上的坐标COORD 6.Win32 API 6.1 GetStdHandle 6.2 GetConsoleCursorInfo 6.3 CONSOLE_CURSOR_INFO 6.4 SetConsole…

CSS 之 transition过渡动画

一、简介 ​ CSS 制作 Web 动画有两种方式&#xff1a; 帧动画&#xff08;Keyframe Animation&#xff09;和过渡动画&#xff08;Transition Animation&#xff09;。针对不同的业务场景中&#xff0c;我们应该选择不同的动画方式&#xff0c;通常来说&#xff1a;对于交互元…

iOS runtime

—参考文章— 暂时没有 一、如何在Xcode中使用runtime Xcode默认是不建议开发者使用runtime的&#xff0c;所以在Xcode直接使用runtime的语法是会报错误的。 如果要在Xcode中使用runtime的语法&#xff0c;是需要配置一下才可以使用&#xff0c;配置方法如下图&#xff1a; 首…

开源向量数据库比较:Chroma, Milvus, Faiss,Weaviate

语义搜索和检索增强生成(RAG)正在彻底改变我们的在线交互方式。实现这些突破性进展的支柱就是向量数据库。选择正确的向量数据库能是一项艰巨的任务。本文为你提供四个重要的开源向量数据库之间的全面比较&#xff0c;希望你能够选择出最符合自己特定需求的数据库。 什么是向量…

Microsoft Edge浏览器:高效、简洁、个性化的网页浏览体验

Microsoft Edge是微软公司推出的一款网络浏览器&#xff0c;它是基于Chromium开源项目开发的&#xff0c;因此与Google Chrome有很多相似之处。以下是一些使用Microsoft Edge的心得体会&#xff1a; 1. 界面简洁&#xff1a;Microsoft Edge的界面设计非常简洁&#xff0c;用户…

Spring Boot集成RabbitMQ快速入门Demo

1.什么是RabbitMQ&#xff1f; RabbitMQ是一款使用Erlang语言开发的&#xff0c;基于AMQP协议的消息中间件&#xff0c;作为一款优秀的消息系统&#xff0c;RabbitMQ有高并发、可扩展等优势&#xff0c;并适用于大型系统中各个模块之间的通信。 RabbitMQ的特点为&#xff1a; 持…

微信小程序按钮点击时的样式hover-class=“hover“

小程序的button组件很好用&#xff0c;按钮点击的时候会显示点击状态&#xff0c;默认的就是颜色加深 但是我们改变了button的背景色之后&#xff0c;就看不出点击效果了&#xff0c;解决起来也很简单 关键代码就是小程序的 hover-class 属性&#xff0c;需要注意的是&#xff…

Mysql(数据库)知识详解【6】~{锁,架构}

数据库锁和架构是两个不同的概念&#xff0c;但它们都与数据库管理系统&#xff08;DBMS&#xff09;的性能和并发控制有关。 数据库锁&#xff1a; 数据库锁是一种同步机制&#xff0c;用于控制多个事务对共享资源的访问。锁可以确保数据的一致性和完整性&#xff0c;防止多个…

AI 重写人类DNA,开源基因编辑器问世;安卓版Gemini新增多项功能

&#x1f989; AI新闻 &#x1f680; AI 重写人类DNA&#xff0c;开源基因编辑器问世 摘要&#xff1a;初创公司 Profluent 最新宣布&#xff0c;开发出世界首个完全由 AI 设计的基因编辑器&#xff0c;并成功应用于人类细胞 DNA&#xff0c;这一技术可谓是分子生物学的一大突…

【stomp 实战】spring websocket源码分析之握手请求的处理

上一节【搭建一套websocket推送平台】我们通过一个项目&#xff0c;实现了一套推送平台。由于spring框架对于websocket的支持和stomp协议的良好封装&#xff0c;我们很容易地就实现了websocket的消息推送功能。虽然搭建这么一套推送系统不难&#xff0c;但是如果不了解其底层原…

Linux中手工创建一个用户

当我们需要新创建一个用户时&#xff0c;有两种方法 1.使用命令添加用户 2.去配置文件里面添加用户 1&#xff0c;使用useradd命令&#xff1a; [rootlocalhost /]# useradd tmg 然后给它设置一个密码 [rootlocalhost etc]# passwd tmg Changing password for user tmg. N…

linux 系统文件目录颜色及特殊权限对应的颜色

什么决定文件目录的颜色和背景&#xff1f; 颜色 说明 栗子 权限白色表示普通文件 蓝色表示目录 绿色表示可执行文件 浅蓝色链接文件 黄色表示设备文件 红色 表示压缩文件 红色闪烁表示链接的文件有问题 灰色 表示其它文件 可以用字符表示文件的类型&am…

新风口下的必应bing国内广告投放该怎么做?

必应Bing作为全球搜索引擎市场的重要参与者&#xff0c;正逐渐显现出其在国内市场的独特价值和潜力。随着互联网生态的多元化发展&#xff0c;必应Bing凭借其高质量用户群和精准投放能力&#xff0c;成为了企业寻求新增长点的新风口。 一、洞察先机&#xff0c;精准定位市场 …
最新文章