CN116701415A - 一种跨链事务的执行方法及相关设备 - Google Patents
一种跨链事务的执行方法及相关设备 Download PDFInfo
- Publication number
- CN116701415A CN116701415A CN202210176879.XA CN202210176879A CN116701415A CN 116701415 A CN116701415 A CN 116701415A CN 202210176879 A CN202210176879 A CN 202210176879A CN 116701415 A CN116701415 A CN 116701415A
- Authority
- CN
- China
- Prior art keywords
- transaction
- current
- target account
- data
- active
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000015654 memory Effects 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 9
- 238000003860 storage Methods 0.000 claims description 9
- 238000012549 training Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000009776 industrial production Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种跨链事务的执行方法及相关设备,应用于区域链技术应用,该执行方法包括:区块链节点接收针对于目标账户的数据查询信息。区块链节点响应数据查询信息,获取目标账户对应的当前状态数据。当前状态数据包括目标账户的当前数据状态值和当前数据状态值对应的当前事务信息。区块链节点根据当前状态数据确定目标账户的当前事务为非活跃事务。其中,跨链事务包括活跃事务和非活跃事务。区块链节点根据确定结果发送当前数据状态值。
Description
技术领域
本申请实施例涉及区块链领域,尤其涉及一种跨链事务的执行方法及相关设备。
背景技术
区块链技术是利用块链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问安全的去中心化架构。随着区块链技术和产业的发展,联盟区块链系统已经在众多行业得以应用,而联盟区块链是指仅对多个特定的组织团体开放的区块链系统。
出于对安全性、隐私性等因素的考虑,不同联盟区块链系统之间无法直接通信和交换数据,而是通过跨链技术来执行跨链事务。然而不同联盟区块链上多个事务同时进行时,账户的状态数据会在不断被更新。针对某一个账户而言,若跨链事务正在对该账户的状态数据信息进行更改并且该跨链事务未执行完,而其他账户在此刻访问该账户的状态数据时,就很容易产生逻辑回滚问题。这样将导致其他账户数据查询不准确,影响其他事务的准确性。为了避免逻辑回滚现象的发生,现有的,会采用合约上锁的方式对正在进行跨链事务的账户进行上锁,禁止其他账户访问。这样,很容易造成数据读取拥塞,并且合约上锁的流程复杂,效率极低,
因此,如何更高效的执行跨链事务,在避免逻辑回滚问题发生的同时还能提高数据读取效率,成为亟需解决的问题。
发明内容
本申请实施例提供了一种跨链事务的执行方法及相关设备,区块链节点只允许其他账户查询到在执行完跨链事务后目标账户的数据状态值,不允许跨链事务执行过程中的产生的临时数据被访问查询,从而提高数据查询准确性。
本申请实施例第一方面提供了一种跨链事务的执行方法,该执行方法包括:
区块链节点支持多项事务的并行处理。当其他账户对目标账户的状态数据进行查询时,区块链节点需要先查询目标账户的当前状态数据。然后根据该当前状态数据包括的当前事务信息来判断目标账户的当前事务是不是活跃事务。其中,活跃事务是指正在进行还未提交的事务,非活跃事务是指提交事务以及回滚事务。也就是说,若目标账户的当前事务是活跃事务,意味着区块链节点还在执行针对于目标账户的跨链事务,整个跨链事务还处于未完成状态。而目标账户的当前事务是非活跃事务时,意味着目标账户对应的跨链事务已经结束。因此,若区块链节点确定目标账户的当前事务为非活跃事务时,就需要响应其他账户对目标账户的查询请求,反馈目标账户的当前数据状态值给其他账户。
在上述实施例中,区块链节点允许其他账户,在执行针对于目标账户的跨链事务的过程中查询目标账户的状态数据。因此,区块链节点可以并行处理多项本地事务以及跨链事务,通过版本并发控制机制避免数据读取拥塞的问题发生,提高了数据读取速度以及区块链节点的事务执行速度。同时,在数据读取过程中,区块链节点需要对待读取的目标账户的当前事务进行分析,只有在目标账户的当前事务为非活跃事务时,才允许其他账户查询并获取目标账户的当前数据状态值。这样,其他账户只能获取到跨链事务完成后目标账户的数据状态值,避免获取到在执行跨链事务过程中产生目标账户的数据状态中间值,因此可以提高数据查询准确性,以保证各项事务的完整性。从而提高整个区块链节点的事务执行能力。
在一个可选的实施方式中,如果区块链节点确定目标账户的当前事务是活跃事务,则意味着跨链事务还未执行完毕,目标账户的当前数据状态值是区块链节点在跨链事务执行过程中产生的中间值,那么其他账户在此刻查询目标账户时,区块链节点就不能将目标账户的当前数据状态值提供给其他账户。此时,区块链节点需要查询目标账户的历史状态数据,寻找历史事务信息为非活跃事务的历史状态数据,确定历史状态数据包括的历史数据状态值,并将该历史数据状态值发送给其他账户。
在上述实施例中,若在执行跨链事务的过程中接收到对目标账户的查询请求时,区块链节点就需要寻找在未执行当前跨链事务时目标账户的历史状态数据,然后将历史状态数据中包括的历史数据状态值反馈给其他账户,也就是说,区块链节点需要保证其他账户查询到的数据状态值不能是一个中间值,而必须是执行完某一项针对于目标账户的跨链事务后,目标账户的数据状态值的最终结果。如果当前的跨链事务已经执行完,那么就向其他账户反馈当前数据状态值,如果当前的跨链事务未执行完,那么就向其他账户反馈上一个事务执行完后目标账户的数据状态值(历史数据状态值)。因此,可以避免其他账户获取到执行跨链事务过程中产生的中间值,提高数据查询准确性,以保证各项事务的完整性。从而提高整个区块链节点的事务执行能力。
在一个可选的实施方式中,一个跨链事务包括起始事务、继续事务、提交事务以及回滚事务。其中,提交事务是指将跨链事务中所有的操作以及操作结果进行提交,而回滚事务是指将跨链事务中所有的操作都进行回滚。这两个事务都代表这整个跨链事务的结束。因此,可以根据目标账户的当前事务信息来判断当前事务的事务类型。如果目标账户的当前事务为提交事务或者回滚事务时,那么就可以确定当前事务为非活跃事务,整个跨链事务已经结束,此时就需要向其他账户发送目标账户的当前数据状态值。
在一个可选的实施方式中,起始事务是指区块链节点开始执行针对于目标账户的跨链事务的事务,意味着跨链事务的开始。而继续事务则是在其他关联链执行事务后,继续在该区块链节点上执行的事务。起始事务和继续事务均为跨链事务未完成时的中间事务。因此,可以根据目标账户的当前事务信息来判断当前事务的事务类型。如果目标账户的当前事务为起始事务或者继续事务,那么就可以确定当前事务为活跃事务,整个跨链事务已经开始但并未结束,而因起始事务或继续事务产生的当前数据状态值为一个中间值,其他账户不能查询到该中间值,因此区块链节点需要发送目标账户的历史数据状态值。
在一个可选的实施方式中,区块链系统维护有活跃事务列表,用来记录区块链节点上正在进行的活跃事务。因此,当区块链节点开始执行针对目标账户的跨链事务时,即执行跨链事务包括的起始事务时,需要根据活跃事务列表中的内容来生成该跨链事务的事务快照,利用事务快照来对查询时的当前事务进行分析。其中,事务快照包括活跃事务的事务编号和事务编号对应的事务写集。
在上述实施例中,可以利用事务快照来判断当前事务是活跃事务还是非活跃事务。提高了当前事务的分析速度,从而加快了区块链节点进行数据查询访问的数据。
在一个可选的实施方式中,如果当前数据状态值的版本号小于事务快照中任一活跃事务对应的数据状态值的版本号,那就说明该版本的数据状态值所对应的事务已经提交完成,该数据状态值为最终的结果。那么就需要确定目标账户的当前事务为非活跃事务,然后将当前数据状态值反馈给其他事务的其他账户。
在一个可选的实施方式中,如果当前数据状态值的版本号大于事务快照中任一活跃事务对应的数据状态值的版本号,那就说明该版本的数据状态值所对应的事务还未完成提交,该数据状态值为一项事务执行过程中产生的中间值。那么就需要确定目标账户的当前事务为活跃事务,然后继续查询历史数据状态,最终将历史数据状态值反馈给其他事务的其他账户。
在一个可选的实施方式中,如果在事务快照中,既有大于当前数据状态值的版本号的数据状态值的版本号,也有小于当前数据状态值的版本号的数据状态值的版本号。那么就需要查询活跃事务列表,看活跃事务列表中是否存在目标账户的当前事务。如果存在,那么就确定所述目标账户的当前事务为活跃事务。然后区块链节点需要继续查询历史数据状态,最终将历史数据状态值反馈给其他事务的其他账户。
在一个可选的实施方式中,如果在事务快照中,既有大于当前数据状态值的版本号的数据状态值的版本号,也有小于当前数据状态值的版本号的数据状态值的版本号,那么就需要确定目标账户的当前事务是否为当前数据状态值的版本号所对应的事务。如果是,则确定目标账户的当前事务为非活跃事务,将当前数据状态值反馈给其他事务的其他账户。
在一个可选的实施方式中,区块链节点维护活跃事务列表的方法是,如果区块链节点执行一个跨链事务包括的起始事务时,就需要在活跃事务列表中添加该跨链事务包括的起始事务的事务编号。然后区块链节点执行该跨链事务包括的继续事务,并在活跃事务列表中添加跨链事务包括的继续事务的事务编号。最后区块链节点执行跨链事务包括的提交事务或回滚事务,区块链节点需要在活跃事务列表中删除该跨链事务包括的起始事务的事务编号和继续事务的事务编号。
本申请实施例第二方面提供了一种跨链事务的执行装置,该执行装置包括:
接收单元,用于接收针对于目标账户的数据查询信息。
获取单元,用于响应数据查询信息,获取目标账户对应的当前状态数据。当前状态数据包括目标账户的当前数据状态值和当前数据状态值对应的当前事务信息。
确定单元,用于根据当前状态数据确定目标账户的当前事务为非活跃事务。其中,跨链事务包括活跃事务和非活跃事务。
发送单元,用于根据确定结果发送当前数据状态值。
在一个可选的实施方式中,确定单元,还用于根据当前状态数据确定目标账户的当前事务为活跃事务。
获取单元,还用于根据确定结果,获取目标账户对应的历史状态数据。其中,历史状态数据包括目标账户的历史数据状态值和历史数据状态值对应的历史事务信息。
确定单元,还用于确定历史事务信息为非活跃事务。
发送单元,还用于根据确定结果发送历史数据状态值。
在一个可选的实施方式中,当前事务信息包括当前事务的事务类型。
确定单元,具体用于根据当前事务信息确定当前事务的事务类型为提交事务,然后确定当前事务为非活跃事务。或者根据当前事务信息确定当前事务的事务类型为回滚事务,然后确定当前事务为非活跃事务。
在一个可选的实施方式中,确定单元,具体用于根据当前事务信息确定当前事务的事务类型为起始事务,然后确定当前事务为活跃事务。或根据当前事务信息确定当前事务的事务类型为继续事务,确定当前事务为活跃事务。
在一个可选的实施方式中,区块链节点对应有活跃事务列表,所述活跃事务列表用于记录所述区块链节点正在进行的活跃事务;该执行装置还包括:
生成单元,用于在执行跨链事务的起始事务时,根据活跃事务列表中的内容,生成跨链事务对应的事务快照。其中,事务快照包括活跃事务的事务编号和事务编号对应的事务写集。
在一个可选的实施方式中,确定单元,具体用于确定当前数据状态值的版本号小于事务快照中任一活跃事务对应的数据状态值的版本号。根据确定结果确定目标账户的当前事务为非活跃事务。
在一个可选的实施方式中,确定单元,具体用于确定当前数据状态值的版本号大于事务快照中任一活跃事务对应的数据状态值的版本号。根据确定结果确定目标账户的当前事务为活跃事务。
在一个可选的实施方式中,确定单元,具体用于确定事务快照中既存在活跃事务对应的数据状态值的版本号大于当前数据状态值的版本号,也存在活跃事务对应的数据状态值的版本号小于当前数据状态值的版本号。根据确定结果和当前事务信息确定活跃事务列表中存在目标账户的当前事务。根据确定结果确定目标账户的当前事务为活跃事务。
在一个可选的实施方式中,确定单元,具体用于根据事务快照确定目标账户的当前事务为当前数据状态值的版本号所对应的事务。根据确定结果确定目标账户的当前事务为非活跃事务。
在一个可选的实施方式中,执行装置还包括处理单元。
所述处理单元,用于当执行跨链事务包括的起始事务时,在活跃事务列表中添加跨链事务包括的起始事务的事务编号;当执行跨链事务包括的继续事务时,在活跃事务列表中添加跨链事务包括的继续事务的事务编号;当执行跨链事务包括的提交事务或回滚事务时,在活跃事务列表中删除跨链事务包括的起始事务的事务编号和跨链事务包括的继续事务的事务编号。
本申请实施例第三方面提供了一种服务器,可以包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述第一方面所述的跨链事务的执行方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述程序在计算机上运行时,使得计算机执行上述第一方面所述的跨链事务的执行方法。
在上述实施例中,区块链节点允许其他账户,在执行针对于目标账户的跨链事务的过程中查询目标账户的状态数据。因此,区块链节点可以并行处理多项本地事务以及跨链事务,通过并发版本控制机制避免数据读取拥塞的问题发生,提高了数据读取速度以及区块链节点的事务执行速度。同时,在数据读取过程中,区块链节点需要对待读取的目标账户的当前事务进行分析,只有在目标账户的当前事务为非活跃事务时,才允许其他账户查询并获取目标账户的当前数据状态值。这样,其他账户只能获取到跨链事务完成后目标账户的数据状态值,避免获取到在执行跨链事务过程中产生目标账户的数据状态中间值,因此可以提高数据查询准确性,以保证各项事务的完整性。从而提高整个区块链节点的事务执行能力。
附图说明
图1为本申请实施例提供的一种区块链的系统架构图;
图2为本申请实施例提供的一个跨链事务的结构示意图;
图3为本申请实施例提供的一个默克尔有向无环图的结构示意图;
图4为本申请实施例提供的一种跨链事务的执行方法的流程示意图;
图5为本申请实施例提供的一种区块链信息的读取方法的流程示意图;
图6为本申请实施例提供的一种区块链信息的写方法的流程示意图;
图7为本申请实施例提供的两笔同一区块链上进行的跨链事务的流程示意图;
图8为本申请实施例提供的一种跨链事务的执行装置的结构示意图;
图9为本申请实施例提供的一种服务器的结构示意图。
具体实施方式
本申请实施例提供了一种跨链事务的执行方法及相关设备,区块链节点只允许其他账户查询到在执行完跨链事务后目标账户的数据状态值,不允许跨链事务执行过程中的产生的临时数据被访问查询,从而提高数据查询准确性。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
随着区块链技术和产业的发展,联盟区块链系统已经在众多行业得以应用,包括金融、政务、能源、工业生产、医疗、物流等领域。然而,处于对安全性和隐私性等方面的考虑,各个行业形成的众多区块链之间无法直接通信和交换数据,导致数据孤岛的问题。为了打通不同区块链系统之间的信息隔阂,跨链技术应运而生。其中,跨链技术是指一种解决多个不同区块链上数字资产以及功能状态相互传递、转移以及交换的协议,用来执行多条区块链之间的关联事务。现有的跨链技术包括公证人机制、侧链/中继技术、哈希锁定等。这些跨链技术使得多个区块链相互通信、共同执行关联事务成为可能。随着联盟区块链业务的增加与联盟规模的增大,对跨链技术的性能有了更大的要求。因此,进一步解决在跨链之间安全且高性能的并发执行大规模事务请求成为跨链技术亟待解决的问题。
由于联盟区块链系统通常不直接支持跨链操作,目前常见的跨链事务操作管理方法包括以下两种:
1、逻辑回滚:逻辑回滚是指在一个跨链事务中,每一个跨链互操作都设置相对应的回滚操作,及每一个跨链操作都对应一个逆操作。例如,在一个跨链事务中,区块链A需要执行将目标账户的数据状态值加3的操作,那么该操作的回滚操作为将目标账户的数据状态值减3。当区块链A和其他区块链共同执行该跨链事务时,如果跨链事务执行失败,那么就需要执行回滚操作,以恢复目标账户的原数据状态值。
2、合约上锁:在执行跨链事务时,跨链双方需要根据智能合约中事先约定好的范式将跨链交易相关数据以新增锁账户上链的形式上锁,一个跨链事务的所有交易数据对应一个锁账户。其它交易在对跨链事务中的交易数据进行操作时,需先访问交易数据对应锁账户状态,若状态为上锁则无法读取或修改该交易数据。直到请求上锁的跨链交易事务执行完成后,才会在锁账户中释放锁,相关的数据才可被使用。
在上述两种跨链事务操作管理方法中,逻辑回滚方案是基于智能合约实现的。而逻辑回滚方案并没有对跨链互操作中的相关数据加锁,那么在跨链事务未完成、仍执行跨链互操作的期间,其产生的中间数据可能会被其他事务访问,从而造成数据脏读或逻辑回滚失败等,无法保证各项事务完整性。举个例子,在一笔发生在区块链系统A和区块链系统B的跨链事务(跨链交易)中,区块链系统A上的目标账户首先扣除了转账款项,而区块链系统B上执行增加对应账户款项的操作。但如果区块链系统B上的操作失败后,区块链系统A就需要执行回滚操作,将扣除的转账款项重新加回目标账户。但是,如果区块链系统A同时存在另一个事务,是根据目标账户的存款数额来判断是否给账户发放补贴。如果该事务在区块链系统A扣除目标账户的款项后执行,目标账户收到了补贴,但如果区块链系统B的交易执行失败了,区块链系统A又执行了交易的回滚,将款项加回到目标账户上。那么则说明目标账户通过逻辑回滚的漏洞骗取到了补贴。
而合约上锁方案虽可以避免逻辑回滚的问题,但同样也是依赖于智能合约的实现。需要每个区块链用户自行实现合约锁以保证完整性。这样,将加大区块链用户的合约编写的工作量,不仅效率低且适配性差。同时,其它交易在访问目标账户数据时,也需要使用该跨链交易访问数据时相同的读写方法,以预先访问一致范式的锁账户状态。否则其他交易可直接访问账本或访问不同范式的锁账户状态,使得合约上锁无效。但是现有的联盟区块链系统通常不提供上锁接口,跨链事务的完整性完全依赖于合约锁的实现,所以在跨链事务中任意一个链的合约锁的实现失误就会破坏整个跨链事务的完整性。
因此如何更准确的访问账户的状态数据,更高效的避免逻辑回滚问题成为跨链事务中亟需解决的问题。本申请实施例利用多事务并发控制的技术,无需合约上锁就能避免逻辑回滚所带来的问题,进一步提高区块链中数据访问的准确性和各项事务的完整性。
本申请实施例提供了一种新的跨链事务的执行方法,区块链节点在执行跨链事务时,只允许其他账户其他账户查询到在执行完跨链事务后目标账户的数据状态值,不允许跨链事务执行过程中的产生的临时数据被访问查询,从而提高数据查询准确性。
在介绍本申请实施例的方法实施例之前,先对本申请实施例的系统架构进行简单介绍,图1为本申请实施例提供的一种区块链的系统架构图,如图1所示:
执行跨链事务时所需的组件主要包含以下四个部分,分别为默克尔有向无环图、链代码、事务快照以及当前活跃事务列表。
(一)当前活跃事务列表是区块链系统维护的一个记录当前活跃事务的列表。其中,活跃事务是指正在执行且尚未成功提交的事务。利用当前活跃事务列表可以获知区块链系统正在执行的各种事务,然后就可以根据各事务的执行情况来觉得如果读取各账户的数据状态值,避免数据读取错误的问题发生。而事务快照,则是在每一个跨链事务开始执行时,根据当时的活跃事务列表的内容来生成的一个快照,该快照用来反应执行跨链事务之前,各账户的状态数据,这样,在跨链事务开始之后,就可以根据快照中的内容判断是否读到了某一账户的脏数据(中间数据),以便区块链系统为查询请求进行相关版本的数据匹配。
结合上述对活跃事务列表的介绍,下面对跨链事务中包括的多个基本事务进行简单的介绍。如图2所示,一个跨链事务可以包括起始事务BeginTx、继续事务ContinueTx、提交事务CommitTx或回滚事务RollbackTx。
其中,起始事务BeginTx是指在各区块链上开始第一笔事务。继续事务ContinueTx是指在关联链执行相关操作后,继续在一区块链上执行的事务。提交事务CommitTx是指将一笔跨链事务的所有操作提交的事务。而回滚事务RollbackTx是指将一笔跨链事务的所有操作回滚的事务。
如图2所示,跨链事务由关联链A和关联链B共同执行,首先,关联链A执行跨链事务中需要由关联链A执行的起始事务。然后关联链A在T0时刻执行完起始事务,于此同时,关联链B执行跨链事务中需要由关联链B执行的起始事务。然后待关联链B执行完起始事务后,再由关联链A执行其他的继续事务,然后在T2时刻,关联链B根据关联链A的执行结果在T2时刻执行继续事务。待执行完毕后,在T3时刻执行提交事务,整个跨链事务在关联链A和关联链B的相互配合下执行完毕。
(二)链代码虚拟机,即区块链系统中的智能合约,是用户根据应用需求逻辑所编写的代码。链代码在编写过程中,可以使用世界状态数据库提供的数据接口进行数据操作。如一个转账应用中,链代码可以使用数据读取接口从世界状态数据库中读取两个账户的余额,判断余额是否充分,然后使用数据写入操作将转账后的账户余额写入到世界状态数据库中。
(三)默克尔有向无环图:
默克尔有向无环图由默克尔树改良而来的,其组成为世界状态数据(当前状态数据)和历史状态数据。世界状态数据是联盟区块链系统中的数据最新状态数据库(“最新”指已提交事务的最新版本),其中,世界状态数据库向链代码提供的数据操作接口包括:数据读取,数据写入以及数据查询。在本申请实施例中,世界状态数据库还提供了用于数据上锁及数据解锁的接口。而历史状态数据则存储在区块文件中,联盟区块链提供了历史状态数据库存储历史状态索引,从而支持对历史状态数据的快速查询。默克尔有向无环图作为一种数据存储结构,支持对历史版本的历史状态数据的快速回溯。
图3为本申请实施例提供的一个默克尔有向无环图的结构示意图。如图3所示,区块链中每个区块包含一棵默克尔树,用于存储区块链中各账户的历史状态数据。其每个叶子节点有一个指向该状态的前置状态的指针,从而支持对历史状态数据的快速读取以及事务中的状态回滚。
如图3所示,默克尔树中包括叶子节点和中间节点。每个叶子节点包含了其所管理的一个账户的状态数据以及指向该状态数据的前置状态数据的指针。其中,叶子节点可以表示为其中,ki为该叶子节点对应的状态键值,用于识别目标账户。vj为该状态数据的版本号,而tn为将该状态更新为当前值的事务编号,其值为
默克尔树中间节点的值为
kM=hash(Li,f(Li)=M)。若利用默克尔有向无环图存储各状态数据,可以在区块链上实现多事务的多版本并发控制。
下面对本申请实施例所提供的跨链事务的执行方法进行详细的介绍:图4为本申请实施例提供的一种跨链事务的执行方法的流程示意图,如图4所示,该执行方法包括:
401、区块链节点接收针对于目标账户的数据查询信息。
区块链节点上可以支持多个事务的并发执行,当其他事务执行过程中,需要对目标庄户的状态数据进行查询时,区块链节点需要响应该数据查询信息。
402、区块链节点响应数据查询信息,获取目标账户对应的当前状态数据。
首先,区块链节点先要获取目标账户在当前时刻对应的当前状态数据,其中,当前状态数据包括目标账户的当前数据状态值和当前数据状态值对应的当前事务信息。其中,当前数据状态值用于指示目标账户的具体数值。而当前事务信息则用来指示将目标账户的原数值更改为当前数据状态值的具体事务。示例性的,A账户的当前数据状态值可以为交易金额,而当前事务信息可以指将交易金额从10000更改为30000的转账事务。可以理解的,每一个目标账户对应有多个版本的状态数据,每一个版本的状态数据均用来指示,在完成一项事务后目标账户的状态更新情况。区块链节点在响应数据查询信息时,不仅要获取当前数据状态值,更需要获取当前数据状态值对应的当前事务信息,通过分析当前事务信息,来决定是否允许其他事务查询和访问当前数据状态值。
403、区块链节点根据当前事务信息判断目标账户的当前事务的事务类型。
区块链节点需要根据当前事务信息,对针对于目标账户的当前事务进行分析,通过判断当前事务是不是活跃事务,来确定当前数据状态值是否是一个中间值。其中,活跃事务是指正在进行还未提交的事务,非活跃事务是指提交事务以及回滚事务。也就是说,若目标账户的当前事务是活跃事务,意味着区块链节点还在执行针对于目标账户的跨链事务,整个跨链事务还处于未完成状态。而目标账户的当前事务是非活跃事务时,意味着目标账户对应的跨链事务已经结束。而目标账户的当前事务如果是活跃事务时,其对应的当前数据状态值就为一个中间值,不能允许其他事务查询到当前数据状态值。而目标账户的当前事务如果是非活跃事务时,其对应的当前数据状态值就为一个最终确定的结果,那么就需要允许其他事务查询该当前数据状态,获得最新版本的当前数据状态值。
404、区块链节点确定目标账户的当前事务为非活跃事务。
若上述内容所示,如果当前事务为跨链事务中的提交事务或者是回滚事务时,则说明跨链事务已经完成,当前事务为非活跃事务。
405、区块链节点根据确定结果发送当前数据状态值。
可以理解的,当目标账户的当前事务为非活跃事务时,意味着目标账户的交易事务真实发生,那么目标账户的数据状态就需要更新,当别的区块链节点对其进行访问时,就需要将最新版本的当前数据状态值进行反馈。
406、区块链节点确定目标账户的当前事务为活跃事务。
若上述内容所示,如果当前事务为跨链事务中的起始事务或者是继续事务时,则说明跨链事务还在执行,并未完成,那么当前事务为活跃事务。
407、区块链节点根据确定结果,获取目标账户对应的历史状态数据。
可以理解的,当目标账户的当前事务为活跃事务时,意味着目标账户的交易事务还未完成,那么目标账户的当前数据状态只是一个尚未完成的中间值。那么别的区块链节点对其进行访问时,就需要将历史版本的历史数据状态值进行反馈。并且该历史数据状态值对应的历史事务也应该是非活跃事务。
408、区块链节点发送历史数据状态值。
在上述实施例中,区块链节点允许其他账户,在执行针对于目标账户的跨链事务的过程中查询目标账户的状态数据。因此,区块链节点可以并行处理多项本地事务以及跨链事务,通过并发版本控制机制避免数据读取拥塞的问题发生,提高了数据读取速度以及区块链节点的事务执行速度。同时,在数据读取过程中,区块链节点需要对待读取的目标账户的当前事务进行分析,只有在目标账户的当前事务为非活跃事务时,才允许其他账户查询并获取目标账户的当前数据状态值。这样,其他账户只能获取到跨链事务完成后目标账户的数据状态值,避免获取到在执行跨链事务过程中产生目标账户的数据状态中间值,因此可以提高数据查询准确性,以保证各项事务的完整性。从而提高整个区块链节点的事务执行能力。
基于上述实施例的描述,图5提供了一种区块链信息的读取方法的流程示意图。在介绍该读取方法之前,先对当前事务列表和事务快照进行简单的介绍:
当前活跃事务列表是区块链系统维护的一个记录当前活跃事务的列表。其中,活跃事务是指正在执行且尚未成功提交的事务。利用当前活跃事务列表可以获知区块链系统正在执行的各种事务,然后就可以根据各事务的执行情况来觉得如果读取各账户的数据状态值,避免数据读取错误的问题发生。而事务快照,则是在每一个跨链事务开始执行时,根据当时的活跃事务列表的内容来生成的一个快照,该快照用来反应执行跨链事务之前,各账户的状态数据,这样,在跨链事务开始之后,就可以根据快照中的内容判断是否读到了某一账户的脏数据(中间数据),以便区块链系统为查询请求进行相关版本的数据匹配。
因此,在读状态方法中,首先需要读取当前状态数据及其对应的版本号。然后判断该当前状态数据的版本号是否大于活跃列表中目标账户的版本号最大值,若大于,说明这个当前状态数据在该事务快照生成后被其它事务更新过。此时的当前状态数据对其他事务而言应是不可见的。由此,将状态数据退回至上一个版本的历史状态数据。直到历史状态数据的版本号小于活跃事务列表的最大版本号。其次,还需要判断当前状态数据的版本号是否小于活跃事务列表中目标账户的版本号最小值,若小于,则说明更新该状态的事务已完成,当前状态数据应对所有事务可见,需要将该当前数据状态值返回。若当前状态数据的版本号介于活跃列表事务中目标账户对应的版本号的最小值与最大值之间,就继续判断更新当前状态数据的当前事务是否为当前事务。若是,允许当前状态数据可见,将当前数据状态值返回;若不是,继续判断更新当前状态数据的当前事务是否在活跃列表中。如果在活跃列表中,说明当前数据状态值更新后尚未被提交,此时的当前状态数据对其他事务均不可见,需将上一个版本的历史状态数据返回,直到当前数据状态值更新已经完成提交。如果不在活跃列表中,说明更新当前状态数据的事务已经提交完成,此时的当前状态数据对所有事务可见,将该版本的当前数据状态值返回。
而图6提供了一种区块链信息的写方法的流程示意图,如图6所示,在写方法中,首先读取状态及其版本号,若该状态不存在,直接创建新的状态对象,含更新的值及版本号。若该状态存在,则判断更新该状态最新版本的事务是否已提交。该事务如果尚未提交,则该状态不可更新。如果已提交,说明该状态可被更新,那么就需要创建新的状态对象,包含更新的值及指向当前状态对象的指针,并更新状态。
最后,对于一笔跨链事务来说,各阶段事务方法的具体操作如下:
1、起始事务BeginTx:在执行后,根据该事务所在的区块及位置,生成该跨链事务的编号,将该编号更新到当前活跃事务列表中,生成该事务对应的快照并存储在事务上下文中。
2、继续事务ContinueTx:根据上一个在该链上执行的链内事务id,继承该跨链事务的编号及快照,继续进行该跨链事务操作。
3、提交事务CommitTx:根据上一个在该链上执行的链内事务id,继承该跨链事务的编号及快照,并将该跨链事务相关的状态全部提交。具体操作为将该事务从系统活跃事务列表中移除,则该事务更改的状态可以被其他事务读取。
4.回滚事务RollbackTx:根据上一个在该链上执行的链内事务id,继承该跨链事务的编号及快照,并将该跨链事务相关的状态全部回滚。具体操作为从快照中读取该事物的写集,获取写集中所有状态被该事务更改前的版本,并使用该版本更新状态。
下面结合一个具体的例子对本申请实施例的有益效果进行介绍:如图7所示,为两笔同一区块链上进行的跨链事务。其中CrossTx_1对键值B进行一次写状态操作,再对A进行一次读状态操作;CrossTx_2对键值A进行一次写状态操作。CrossTx_1先于CrossTx_2开始。同时,涉及键值A的相关事务有CrossTx_1(如图所示),Txi,…,Txj,涉及键值B的相关事务有CrossTx_2(如图所示),Txm,…,Txn。
在合约锁方案中,虽然CrossTx_1先于CrossTx_2开始,但由于CrossTx_2先行持有对键值A的合约锁,从而CrossTx_1无法完成对键值A的读状态操作直到t3时刻CrossTx_2提交。最终CrossTx_1在CrossTx_2提交后完成了对键值A的读状态操作,于t5时刻提交。由于CrossTx_1对键值B进行了写状态操作,持有对键值B的合约锁,故直到t5事务CrossTx_1提交释放锁之前,事务Txm,…,Txn均有可能因无法访问键值B而阻塞,并对这些事务其它的访问数据相关的其他事务同样造成事务阻塞。
因此,本发明多版本并发控制方案中,CrossTx_1可以无阻塞读取状态A,且不会对其他数据相关事务造成阻塞。大大提高了区块链节点中数据读取速度已经区块链节点处理事务的能力。
图8为本申请实施例提供的一种跨链事务的执行装置的结构示意图,如图8所示,该执行装置包括:
接收单元801,用于接收针对于目标账户的数据查询信息。
获取单元802,用于响应数据查询信息,获取目标账户对应的当前状态数据。当前状态数据包括目标账户的当前数据状态值和当前数据状态值对应的当前事务信息。
确定单元803,用于根据当前状态数据确定目标账户的当前事务为非活跃事务。其中,跨链事务包括活跃事务和非活跃事务。
发送单元804,用于根据确定结果发送当前数据状态值。
在一个可选的实施方式中,确定单元,还用于根据当前状态数据确定目标账户的当前事务为活跃事务。
获取单元802,还用于根据确定结果,获取目标账户对应的历史状态数据。其中,历史状态数据包括目标账户的历史数据状态值和历史数据状态值对应的历史事务信息。
确定单元803,还用于确定历史事务信息为非活跃事务。
发送单元804,还用于根据确定结果发送历史数据状态值。
在一个可选的实施方式中,当前事务信息包括当前事务的事务类型。
确定单元803,具体用于根据当前事务信息确定当前事务的事务类型为提交事务,然后确定当前事务为非活跃事务。或者根据当前事务信息确定当前事务的事务类型为回滚事务,然后确定当前事务为非活跃事务。
在一个可选的实施方式中,确定单元803,具体用于根据当前事务信息确定当前事务的事务类型为起始事务,然后确定当前事务为活跃事务。或根据当前事务信息确定当前事务的事务类型为继续事务,确定当前事务为活跃事务。
在一个可选的实施方式中,区块链节点对应有活跃事务列表,所述活跃事务列表用于记录所述区块链节点正在进行的活跃事务;该执行装置还包括:
生成单元805,用于在执行跨链事务的起始事务时,根据活跃事务列表中的内容,生成跨链事务对应的事务快照。其中,事务快照包括活跃事务的事务编号和事务编号对应的事务写集。
在一个可选的实施方式中,确定单元803,具体用于确定当前数据状态值的版本号小于事务快照中任一活跃事务对应的数据状态值的版本号。根据确定结果确定目标账户的当前事务为非活跃事务。
在一个可选的实施方式中,确定单元803,具体用于确定当前数据状态值的版本号大于事务快照中任一活跃事务对应的数据状态值的版本号。根据确定结果确定目标账户的当前事务为活跃事务。
在一个可选的实施方式中,确定单元803,具体用于确定事务快照中既存在活跃事务对应的数据状态值的版本号大于当前数据状态值的版本号,也存在活跃事务对应的数据状态值的版本号小于当前数据状态值的版本号。根据确定结果和当前事务信息确定活跃事务列表中存在目标账户的当前事务。根据确定结果确定目标账户的当前事务为活跃事务。
在一个可选的实施方式中,确定单元803,具体用于根据事务快照确定目标账户的当前事务为当前数据状态值的版本号所对应的事务。根据确定结果确定目标账户的当前事务为非活跃事务。
在一个可选的实施方式中,执行装置还包括处理单元806。
处理单元806,用于当执行跨链事务包括的起始事务时,在活跃事务列表中添加跨链事务包括的起始事务的事务编号;当执行跨链事务包括的继续事务时,在活跃事务列表中添加跨链事务包括的继续事务的事务编号;当执行跨链事务包括的提交事务或回滚事务时,在活跃事务列表中删除跨链事务包括的起始事务的事务编号和跨链事务包括的继续事务的事务编号。
图9为本申请实施例提供的一种服务器的结构示意图,如图9所示,该服务器包括:处理器901,存储器902,通信接口903。
处理器901、存储器902、通信接口903通过总线相互连接;总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器902可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器902还可以包括上述种类的存储器的组合。
处理器901可以是中央处理器(central processing unit,CPU),网络处理器(英文:network processor,NP)或者CPU和NP的组合。处理器901还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信接口903可以为有线通信接口,无线通信接口或其组合,其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为WLAN接口,蜂窝网络通信接口或其组合等。
可选地,存储器902还可以用于存储程序指令,处理器901调用该存储器902中存储的程序指令,可以执行图4所示方法实施例中区块链节点所执行的步骤,具体不再赘述。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有实现本申请实施例提供的一种跨链事务的执行方法中区块链节点的计算机程序指令。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现上述图4所示一种跨链事务的执行方法中的流程。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (22)
1.一种跨链事务的执行方法,其特征在于,所述执行方法包括:
区块链节点接收针对于目标账户的数据查询信息;
所述区块链节点响应所述数据查询信息,获取所述目标账户对应的当前状态数据;所述当前状态数据包括所述目标账户的当前数据状态值和所述当前数据状态值对应的当前事务信息;
所述区块链节点根据所述当前状态数据确定所述目标账户的当前事务为非活跃事务;其中,所述跨链事务包括活跃事务和所述非活跃事务;
所述区块链节点根据确定结果发送所述当前数据状态值。
2.根据权利要求1所述的执行方法,其特征在于,所述方法还包括:
所述区块链节点根据所述当前状态数据确定所述目标账户的当前事务为活跃事务;
所述区块链节点根据确定结果,获取所述目标账户对应的历史状态数据;其中,所述历史状态数据包括所述目标账户的历史数据状态值和所述历史数据状态值对应的历史事务信息;
所述区块链节点确定所述历史事务信息为非活跃事务;
所述区块链节点根据确定结果发送所述历史数据状态值。
3.根据权利要求1至2任一项所述的执行方法,其特征在于,所述当前事务信息包括所述当前事务的事务类型;所述区块链节点根据所述当前事务信息确定所述目标账户的当前事务为非活跃事务,包括:
所述区块链节点根据所述当前事务信息确定所述当前事务的事务类型为提交事务,所述区块链节点确定所述当前事务为非活跃事务;或
所述区块链节点根据所述当前事务信息确定所述当前事务的事务类型为回滚事务,所述区块链节点确定所述当前事务为非活跃事务。
4.根据权利要求3所述的执行方法,其特征在于,所述区块链节点根据所述当前事务信息确定所述目标账户的当前事务为活跃事务,包括:
所述区块链节点根据所述当前事务信息确定所述当前事务的事务类型为起始事务,所述区块链节点确定所述当前事务为活跃事务;或
所述区块链节点根据所述当前事务信息确定所述当前事务的事务类型为继续事务,所述区块链节点确定所述当前事务为活跃事务。
5.根据权利要求1至2任一项所述的执行方法,其特征在于,所述区块链节点对应有活跃事务列表,所述活跃事务列表用于记录所述区块链节点正在进行的活跃事务;所述方法还包括:
在所述区块链节点执行所述跨链事务的起始事务时,所述区块链节点根据所述活跃事务列表中的内容,生成所述跨链事务对应的事务快照;其中,所述事务快照包括活跃事务的事务编号和所述事务编号对应的事务写集。
6.根据权利要求5所述的执行方法,其特征在于,所述区块链节点根据所述当前状态数据确定所述目标账户的当前事务为非活跃事务,包括:
所述区块链节点确定所述当前数据状态值的版本号小于所述事务快照中任一活跃事务对应的数据状态值的版本号;
所述区块链节点根据确定结果确定所述目标账户的当前事务为所述非活跃事务。
7.根据权利要求5所述的执行方法,其特征在于,所述区块链节点根据所述当前状态数据确定所述目标账户的当前事务为活跃事务,包括:
所述区块链节点确定所述当前数据状态值的版本号大于所述事务快照中任一活跃事务对应的数据状态值的版本号;
所述区块链节点根据确定结果确定所述目标账户的当前事务为所述活跃事务。
8.根据权利要求6至7任一项所述的执行方法,其特征在于,所述区块链节点根据所述当前状态数据确定所述目标账户的当前事务为活跃事务,包括:
所述区块链节点确定所述事务快照中既存在活跃事务对应的数据状态值的版本号大于所述当前数据状态值的版本号,也存在活跃事务对应的数据状态值的版本号小于所述当前数据状态值的版本号;
所述区块链节点根据确定结果和所述当前事务信息确定所述活跃事务列表中存在所述目标账户的当前事务;
所述区块链节点根据确定结果确定所述目标账户的当前事务为所述活跃事务。
9.根据权利要求8所述的执行方法,其特征在于,所述区块链节点根据所述当前状态数据确定所述目标账户的当前事务为非活跃事务,包括:
所述区块链节点根据所述事务快照确定所述目标账户的当前事务为所述当前数据状态值的版本号所对应的事务;
所述区块链节点根据确定结果确定所述目标账户的当前事务为所述非活跃事务。
10.根据权利要求5至9任一项所述的执行方法,其特征在于,所述执行方法还包括:
当所述区块链节点执行所述跨链事务包括的起始事务时,所述区块链节点在活跃事务列表中添加所述跨链事务包括的起始事务的事务编号;
当所述区块链节点执行所述跨链事务包括的继续事务时,所述区块链节点在所述活跃事务列表中添加所述跨链事务包括的继续事务的事务编号;
当所述区块链节点执行所述跨链事务包括的提交事务或回滚事务时,所述区块链节点在所述活跃事务列表中删除所述跨链事务包括的起始事务的事务编号和所述跨链事务包括的继续事务的事务编号。
11.一种跨链事务的执行装置,其特征在于,所述执行装置包括:
接收单元,用于接收针对于目标账户的数据查询信息;
获取单元,用于响应所述数据查询信息,获取所述目标账户对应的当前状态数据;所述当前状态数据包括所述目标账户的当前数据状态值和所述当前数据状态值对应的当前事务信息;
确定单元,用于根据所述当前状态数据确定所述目标账户的当前事务为非活跃事务;其中,所述跨链事务包括活跃事务和所述非活跃事务;
发送单元,用于根据确定结果发送所述当前数据状态值。
12.根据权利要求11所述的执行装置,其特征在于,
所述确定单元,还用于根据所述当前状态数据确定所述目标账户的当前事务为活跃事务;
所述获取单元,还用于根据确定结果,获取所述目标账户对应的历史状态数据;其中,所述历史状态数据包括所述目标账户的历史数据状态值和所述历史数据状态值对应的历史事务信息;
所述确定单元,还用于确定所述历史事务信息为非活跃事务;
所述发送单元,还用于根据确定结果发送所述历史数据状态值。
13.根据权利要求11至12任一项所述的执行装置,其特征在于,所述当前事务信息包括所述当前事务的事务类型;
所述确定单元,具体用于根据所述当前事务信息确定所述当前事务的事务类型为提交事务,确定所述当前事务为非活跃事务;或
具体用于根据所述当前事务信息确定所述当前事务的事务类型为回滚事务,确定所述当前事务为非活跃事务。
14.根据权利要求13所述的执行装置,其特征在于,
所述确定单元,具体用于根据所述当前事务信息确定所述当前事务的事务类型为起始事务,确定所述当前事务为活跃事务;或
具体用于根据所述当前事务信息确定所述当前事务的事务类型为继续事务,确定所述当前事务为活跃事务。
15.根据权利要求11至12任一项所述的执行装置,其特征在于,所述区块链节点对应有活跃事务列表,所述活跃事务列表用于记录所述区块链节点正在进行的活跃事务;所述执行装置还包括:
生成单元,用于在执行所述跨链事务的起始事务时,根据所述活跃事务列表中的内容,生成所述跨链事务对应的事务快照;其中,所述事务快照包括活跃事务的事务编号和所述事务编号对应的事务写集。
16.根据权利要求15所述的执行装置,其特征在于,
所述确定单元,具体用于确定所述当前数据状态值的版本号小于所述事务快照中任一活跃事务对应的数据状态值的版本号;根据确定结果确定所述目标账户的当前事务为所述非活跃事务。
17.根据权利要求15所述的执行装置,其特征在于,
所述确定单元,具体用于确定所述当前数据状态值的版本号大于所述事务快照中任一活跃事务对应的数据状态值的版本号;根据确定结果确定所述目标账户的当前事务为所述活跃事务。
18.根据权利要求16至17任一项所述的执行装置,其特征在于,
所述确定单元,具体用于确定所述事务快照中既存在活跃事务对应的数据状态值的版本号大于所述当前数据状态值的版本号,也存在活跃事务对应的数据状态值的版本号小于所述当前数据状态值的版本号;根据确定结果和所述当前事务信息确定所述活跃事务列表中存在所述目标账户的当前事务;根据确定结果确定所述目标账户的当前事务为所述活跃事务。
19.根据权利要求18所述的执行装置,其特征在于,
所述确定单元,具体用于根据所述事务快照确定所述目标账户的当前事务为所述当前数据状态值的版本号所对应的事务;根据确定结果确定所述目标账户的当前事务为所述非活跃事务。
20.根据权利要求15至19任一项所述的执行装置,其特征在于,所述执行装置还包括处理单元;
所述处理单元,用于当执行所述跨链事务包括的起始事务时,在所述活跃事务列表中添加所述跨链事务包括的起始事务的事务编号;当执行所述跨链事务包括的继续事务时,在所述活跃事务列表中添加所述跨链事务包括的继续事务的事务编号;当执行所述跨链事务包括的提交事务或回滚事务时,在所述活跃事务列表中删除所述跨链事务包括的起始事务的事务编号和所述跨链事务包括的继续事务的事务编号。
21.一种服务器,其特征在于,包括处理器和存储器,所述处理器与所述存储器耦合,
所述存储器,用于存储程序;
所述处理器,用于执行所述存储器中的程序,使得所述训练设备执行如权利要求1至10中任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,包括程序,当所述程序在计算机上运行时,使得计算机执行如权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210176879.XA CN116701415A (zh) | 2022-02-24 | 2022-02-24 | 一种跨链事务的执行方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210176879.XA CN116701415A (zh) | 2022-02-24 | 2022-02-24 | 一种跨链事务的执行方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116701415A true CN116701415A (zh) | 2023-09-05 |
Family
ID=87839758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210176879.XA Pending CN116701415A (zh) | 2022-02-24 | 2022-02-24 | 一种跨链事务的执行方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116701415A (zh) |
-
2022
- 2022-02-24 CN CN202210176879.XA patent/CN116701415A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11397709B2 (en) | Automated configuration of log-coordinated storage groups | |
US11860900B2 (en) | Log-based distributed transaction management | |
US10296606B2 (en) | Stateless datastore—independent transactions | |
CN108804112B (zh) | 一种区块链落账处理方法及系统 | |
US10303795B2 (en) | Read descriptors at heterogeneous storage systems | |
US10373247B2 (en) | Lifecycle transitions in log-coordinated data stores | |
US9990391B1 (en) | Transactional messages in journal-based storage systems | |
US11429675B2 (en) | Systems and methods for managing transactional operation | |
CN109300036B (zh) | 区块链网络的分叉回归方法和装置 | |
US20130110781A1 (en) | Server replication and transaction commitment | |
EP3195117B1 (en) | Automated configuration of log-coordinated storage groups | |
US10108658B1 (en) | Deferred assignments in journal-based storage systems | |
US10866865B1 (en) | Storage system journal entry redaction | |
US10324905B1 (en) | Proactive state change acceptability verification in journal-based storage systems | |
US9514170B1 (en) | Priority queue using two differently-indexed single-index tables | |
CN111522631A (zh) | 分布式事务处理方法、装置、服务器及介质 | |
CN112654978A (zh) | 分布式异构存储系统中数据一致性实时检查的方法、设备和系统 | |
EP4276651A1 (en) | Log execution method and apparatus, and computer device and storage medium | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
US7072912B1 (en) | Identifying a common point in time across multiple logs | |
US20130006920A1 (en) | Record operation mode setting | |
WO2023124242A1 (zh) | 事务执行方法、装置、设备和存储介质 | |
CN116701415A (zh) | 一种跨链事务的执行方法及相关设备 | |
CN114691307A (zh) | 事务处理方法及计算机系统 | |
US7502792B2 (en) | Managing database snapshot storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |