区块链平台架构分析

2023-11-05

一般说来,一个标准的区块链项目应该由数据层、网络层、共识层、激励层、合约层和应用层组成。

在这里插入图片描述
每一层的具体介绍如下:

数据层

数据层是区块链最底层的技术,主要的功能为数据存储、账户和交易的实现与安全。数据存储主要基于Merkle树,通过区块的方式和链式结构实现,大多以KV数据库的方式实现持久化,如比特币和以太坊采用的LevelDB。

网络层

网络层的主要目的是实现区块链网络节点之间的信息交互。区块链的本质是一个点对点(P2P)网络,每一个节点既能够接收信息,也能够生产信息,节点之间通过维护一个共同的区块链来保持通信。
在区块链的网络中,每一个节点都可以创造出新的区块,新区块被创造出以后,会通过广播的形式通知其他的节点,而其他节点反过来会对这个节点进行验证。当区块链网络中超过51%的用户对其验证通过以后,这个新的区块就会被添加到主链上。

账本层

账本层负责区块链系统的信息存储,包括收集交易数据,生成数据区块,对本地数据进行合法性校验,以及将校验通过的区块添加到链上。
账本层有以下两种数据记录方式:
(1)在基于资产的模型中,首先以资产为核心进行建模,然后记录资产的所有权,即所有权是资产的一个字段。
(2)在基于账户的模型中,建立账户作为资产和交易的对象,资产是账户下的一个字段。

共识层

共识层能够让高度分散的节点在去中心化的系统中针对区块数据的有效性达成共识。区块链中比较常用的共识机制包括工作量证明、权益证明和股份授权证明等。
共识机制的作用主要有两个,一个是奖励,另一个是惩罚。比特币和以太坊用的是工作量证明机制(PoW)。此机制根据算力进行奖励和惩罚,如有节点作弊,算力会受到损失。
Bitshares、Steemit、EOS采用股份授权证明机制(DPoS),拥有代币的人可以参与节点的投票,被大家选出来的节点参与记账,一旦作弊就会被系统投出。
其中的激励功能主要是指给予代币奖励,鼓励节点参与区块链的安全验证。例如,在比特币总量达到2100万枚之前,比特币的奖励机制有两种:新区快产生后系统奖励的比特币;每笔交易扣除的比特币(手续费)。而当比特币的总量达到2100万枚时,新产生的区块将不再生产比特币,此时的奖励主要是每笔交易所扣除的手续费。

合约层

所谓合约层主要是指各种脚本代码、算法机制及智能合约等。智能合约是运行在区块链上的一段无须干预即可自动执行的代码,EVM是智能合约运行的虚拟机,通过智能合约,无须任何中介干预即可实现资产的转移,同时也可以开发出一些有价值的去中心化应用。
以比特币为例,它是一种可编程的数字货币,合约层封装的脚本中规定了比特币的交易方式和交易过程中所涉及的各种细节。
基于智能合约可以构建区块链应用,如基于以太坊公链,开发者可以使用Solidity语言开发智能合约,构建去中心化应用;基于EOS,开发者可以使用C++语言,编写自己的智能合约。

应用层

应用层封装了区块链的各种应用场景和案例,如基于区块链的跨境支付平台等,它也是去中心化应用DAPP。一个完整的DAPP包含智能合约和Web系统,Web系统通过接口调用智能合约。
本层类似于计算机中的各种软件程序,是普通人可以真正直接使用的产品,也可以理解为B/S架构的产品中的浏览器端(Browser)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链平台架构分析 的相关文章

  • mock与spy的区别

    mock与spy的区别 1 mock 1 1 mock对象的方法不执行具体逻辑 1 2 使用方法打桩返回给定数据 1 3 mock如何执行具体逻辑 2 spy 2 1 spy对象的方法执行具体逻辑 2 2 spy如何不执行具体逻辑 1 mo
  • java的运行环境是什么_Java运行环境是什么

    Java运行环境 JRE 是一个软件 由太阳微系统所研发 JRE可以让计算机系统运行Java应用程序 JRE的内部有一个Java虚拟机 JVM 以及一些标准的类别函数库 Java 运行环境 Java Runtime Environment

