当前位置: 首页 > 专利查询>东北大学专利>正文

一种Tendermint系统中基于动态分析的事务并行执行方法及装置制造方法及图纸

技术编号:39424214 阅读:7 留言:0更新日期:2023-11-19 16:11
本发明专利技术提供一种Tendermint系统中基于动态分析的事务并行执行方法及装置,涉及区块链技术领域。本发明专利技术提出:领导者节点在收到一批事务后,为每个事务标注唯一的序列号并对收到的事务进行排序,通过多版本时间戳排序算法执行事务,生成一个冲突可串行化的并发调度,并根据执行结果生成事务的读写集以构建事务依赖三元组,广播至验证节点中;验证节点在收到事务依赖三元组后,进行解析并重构事务的调度图,根据事务执行结果更新事务执行状态,确定可以并行执行的事务;若验证执行过程出现问题,诚实的验证节点会标记错误并广播该执行结果的错误,以反对这个区块进入区块链。本发明专利技术确保了事务并行执行结果的一致性和原子性,提高区块链系统的事务执行效率。高区块链系统的事务执行效率。高区块链系统的事务执行效率。

【技术实现步骤摘要】
一种Tendermint系统中基于动态分析的事务并行执行方法及装置


[0001]本专利技术涉及区块链
,尤其涉及一种
Tendermint
系统中基于动态分析的事务并行执行方法及装置


技术介绍

[0002]Tendermint
系统是一个基于共识算法的分布式账本平台,旨在提供安全

可扩展和高性能的区块链解决方案
。Tendermint
系统采用了一种称为拜占庭容错
(Byzantine Fault Tolerant,BFT)
共识算法的机制,即使有部分节点存在故障或恶意行为,该算法也能够在节点之间达成一致

这确保了在
Tendermint
系统中的交易和状态转换能够得到正确验证和确认

同时这种共识算法具有高吞吐量和快速确认的特点,能够处理大量交易并具有几乎是实时的交易最终性

[0003]Tendermint
系统通过使用一组验证节点
(validators)
来管理和维护区块链网络,这些验证节点负责提案和确认区块,确保所有节点在共识过程中达成一致


Tendermint
系统中,应用程序以独立的方式运行,通过区块链应用接口
(Application BlockChain Interface

ABCI)

Tendermint
核心引擎进行交互
。Tendermint
还提供了安全的
P2P
网络层,用于节点之间的通信和数据传输,该网络层支持加密连接和防止拜占庭故障的机制,确保数据的机密性和完整性

总体而言,
Tendermint
系统以其强大的共识算法

高性能的交易处理能力和灵活的应用程序接口,为开发人员和企业提供了构建安全

可扩展的分布式应用程序的解决方案

它在金融

供应链

数字资产等领域具有广泛的应用前景

[0004]传统的区块链系统中,每个区块中包含多笔事务,为了保证不同节点上区块事务执行结果的一致性,普遍采用串行执行的方式执行区块内事务

事务串行执行技术是区块链的重要技术之一,事务串行执行技术的核心思想是将所有的交易按照一定的顺序排列,并且在当前交易执行之前,必须等待前面的交易执行完成

具体是:首先区块链上的交易是按照时间顺序排列的,每个交易都有一个时间戳,表示这个交易发生的时间;当一个新的交易被添加到区块链中时,它会被放在当前所有交易的末尾,并且必须等待前面的交易执行完成后才能被执行;其次,区块链上的交易是有先后顺序的,每个交易都有一个唯一的交易标识符,称为交易哈希

当一个新的交易被添加到区块链中时,它的交易哈希会被记录在区块中,并且在执行该交易时,必须按照它的交易哈希顺序来执行

事务串行执行技术可以确保区块链上的交易按照一定的顺序被执行并记录,可以避免交易之间的冲突和竞争,从而保证了区块链的正确性和一致性,进而保证了交易的正确执行

但是随着区块链技术的不断发展和完善,事务串行执行技术无法充分利用多核处理器的高性能优势,很难进一步提升共识算法的效率,成为了许可链共识的性能瓶颈

[0005]区块链系统中的事务执行的很多特性接近于传统分布式数据库的事务执行,那么对于区块链事务执行的优化很大程度上可以基于传统数据库的优化理论

理论上,在区块打包执行过程中,是可以直接通过并行的方式执行区块内的事务的,但是在区块链系统中,
存在恶意节点,并且每个节点是互相独立的,收到区块的顺序也不是相同的,那么事务并行执行可能会导致交易之间的竞争和冲突,从而导致交易处理的正确性和一致性受到影响

例如,在一个交易中修改了某个数据,而在另一个交易中又修改了同一个数据,这将会导致数据的不一致性,需要采取一定的措施来保证数据的一致性

因此,在实现事务并行执行时,需要考虑如何避免竞争

冲突和一致性的问题

同时,由于交易是并行执行的,有些交易之间存在依赖关系,比如订单交易需要先于支付交易执行

如果这些交易不能按照正确的顺序执行,可能会导致交易失败,从而影响区块链系统的正确性和一致性

因此,需要考虑交易之间的依赖关系,并采取相应的措施来保证交易按照正确的顺序执行

[0006]综上所述,区块链系统在引入事务并行执行技术时,需要重点考虑交易之间的竞争和冲突

交易之间的依赖关系

交易的原子性

数据的一致性以及性能问题等


技术实现思路

[0007]针对上述现有技术的不足,本专利技术提出了一种
Tendermint
系统中基于动态分析的事务并行执行方法及装置,目的是让区块内事务并行执行并确保事务执行的一致性和原子性

[0008]为解决上述技术问题,本专利技术第一方面提出了一种
Tendermint
系统中基于动态分析的事务并行执行方法,包括:
[0009]步骤1:领导者节点获取待执行事务;
[0010]所述待执行事务为预定义的包含特定字段的字符串,领导者节点持续地处理来自客户端的事务广播请求,直到本地事务数量超过一定阈值;
[0011]步骤2:领导者节点根据待执行事务构建事务依赖三元组,并将其广播至验证节点;
[0012]所述步骤2的执行过程中包含以下数据结构:
[0013]多版本存储中的数据项
Item
:存储了一个数据版本,包含以下三个字段:
(1)string
类型的
value
字段,用于存储数据;
(2)int32
类型的
tid
字段,用于存储数据的版本号,即写入此数据的事务的序列号;
(3)int8
类型的
state
字段,用于存储数据项状态信息,共有
waiting、commit

abort
三种状态,分别表示写入此数据的事务的执行状态为执行中

已提交和已中止;
[0014]存储某个键上的多版本数据的数据列
MultiVersionLine
:包含以下三个字段:
(1)string
类型的
key
字段,用于存储多版本数据的键;
(2)int32
类型的
RTS
字段,用于存储对该键中数据进行读取的事务的最本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种
Tendermint
系统中基于动态分析的事务并行执行方法,其特征在于,包括:步骤1:领导者节点获取待执行事务;所述待执行事务为预定义的包含特定字段的字符串,领导者节点持续地处理来自客户端的事务广播请求,直到本地事务数量超过一定阈值;步骤2:领导者节点根据待执行事务构建事务依赖三元组,并将其广播至验证节点;步骤3:验证节点接收事务依赖三元组并完成验证执行,并进行区块提交
。2.
根据权利要求1所述的一种
Tendermint
系统中基于动态分析的事务并行执行方法,其特征在于,所述步骤2的执行过程中包含以下数据结构:多版本存储中的数据项
Item
:存储了一个数据版本,包含以下三个字段:
(1)string
类型的
value
字段,用于存储数据;
(2)int32
类型的
tid
字段,用于存储数据的版本号,即写入此数据的事务的序列号;
(3)int8
类型的
state
字段,用于存储数据项状态信息,共有
waiting、commit

abort
三种状态,分别表示写入此数据的事务的执行状态为执行中

已提交和已中止;存储某个键上的多版本数据的数据列
MultiVersionLine
:包含以下三个字段:
(1)string
类型的
key
字段,用于存储多版本数据的键;
(2)int32
类型的
RTS
字段,用于存储对该键中数据进行读取的事务的最大序列号;
(3)Item
数据组成的数组
values
字段,记为
[]Item
,用于存储多版本数据,字段中所有数据项根据其
tid
字段的大小从小到大排列;多版本存储
MultiVersionStore

string
类型的键到
MultiVersionLine
类型的多版本数据列的映射,记为
map[string]MultiVersionLine
;事务的依赖项
DepSet
:由
string

*Item
的映射,记为
map[string]*Item
,用于记录
string
类型的主键对应的多版本存储中的
Item
数据项的地址指针;事务执行结果
resultMsg
:包含两个字段:
(1)int32
类型的事务序列号
tid
,用于表明所执行的事务;
(2)string
类型的事务执行结果
state
,当
state
的值为
error
时,表明事务因存在错误而被中止,当
state
的值为
abort
时,表明事务因冲突中止,当
state
的值为
commit
时,表明事务成功执行并提交;事务依赖三元组
TxTuple
:用于记录事务的内容

序列号和依赖关系,包含三个字段:
(1)string
类型的事务的内容
Tx
,用于记录事务的内容;
(2)int32
类型的事务序列号
tid
,用于记录事务的序列号;
(3)int32
类型的事务最大读依赖
maxDep
,用于记录事务的依赖关系
。3.
根据权利要求2所述的一种
Tendermint
系统中基于动态分析的事务并行执行方法,其特征在于,所述步骤2包括:步骤
2.1
:初始化一个空的多版本存储,记为
S
,给每个待执行事务分配唯一的序列号,并根据序列号顺序对待执行事务进行排序,构建任务队列;步骤
2.2
:工作线程循环地从任务队列中取出待执行事务及其序列号,并行地执行事务,将事务执行结果写入多版本存储中,并根据事务执行结果生成事务的事务读集
R
和事务的事务写集
W
;步骤
2.3
:向执行结果中因冲突而中止的事务重新分配新的递增的序列号,并将该任务重新加入任务队列中,更新任务队列;步骤
2.4
:对更新后的任务队列重复执行步骤
2.2
和步骤
2.3
,得到新的任务队列;步骤
2.5
:对步骤
2.4
中更新后的任务队列中的事务进行串行执行,生成事务执行结果,
并根据事务执行结果更新事务的事务读集和事务的事务写集,完成待执行事务的执行过程;步骤
2.6
:领导者节点根据事务的事务读集和事务的事务写集构建事务的调度图,构建事务依赖三元组存储事务间的依赖关系,并根据事务依赖三元组构建事务依赖三元组集
D
;步骤
2.7
:领导者节点将事务依赖三元组集
D
打包为字节编码,并将该字节编码广播至验证节点
。4.
根据权利要求3所述的一种
Tendermint
系统中基于动态分析的事务并行执行方法,其特征在于,将所述步骤
2.2
中取出的待执行事务记为
T
且将该事务的序列号记为
id
,所述步骤
2.2
的执行过程包括以下三个阶段:
(1)
读写集生成阶段:工作线程初始化
DepSet
类型的事务读集
R
和事务写集
W
;每当事务读取键
A
时,如果
R
中存在该键,则读取
R
中属于该键的
Item
,否则,在多版本存储中寻找合适的数据项,方法为:如果映射
S[A]
不存在,则锁定
S
,并从键值数据库中读取键
A
的值
vA
,将
S[A]
设置为空的
MultiVersionLine
,然后将数据
Item{value:vA,tid:

1,state:commit}
插入
S[A]
中,将
S[A]

RTS
字段,即
S[A].RTS
置为
id
,然后释放
S
的锁;如果映射
S[A]
存在,且
S[A].RTS
小于
id
,则将
S[A].RTS
置为
id
;完成上述操作后,选择
S[A]
中版本号不大于
id
的且版本号最大的数据项进行读取,并将其加入
R
中;每当事务向键
A
写入数据
v
时,将
Item{value:v,tid:id,state:waiting}
插入
W
中;如果事务因错误中止,返回
state
字段为
error

resultMsg
消息,并结束事务执行;
(2)
冲突消解阶段:将
W
中所有
Item
插入
S
中,如果在写入某个键
A...

【专利技术属性】
技术研发人员:赵恒泰袁野王子尧要鑫赵相国
申请(专利权)人:东北大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1