账本模型

05-账本模型

1 账本模型

1.1 传统线性增长模型

传统的 MySQL 等系统采用线性增长的日志模型,通过一个 Leader 和多个 Follower 进行状态同步。这种方式有单点的带宽瓶颈问题。

alt

1.2 区块链共享账本模型

共享账本:树形增长。在去中心化网络中,可能同时选出多个合法的记账节点,导致分叉现象。通过默克尔树支持路径计算,轻节点可以查证交易是否存在于链上。P2P分散传播(Push和Pull有机结合)。

共享账本:树形增长(分支后续可能长成主干,所以分支Block也要存储)。

alt

要支持路径计算,如:Block是否在主干上

alt

2 事务解决方案

区块链采用两大流派解决双花问题:

  1. 账户模型:类似银行账户,通过版本号防止重放攻击。
  2. UTXO 模型:未花费的交易输出,类似现金支付,每个交易的输出来自之前某些交易的输入。

Xuper Chain 采用优化的 UTXO 模型,支持更广泛的数据领域,提升并发性能。

2.1 账户模型咋实现事务?

用递增的版本号检测冲突,本质串行。

alt

由于版本号冲突,这两个交易只能有一个成功。

2.2 UTXO模型咋实现事务?

通过判断交易的输入引用是否有冲突,并发性能更好。

alt

两笔交易都能成功,执行顺序还可以乱序。

案例
alt

奶奶给孙子50,让他买东西吃,然后孙子去小卖部花了0.5买了一根棒棒糖,剩下49.5,变成私房钱。小卖部收到小孩儿的0.5。

另一个小孩0.8买了两根棒棒糖,一根0.5,两根0.8,然后收到另一个小孩的那个钱,买了一根辣条0.3。然后它现在就有0.5,0.8和0.3。

然后他现在要把钱给自己的两个孙子,说你们一人八毛,一人八毛,拿去买买买,这就是一个UTFO过程。Xuper chain对ut so模型做了一些优化

3 优化

构造一个更通用的事务模型。

当前,以太坊、EOS(一个拥有特别快的速度优势以及无限的可扩展性的智能合约平台)只能串行验证区块中的智能合约,因其底层模型无法支持并行化的确定性验证。

但经典的UTXO模型虽并发性能好,只用于转账场景,能否用UTXO模型支持通用的智能合约?

  • 普通UTXO模型:一个交易花的币一定来自早先某些交易赚的币
  • 扩展UTXO模型:一个事务读取的数据一定来自早先某些交易的写入数据
alt

T2和73可并行执行、即使不同节点乱序执行,得到D的结果也一致。

4 事务引擎架构图

alt

通过客户端向这个全节点,它的一个utxo的这个引擎啊,发送一个交易,然后交易首先。它要进行一些缓存管理,然后去执行这个交易,然后做一个交易的预执行,然后假如说有冲突的话啊。怎么办?做一个冲突处理,如果说没问题的话呢,它就把它这个广播给这个就返回这个。读写即给这个客户端,

然后客户端就发起一笔交易,然后呢?交易交易如果没冲突的话,就通过这个共识算法选出一个记账节点,然后记账节点广播。广播之后,其他全节点去验证,验证没问题的话就落块。

获取更多干货内容,记得关注我哦。

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPU、MPU、MCU和SOC学习笔记

CPU CPU是Central Processing Unit的缩写计算机的运算控制核心就是CPUCPU是由运算器、控制器和寄存器及相应的总线构成众所周知的三级流水线:取址、译码、执行的对象就是CPUCPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译…

GaussDB(类似PostgreSQL)常用命令和注意事项

文章目录 前言GaussDB(类似PostgreSQL)常用命令和注意事项1. 连接到GaussDB数据库2. 查看当前数据库中的所有Schema3. 进入指定的Schema4. 查看Schema下的表、序列、视图5. 查看Schema下所有的表6. 查看表结构7. 开始事务8. 查询表字段注释9. 注意事项&a…

request和websocket

当然,可以为你详细介绍 FastAPI 中的 Request 对象。Request 对象在 FastAPI 中扮演着重要的角色,负责封装来自客户端的 HTTP 请求信息。了解 Request 对象的使用方法和属性,有助于你更高效地处理请求数据、访问请求上下文以及进行各种操作。…

深入探索Flax:一个用于构建神经网络的灵活和高效库

深入探索Flax:一个用于构建神经网络的灵活和高效库 在深度学习领域,TensorFlow 和 PyTorch 作为主流的框架,已被广泛使用。不过,Flax 作为一个较新的库,近年来得到了越来越多的关注。Flax 是一个由Google Research团队…

在1~n中、找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。:JAVA

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 在1~n中、找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。 输入描述: 输入一行,包含一个正整数n ,n在100000以内 输出描述:…

Python 自动化办公的 10 大脚本

大家好,我是你们的 Python 讲师!今天我们将讨论 10 个实用的 Python 自动化办公脚本。这些脚本可以帮助你简化日常工作,提高效率。无论是处理 Excel 文件、发送邮件,还是自动化网页操作,Python 都能派上用场。 1. 批量…

