本发明涉及区块链技术领域,更具体的,涉及一种区块链的跨链操作方法及区块链管理系统。
背景技术:
区块链是一种使用共识机制的分布式数据存储技术,具有去中心化,不可篡改,可以运行智能合约等特性。区块链技术的出现为数据存储提供了新的解决方案。
为了保护机构内部数据和避免数据泄漏,很多机构都运行着自己的区块链。而对于跨机构的区块链操作,传统的方法是在所有参与机构间部署联盟链(或者私有链)。这样虽然可以解决多机构间的数据操作的问题,但是由于机构间的业务逻辑不同,数据格式的差异等,替换机构各自的区块链而部署新的联盟链的实施代价大。由于区块链的数据存在于系统中的每个节点中,一些对于数据隐私要求高,且对安全敏感的机构并不愿意把数据部署在联盟链上,这些机构使用的还是各自的私有链。私有链的孤立性阻碍了不同区块链之间的协同操作,所以区块链之间的跨链协作问题成为了区块链技术发展面临的一个主要问题。
技术实现要素:
有鉴于此,本发明提供了一种区块链的跨链操作方法及区块链管理系统,通过将参与跨链操作的各个机构提供的各自区块链的资源锁操作、原始操作和逆操作进行封装,保证了跨链操作的原子性(atomicity),一致性(consistency),隔离性(isolation)和持久性(durability),即:acid,使得各个机构在保留原有区块链系统的情况下就能实现跨链操作。区块链管理系统可以通过所述的跨链操作对区块链进行管理和控制。
具体技术方案如下:
一种区块链的跨链操作方法,应用于区块链管理系统,所述方法包括:
获取参与跨链操作的各个机构提供的各自区块链的操作信息,所述操作信息包括:资源锁操作、原始操作,以及与所述原始操作对应的逆操作;
按照所述跨链操作的业务逻辑,确定各个所述操作信息中的多个原始操作的执行顺序;
执行各个所述资源锁操作,对参与所述跨链操作的各个机构的资源进行锁定;
按照所述跨链操作中的各个所述原始操作的执行顺序,依次执行各个所述原始操作,在各个所述原始操作的执行过程中判断是否满足跨链操作失败条件;
若满足,执行与已执行的所述原始操作相对应的逆操作,当所有的逆操作都执行完毕时,执行解锁操作释放已锁定的资源;
若不满足,当所述跨链操作中的所有原始操作都执行完毕时,执行解锁操作释放已锁定的资源。
优选的,所述资源锁操作包括资源锁定范围,所述资源锁定范围为参与所述跨链操作的机构中的交易方所拥有的所有资源,或参与所述跨链操作的机构中的交易方中只涉及所述跨链操作的资源。
可选的,所述资源锁操作包括资源锁定时效;
所述跨链操作失败条件为当前执行跨链操作的时间大于各个所述机构中任一机构的资源锁定时效。
可选的,所述跨链操作失败条件为接收到各个所述机构中任一机构的操作失败信息。
优选的,所述执行与已执行的原始操作相对应的逆操作,包括:
当所述已执行的原始操作的数量为1时,直接执行与已执行的原始操作相对应的逆操作;
当所述已执行的原始操作的数量大于1时,获取已执行的各个原始操作的执行顺序的倒序,并按照所述倒序依次执行与各个所述原始操作相对应的逆操作。
优选的,所述方法还包括:
按照所述跨链操作的各个所述资源锁操作、所述原始操作和/或与所述原始操作相对应的逆操作的执行顺序,将所述跨链操作的各个所述资源锁操作、所述原始操作和/或与所述原始操作相对应的逆操作,以及各个操作的执行状态记录在日志链中,所述执行状态包括:执行成功和执行失败。
优选的,所述日志链为一个区块链系统。
优选的,所述获取已执行的各个原始操作的执行顺序的倒序,并按照所述倒序依次执行与各个所述原始操作相对应的逆操作,包括:
从所述日志链中获取已执行的各个所述原始操作的执行顺序和执行状态;
根据已执行的各个所述原始操作的执行顺序确定已执行的各个所述原始操作的倒序;
按照已执行的各个所述原始操作的倒序,依次执行与各个所述原始操作相对应的逆操作。
优选的,所述方法还包括:
接收用户对日志链的查询请求,根据所述用户的权限和所述查询请求在所述日志链中对已执行的跨链操作进行查询,并将查询结果发送至所述用户。
一种区块链管理系统,包括:
获取单元,用于获取参与跨链操作的各个机构提供的各自区块链的操作信息,所述操作信息包括:资源锁操作、原始操作,以及与所述原始操作对应的逆操作;
确定单元,用于按照所述跨链操作的业务逻辑,确定各个所述操作信息中的多个原始操作的执行顺序;
锁定单元,用于执行各个所述资源锁操作,对参与所述跨链操作的各个机构所需的资源进行锁定;
第一执行单元,用于按照所述跨链操作中的各个所述原始操作的执行顺序,依次执行各个所述原始操作,在各个所述原始操作的执行过程中判断是否满足跨链操作失败条件;若满足,触发第二执行单元;若不满足,触发第三执行单元;
所述第二执行单元,用于执行与已执行的所述原始操作相对应的逆操作,当所有的逆操作都执行完毕时,执行解锁操作释放已锁定的资源;
所述第三执行单元,用于当所述跨链操作中的所有原始操作都执行完毕时,执行解锁操作释放已锁定的资源。
优选的,所述区块链管理系统还包括:
记录单元,用于按照所述跨链操作的各个所述资源锁操作、所述原始操作和/或与所述原始操作相对应的逆操作的执行顺序,将所述跨链操作的各个所述资源锁操作、所述原始操作和/或与所述原始操作相对应的逆操作,以及各个操作的执行状态记录在日志链中,所述执行状态包括:执行成功和执行失败。
优选的,所述区块链管理系统还包括:
查询单元,用于接收用户对日志链的查询请求,根据所述用户的权限和所述查询请求在所述日志链中对已执行的跨链操作进行查询,并将查询结果发送至所述用户。
相对于现有技术,本发明的有益效果如下:
本发明提供的区块链的跨链操作方法及区块链管理系统,参与跨链操作的机构只需提供各自区块链的资源锁操作、原始操作和逆操作,使得各个机构在保持原有区块链系统的情况下就能实现跨链操作,最小化了参与机构在实现跨链操作需要付出的代价,增强了本发明的实用性,且参与机构的现有的业务逻辑和数据结构无需变动,从而保证了参与机构数据的独立性。
本发明通过执行资源锁操作,对参与跨链操作的各个机构的资源进行锁定,有效的防止了资源竞争问题。
本发明在各个原始操作的执行过程中,若满足跨链操作失败条件,执行与已执行的所述原始操作相对应的逆操作,并按照所述资源锁定范围执行解锁操作释放已锁定的资源,以“复原”已消耗的资源,使得参与跨链操作的相关资源可以“回滚”到执行跨链操作之前的状态,从而保证了跨链操作的原子性、一致性、独立性和持久性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例一公开的一种区块链的跨链操作方法流程图;
图2为本发明实施例三公开的一种区块链管理系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
请参阅图1,本实施例公开了一种区块链的跨链操作方法,应用于区块链管理系统,具体包括以下步骤:
s101:获取参与跨链操作的各个机构提供的各自区块链的操作信息,所述操作信息包括:资源锁操作、原始操作,以及与所述原始操作对应的逆操作;
跨链操作是指在多个区块链之间进行的操作,跨链操作是将分散着的区块链孤岛连接起来的桥梁,常见的跨链操作是不同区块链之间的资源访问和资源转移等操作,本实施例提供的区块链的跨链操作方法适用于所有区块链,包括同构或异构区块链、私有链、联盟链和公有链等。
跨链操作可能涉及多个参与机构,每个参与机构都有各自的区块链。跨链操作可能涉及多个原始操作,在一个跨链操作中,每个参与机构都可能涉及若干个原始操作。
各个机构提供的各自区块链的操作信息包括:资源锁操作、原始操作,以及与所述原始操作对应的逆操作。其中,逆操作是相对于原始操作来说的,例如,跨链操作可能涉及交易和查询等操作,以从a链的a账户转移数量50到b链的b账户为例,即:froma.atob.bamount50,其中,大写的a表示链名,小写的a表示交易方。在链a上,原始操作等价于将a账户的账本减少50,与原始操作相对应的逆操作则为a账户增加50;同理,在链b上,原始操作为对b账户的账本增加50,逆操作则为b账户减少50。当原始操作为不改变数据的操作的时候(例如:查询操作)是没有对应的逆操作的。
参与跨链操作的机构只需提供各自区块链的资源锁操作、原始操作,以及与所述原始操作对应的逆操作,使各个机构在保持原有区块链系统的情况下就能实现跨链操作,最小化了参与机构在实现跨链操作需要付出的代价,增强了本发明的实用性。
s102:按照所述跨链操作的业务逻辑,确定各个所述操作信息中的多个原始操作的执行顺序;
按照所述业务逻辑,可以将跨链操作分解为有顺序的多个原始操作。
s103:执行各个所述资源锁操作,对参与所述跨链操作的各个机构的资源进行锁定;
跨链操作可能涉及多种资源,在执行跨链操作时将跨链操作涉及的各种资源锁定在所述跨链操作中,保证跨链操作涉及的各种资源只在跨链操作中使用,防止资源竞争问题。
优选的,所述资源锁操作包括资源锁定范围。
所述资源锁定范围为参与所述跨链操作的机构中的交易方所拥有的所有资源,或参与所述跨链操作的机构中的交易方中只涉及所述跨链操作的资源。
为了对所述资源锁定范围做进一步说明,现举例说明如下:
参与跨链操作的机构包括a、b、c,每个参与机构中可以包括多个交易方,其中,参与机构a中在所述跨链操作中的交易方a所拥有的全部资源为1000,所述跨链操作中交易方a涉及的资源为50。根据参与机构的需要,参与机构a在提供资源锁定范围时,资源锁定范围可以为交易方a所拥有的全部资源为1000,也可以为所述跨链操作中交易方a涉及的资源为50。
若资源锁定范围为参与所述跨链操作的机构中交易方所拥有的所有资源,这种锁定资源的方式实现最为简单,但是由于交易方的资源全部被锁定,参与所述跨链操作的机构必须等待跨链操作结束,资源被释放后才能再次使用相关资源。
若资源锁定范围为参与所述跨链操作的机构中的交易方中只涉及所述跨链操作的资源,相对于上述锁定资源的方式,这种锁定资源的方式需要先构建相关资源(如上述例子中的50),再对资源进行锁定,实现较为复杂,但是参与所述跨链操作的机构能使用跨链操作涉及的资源外的其他资源进行其他操作,使资源使用更加灵活。
当然,下面资源解锁的范围是根据资源锁定范围而定的。
s104:按照所述跨链操作中的各个所述原始操作的执行顺序,依次执行各个所述原始操作,在各个所述原始操作的执行过程中判断是否满足跨链操作失败条件;若是,执行s105;若否,执行s106;
本实施例中,导致操作失败有两种条件,其中一种跨链操作失败条件为接收到各个所述机构中任一机构的操作失败信息。跨链操作涉及多个参与机构,虽然每个机构可以确定自己操作成功或失败,但是却无法知道其他机构的操作成功或失败,但是只要各个参与机构中任一机构的任一原始操作失败,跨链操作就操作失败,所以本实施例引入二阶段提交算法(doublecommit),以区块链管理系统为第三方充当“协调者”的角色,参与机构充当“参与者”的角色,区块链管理系统可以根据参与机构的原始操作的成功和失败信息,指导跨链操作。
可选的,s101中各个机构提供的各自区块链的资源锁操作还包括资源锁定时效,资源锁定时效是参与机构允许资源被锁定的最大时间,资源锁定时效由跨链操作的原始操作来决定,可以理解的是,当跨链操作包括的原始操作数量较多且操作复杂时,需要的资源锁定时效可能较长。因此,参与机构可以根据跨链操作的业务逻辑自行确定资源锁定时效,并将确定的资源锁定时效提供给区块链管理系统。
在操作信息包括资源锁定时效的基础上,另外一种跨链操作失败条件为当前执行跨链操作的时间大于各个所述机构中任一机构的资源锁定时效。也就是说,区块链管理系统会实时对当前执行跨链操作的时间进行检测,当前执行跨链操作的时间只要大于参与机构中任一机构提供的资源锁定时效时,跨链操作失败。
s105:执行与已执行的所述原始操作相对应的逆操作,当所有的逆操作都执行完毕时,执行解锁操作释放已锁定的资源;
需要说明的是,当所述已执行的原始操作的数量为1时,直接执行与已执行的原始操作相对应的逆操作;
当所述已执行的原始操作的数量大于1时,获取已执行的各个原始操作的倒序,并按照所述倒序依次执行与各个所述原始操作相对应的逆操作。
当所有的逆操作都执行完毕时,执行解锁操作释放已锁定的资源。
可以理解的是,在各个原始操作的执行过程中,若满足跨链操作失败条件,执行与已执行的所述原始操作相对应的逆操作,并执行解锁操作释放已锁定的资源,以“复原”已消耗的资源,使得跨链操作中所涉及的资源可以“回滚”到执行跨链操作之前的状态,从而保证了跨链操作的原子性。
s106:当所述跨链操作中的所有原始操作都执行完毕时,执行解锁操作释放已锁定的资源。
需要说明的是,在实现跨链操作时,各个参与机构现有的区块链系统还可以正常运行,参与机构在访问自己区块链执行操作时,完全独立于其他参与机构的区块链系统,只有少数被锁定的资源会受到限制,但是同时参与跨链操作的机构可以自行定义资源锁定的时效和范围,这种机制最大程度的保证了资源使用的灵活性,而其余资源并不会受到跨链操作或者其他参与机构的影响,从而保证了多个区块链系统之间业务的独立性。
本实施例提供的区块链的跨链操作方法,参与跨链操作的机构只需提供各自区块链的资源锁操作、原始操作和逆操作,使得各个机构在保持原有区块链系统的情况下就能实现跨链操作,最小化了参与机构在实现跨链操作需要付出的代价,增强了本发明的实用性,且参与机构的所有业务逻辑和数据结构都无需变动,从根本上保证了参与机构数据的独立性。
本实施例按照参与跨链操作的机构提供的资源锁操作,对参与跨链操作的各个机构的资源进行锁定,有效的防止了资源竞争问题;在各个原始操作的执行过程中,若满足跨链操作失败条件,执行与已执行的所述原始操作相对应的逆操作,然后执行解锁操作释放已锁定的资源,以“复原”已消耗的资源,使得跨链操作所涉及的资源可以“回滚”到执行跨链操作之前的状态,从而保证了跨链操作的原子性。
实施例二
在实施例一的基础上,本实施例公开的区块链的跨链操作方法还包括:
按照所述跨链操作的各个所述资源锁操作、所述原始操作和/或与所述原始操作相对应的逆操作的执行顺序,将所述跨链操作的各个所述资源锁操作、所述原始操作和/或与所述原始操作相对应的逆操作,以及各个操作的执行状态记录在日志链中,所述执行状态包括:执行成功和执行失败。
需要说明的是,日志链是一个区块链系统,日志链中只记录跨链操作中的各个所述资源锁资源、所述原始操作和/或与所述原始操作相对应的逆操作的执行顺序,各个所述原始操作和/或与所述原始操作相对应的逆操作,以及各个操作的执行状态,而具体数据记录在参与机构的区块链上,即,日志链只记录操作和状态,而参与跨链操作的机构的区块链记录结果。所以不能从日志链中获取或改动参与机构的任何数据,从而保证了参与机构的区块链在根本上是隔离的,不会存在数据泄露的问题,保证了数据的安全性和隐私性。
基于上述的日志链记录操作,实施例一中,“获取已执行的各个原始操作的倒序,并按照所述倒序依次执行与各个所述原始操作相对应的逆操作”,包括:
从所述日志链中获取已执行的各个所述原始操作的执行顺序和执行状态;
根据已执行的各个所述原始操作的执行顺序确定已执行的各个所述原始操作的倒序;
按照已执行的各个所述原始操作的倒序,依次执行与各个所述原始操作相对应的逆操作。
还需要说明的是,基于上述日志链记录操作,本实施例公开的区块链的跨链操作方法还包括:
接收用户对日志链的查询请求,根据所述用户的权限和所述查询请求在所述日志链中对已执行的跨链操作进行查询,并将查询结果发送至所述用户。
这里的用户可以是参与机构中的人员,参与机构可以通过日志链查询跨链操作中涉及到参与机构的操作。而非直接参与跨链操作的机构或用户访问日志链的权限是由参与跨链操作的参与机构共同决定的。
实施例三
基于上述实施例公开的区块链的跨链操作方法,请参阅图2,本实施例对应公开一种区块链管理系统,包括:
获取单元101,用于获取参与跨链操作的各个机构提供的各自区块链的操作信息,所述操作信息包括:资源锁操作、原始操作,以及与所述原始操作对应的逆操作;
确定单元102,用于按照所述跨链操作的业务逻辑,确定各个所述操作信息中的多个原始操作的执行顺序;
锁定单元103,用于执行各个所述资源锁操作,对参与所述跨链操作的各个机构所需的资源进行锁定;
第一执行单元104,用于按照所述跨链操作中的各个所述原始操作的执行顺序,依次执行各个所述原始操作,在各个所述原始操作的执行过程中判断是否满足跨链操作失败条件;若满足,触发第二执行单元105;若不满足,触发第三执行单元106;
所述第二执行单元105,用于执行与已执行的所述原始操作相对应的逆操作,当所有的逆操作都执行完毕时,执行解锁操作释放已锁定的资源;
所述第三执行单元106,用于当所述跨链操作中的所有原始操作都执行完毕时,执行解锁操作释放已锁定的资源。
优选的,所述区块链管理系统还包括:
记录单元,用于按照所述跨链操作的各个所述资源锁操作、所述原始操作和/或与所述原始操作相对应的逆操作的执行顺序,将所述跨链操作的各个所述资源锁操作、所述原始操作和/或与所述原始操作相对应的逆操作,以及各个操作的执行状态记录在日志链中,所述执行状态包括:执行成功和执行失败。
查询单元,用于接收用户对日志链的查询请求,根据所述用户的权限和所述查询请求在所述日志链中对已执行的跨链操作进行查询,并将查询结果发送至所述用户。
本实施例提供的区块链管理系统,参与跨链操作的机构只需提供各自区块链的资源锁操作、原始操作和逆操作,使得各个机构在保持原有区块链系统的情况下就能实现跨链操作,最小化了参与机构在实现跨链操作需要付出的代价,增强了本发明的实用性,且参与机构的现有业务逻辑和数据结构无需变动,从而保证参与机构数据的独立性。
本实施例按照参与跨链操作的机构提供的资源锁操作,对参与跨链操作的各个机构的资源进行锁定,有效的防止了资源竞争问题;在各个原始操作的执行过程中,若满足跨链操作失败条件,执行与已执行的所述原始操作相对应的逆操作,然后执行解锁操作释放已锁定的资源,以“复原”已消耗的资源,使得跨链操作中所涉及的资源可以“回滚”到执行跨链操作之前的状态,从而保证了跨链操作的原子性。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。