随机推荐

  • 时序预测

    时序预测 Python实现NARX带外源输入的非线性自回归神经网络时间序列预测 目录 时序预测 Python实现NARX带外源输入的非线性自回归神经网络时间序列预测 效果一览 基本介绍 程序设计 参考资料 效果一览 基本介绍 Python实
  • 解决Xampp中mysql无法启动的问题

    很突然的Xampp的mysql就打不开 很疑惑 之前一直可以打开的 然后刚才我启动了一下 就突然启动不了了 我想了一下 并没有出现端口号占用问题呀 而且报错也没有说端口号占用 报错写的很是通俗 然后我查看了日志文件 发现日志文件中也没有描述
  • 【无标题】chatgpt桌面化,桌面应用的安装

    前言 关于chatgpt最近来说可算是大火 不过在我使用过程中发现没事都要上openai的官网过于麻烦 而且卡顿 于是乎就在网上寻找一些方法 发现chatgpt可以桌面化 话不多说 直接上图 1 上github找这位大佬 2 主页往下番找到
  • 测试中BUG定义、测试BUG的等级划分、Bug流程以及Bug解决优先级

    一个优秀的软件测试师不仅仅能够发现软件中的bug 还能分析出bug产生的原因 总结了一些软件测试入门必须要了解和学习的BUG基础知识 主要包括BUG定义 测试BUG的等级划分 Bug流程以及Bug解决优先级等内容 下面一起来梳理一遍这些基础
  • ISE报错NgdBuild:604解决方法

    ISE报错NgdBuild 604解决方法 在使用ISE编写FPGA代码时 从其他地方导入 v文件 运行时会报图片中的错误 解决方法 在单纯的复制黏贴 v文件并且导入到 ISE 的同时 把 ngc文件拷贝过来 如下图所示 Rerun后即可解
  • python fastapi 向页面推送视频流,网站播放python获取的rtsp视频

    代码如下 import cv2 import uvicorn from fastapi import FastAPI Response from fastapi responses import StreamingResponse 创建一个
  • ubuntu安装软件一直0%

    ubuntu安装软件一直0 下载不了东西 更新版本库也不行 可能和dns解析错误有关系 可以修改 etc resolv conf文件 我填写的是北京联通的 请自行查阅自己的 nameserver 127 0 0 53 nameserver
  • 基于SpringBoot的CSGO赛事管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 采用Vue技术开发 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse
  • win11安装gcc,g++,配置c++的编译环境

    MinGW Minimalist GNU for Windows download SourceForge net 下载并安装MinGW 可以直接鼠标点击操作 简单的很 选定gcc g 为待安装环境 然后开始安装就可以了 环境变量 右键计算
  • Java笔记-I/O流之比较器接口对象数组排序

    对象数组排序 内容介绍 1 对象数组直接调用sort 方法报错的原因 是因为没有定义比较的规则 需要自己定义 2 如何定义规则 看报错信息 ClassCastException demoCompare Person cannot be ca
  • 算法复杂度

    时间复杂度和空间复杂度 N 1个操作 O n O n O n O n N 2 1个操作 1 2 O n O n 2个单位的内存空间 O 1 常数的时间复杂度 两层循环O n 2 归并排序 T n 2 T n 2 n O n log n Ma
  • 10讲学会C语言之第四讲:循环结构

    文章目录 前言 一 求pi的近似值 二 统计整数的位数 三 判断素数 四 求阶乘和 五 循环结构编程 六 作业 前言 大家好 我是卷卷 本节课讲循环结构 for while和do while 主要包括六个部分 求pi的近似值 统计整数的位数
  • 1658 页的《Java 面试突击核心讲》在牛客网火了,完整版 PDF 开放下载!

    前言 我们都知道 在程序员的职业生涯中 有多个发展方向 不过就数据表明 近年来选择架构师方向的开发人员也越来越多 对于架构师的发展前途 我相信是已经没有争议的 但这个 概念 对于很多开发人员来说 并没有太清晰的认识 怎样才能成为架构师 是很
  • IDEA安装使用 VisualVM 及VisualVM 远程监视

    1 VisualVM是什么 按照VisualVM官网 http visualvm github io 上的介绍 VisualVM是一个集成命令行JDK工具和轻量级分析功能的可视化工具 专为开发和生产时间使用而设计 我们在jdk安装包中也可以
  • nmon的安装与使用

    author skate time 2011 08 06 nmon的安装与使用 1 下载 nmon http nmon sourceforge net pmwiki php n Site Download nmonanalyser http
  • Spring之循环依赖底层源码解析

    目录 一 循环依赖 二 解决循环依赖的思路 1 举例 AServiec依赖BService BService依赖AService 2 循环依赖的打破 三 三级缓存解析 1 三级缓存的通常叫法 2 三级缓存详情 一 循环依赖 1 循环依赖 很
  • ArcGIS Server 10.1 装配记录

    ArcGIS Server 10 1 安装记录 拿到了ArcGIS Server 10 1 的安装包 今天有时间上手安装试着用一下 记录过程如下 1 基础环境 在虚拟机下安装的 使用的是win2008 Server r2sp1系统 由于10
  • Verilog实现无源蜂鸣器发声

    要求 顺序循环发声 Do Re Mi Fa 时间间隔为0 5s 若输入为262Hz的方波 则蜂鸣器发Do的声音 以此类推 那如何向蜂鸣器输入262Hz的方波 假设系统时钟周期为50MHz 50MHz对应的一个周期为20ns 若占空比为50
  • CSS高级技巧

    声明 本人的所有博客皆为个人笔记 作为个人知识索引使用 因此在叙述上存在逻辑不通顺 跨度大等问题 希望理解 分享出来仅供大家学习翻阅 若有错误希望指出 感谢 CSS高级技巧 元素的显示与隐藏 类似网站广告 当我们点击关闭就不见了 但是我们重
  • 区块链平台架构分析

    区块链平台架构分析 数据层 网络层 账本层 共识层 合约层 应用层 一般说来 一个标准的区块链项目应该由数据层 网络层 共识层 激励层 合约层和应用层组成 每一层的具体介绍如下 数据层 数据层是区块链最底层的技术 主要的功能为数据存储 账户