UNITY_GOF_ChainOfResponsibility

责任链模式 经理和高管可以响应采购请求或将其移交给上级。 每个位置都可以有自己的一套规则,他们可以批准这些订单。 首先有一个领导类专门负责处理这些请求之后根据权限分别对子类进行处理在调用的时候会根据处理类的权限进行处理,如果权限不足就传递给…

什么是Git

Git Git是什么?Git核心功能Git的常用命令Git原理对象存储Blob对象Tree对象 分支管理版本合并Git的工作流程Git的底层操作 Git是什么? Git是一种分布式版本控制系统,它可以帮助团队协作开发,跟踪代码变更历史,管理和维…

.net XSSFWorkbook 读取/写入 指定单元格的内容

方法如下&#xff1a; using NPOI.SS.Formula.Functions;using NPOI.SS.UserModel;using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;/// <summary>/// 读取Excel指定单元格内容/// </summa…

704. 二分查找 C++

文章目录 一、题目链接二、参考代码三、所思所悟 一、题目链接 链接: 704. 二分查找 二、参考代码 int search(const vector<int>& nums, int target) {int left 0; int right nums.size() - 1;//左闭右闭[]while (left < right){int mid (left right) / 2;…

Matlab搜索路径添加不上

发现无论是右键文件夹添加到路径&#xff0c;还是在“设置路径”中专门添加&#xff0c;我的路径始终添加不上&#xff0c;导致代码运行始终报错&#xff0c;后来将路径中的“”加号去掉后&#xff0c;就添加成功了&#xff0c;经过测试&#xff0c;路径中含有中文也可以添加成…

知乎启用AutoMQ替换Kafka,开辟成本优化与运维提效新纪元

作者&#xff1a;知乎在线架构组 王金龙 关于知乎 知乎公司&#xff0c;成立于 2010 年 8 月 10 日&#xff0c;于 2011 年 1 月 26 日正式上线&#xff0c;是中文互联网的高质量问答社区和创作者聚集的原创内容平台。 知乎起步于问答&#xff0c;而超越了问答。知乎以「生…

Canal mysql数据库同步到es

Canal与Elasticsearch集成指南 [可视化工具](https://knife.blog.csdn.net/article/details/126348055)下载Canal 1.1.5版本 (alpha-2) 请从GitHub Releases下载Canal 1.1.5版本中间版本alpha-2。仅需下载canal.deployer和canal.adapter组件。 安装Elasticsearch 确保已安装…

LeetCode41:缺失的第一个正数

原题地址&#xff1a;41. 缺失的第一个正数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入…

Python蒙特卡罗MCMC:优化Metropolis-Hastings采样策略Fisher矩阵计算参数推断应用—模拟与真实数据...

全文链接&#xff1a;https://tecdat.cn/?p38397 本文介绍了其在过去几年中的最新开发成果&#xff0c;特别阐述了两种有助于提升 Metropolis - Hastings 采样性能的新要素&#xff1a;跳跃因子的自适应算法以及逆 Fisher 矩阵的计算&#xff0c;该逆 Fisher 矩阵可用作提议密…

相机学习笔记——工业相机的基本参数

0、相机分类 图像颜色不同可以分为黑白相机和彩色相机&#xff1a;相同分辨率下&#xff0c;黑白工业相机相比彩色工业相机精度更高&#xff0c;检测图像边缘时&#xff0c;黑白工业相机成像效果更好。 芯片类型不同可以分为CCD相机和CMOS相机&#xff1a;CCD工业相机具有体积小…

SpringBoot Web 开发请求参数

SpringBoot Web 开发请求参数 简单的 web 请求: @RestController public class HelloController {@RequestMapping("sayHello")public String sayHello(){System.out.println("Hello World");return "hello world";} }获取请求参数 简单参数…

服务器如何隐藏端口才能不被扫描?

在服务器上隐藏端口以避免被扫描&#xff0c;是一种增强安全性的措施。虽然完全隐藏端口不太可能&#xff08;因为网络通信本质上需要暴露端口&#xff09;&#xff0c;但可以通过一系列技术手段尽量降低端口被扫描或探测的可能性。以下是详细的实现方法&#xff1a; 1. 更改默…

Oracle—系统包使用

文章目录 系统包dbms_redefinition 系统包 dbms_redefinition 功能介绍&#xff1a;该包体可以实现将Oracle库下的表在线改为分区结构或者重新定义&#xff1b; 说明&#xff1a;在检查表是否可以重定义和开始重定义的过程中&#xff0c;按照表是否存在主键&#xff0c;参数 o…

专业清洁艺术,还原生活本色——友嘉高效除菌洗碗机

生活中&#xff0c;每个人都渴望拥有一份洁净的生活环境。而家&#xff0c;作为我们最温馨的港湾&#xff0c;对洁净的追求更是无时无刻不在进行。每当饭后的欢声笑语过后&#xff0c;面对一堆沾满油渍、藏匿着细菌的餐具&#xff0c;我们不禁感到一丝烦忧。然而&#xff0c;有…