一种区块链中跨链的原子变量实现方法及装置、电子设备与流程

    专利2022-07-08  76


    本申请涉及区块链技术领域,尤其涉及一种区块链中跨链的原子变量实现方法及装置、电子设备。



    背景技术:

    区块链技术是利用块链式数据结构验证和存储数据,利用分布式节点公式算法生成和更新数据,基于密码学保证数据传输和访问的安全性,利用由自动化脚本代码组成的智能合约操作数据的一种分布式基础架构;区块链技术是一种去中心化的分布式账本。

    区块链技术中存在跨链的场景,跨链场景下的区块链之间执行的操作是相互独立的;若一个变量被多条区块链的智能合约共同持有,则可能存在多条区块链同时操作该变量,但是操作该变量的多条区块链却不知道对方已对该变量执行了操作,导致数据不一致的问题。举例来说,一个用户在区块链a和区块链b上有一个共享账户,其共享账户内部有金额x=100。区块链a和区块链b都可能操作此金额。当区块链a和区块链b同时对此金额进行加1的操作时,则会使得计算结果为x=101,而实际上区块链a和区块链b上的金额都加了1,正确结果应是x=102。

    申请内容

    为解决上述技术问题,本申请实施例提供了一种区块链中跨链的原子变量实现方法及装置、计算机程序产品、存储介质、电子设备。

    本申请实施例提供的一种区块链中跨链的原子变量实现方法,包括:

    第一区块链的第一节点构建原子变量的任务队列;

    所述第一节点向第二区块链的第二节点发送所述原子变量的参数,以使所述第二节点基于所述参数锁定所述原子变量;

    所述第一节点基于所述任务队列和所述参数对所述原子变量执行所述原子操作。

    本申请一可选实施方式中,所述第一区块链的第一节点构建原子变量的任务队列之前,所述方法还包括:

    所述第一节点建立跨链原子变量库;

    为所述跨链原子变量库中的原子变量分配序列号,所述序列号用于表征所述原子变量已经被执行原子操作的次数。

    本申请一可选实施方式中,所述第一区块链的第一节点构建原子变量的任务队列之前,所述方法还包括:

    所述第一节点生成随机数;

    基于所述随机数和所述原子变量的序列号生成所述原子变量的承诺。

    本申请一可选实施方式中,所述第一区块链的第一节点构建原子变量的任务队列,包括:

    所述第一节点按待执行的原子操作的执行顺序,将所述待执行的原子操作添加至所述原子变量对应的任务队列;

    所述第一节点存储所述任务队列。

    本申请一可选实施方式中,所述第一节点向第二区块链的第二节点发送所述原子变量的参数,包括:

    所述第一节点向所述第二节点发送所述原子变量的序列号和所述原子变量的承诺。

    本申请一可选实施方式中,所述第一节点基于所述任务队列和所述参数对所述原子变量执行所述原子操作,包括:

    所述第一节点接收所述第二节点发送的所述原子变量的锁定结果,所述锁定结果由所述第二节点基于所述原子变量的序列号和所述原子变量的承诺确定;

    若所述锁定结果为所述原子变量锁定成功,则所述第一节点按序执行所述任务队列中的所述原子操作,向所述第二节点发送所述任务队列。

    本申请一可选实施方式中,所述第一节点基于所述任务队列和所述参数对所述原子变量执行所述原子操作之后,所述方法还包括:

    所述第一节点接收所述第二节点发送的对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,则所述第一节点向所述第二节点发送所述原子变量的随机数;

    将所述原子变量的序列号的值增加执行所述原子操作的次数。

    本申请一可选实施方式中,若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述方法还包括:

    所述第一节点将所述原子变量的值恢复至执行所述原子操作之前的数据,将所述第一节点对所述原子变量执行的原子操作恢复至任务队列。

    本申请一可选实施方式中,若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述方法还包括:

    所述第一节点将所述原子变量对应的随机数发送至所述第二节点,所述随机数用于所述第二节点撤销对所述原子变量执行的所述原子操作。

    本申请实施例提供的另一种区块链中跨链的原子变量实现方法,包括:

    第二区块链的第二节点接收第一区块链的第一节点发送的原子变量的参数;

    基于所述参数锁定所述原子变量。

    本申请一可选实施方式中,所述第二区块链的第二节点接收第一区块链的第一节点发送的原子变量的参数,包括:

    所述第二节点接收所述第一节点发送所述原子变量的序列号和所述原子变量的承诺。

    本申请一可选实施方式中,所述基于所述参数锁定所述原子变量,包括:

    所述第二节点判断所述原子变量是否被锁定;

    若所述原子变量未被锁定,基于所述承诺锁定所述原子变量。

    本申请一可选实施方式中,所述基于所述参数锁定所述原子变量之后,所述方法还包括:

    所述第二节点向所述第一节点发送所述原子变量的锁定结果;

    若所述锁定结果为所述原子变量锁定成功,则接收所述第一节点发送的所述原子变量的任务队列;

    基于所述任务队列和所述参数对所述原子变量执行原子操作。

    本申请一可选实施方式中,所述基于所述任务队列和所述参数对所述原子变量执行原子操作之后,所述方法还包括:

    所述第二节点向所述第一节点发送对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,则接收所述第一节点发送的所述原子变量的随机数;

    基于所述随机数解锁所述原子变量,将所述原子变量的序列号的值增加执行所述原子操作的次数。

    本申请一可选实施方式中,若所述执行结果与所述第一节点的执行结果不一致、或者所述锁定结果为所述原子变量锁定不成功,所述方法还包括:

    所述第二节点接收所述第一节点发送的所述原子变量的随机数;

    基于所述随机数撤销对所述原子变量执行的所述原子操作。

    本申请实施例提供一种第一区块链的第一节点,所述第一节点包括:

    构建单元,用于构建原子变量的任务队列;

    第一发送单元,用于向第二区块链的第二节点发送所述原子变量的参数,以使所述第二节点基于所述参数锁定所述原子变量;

    第一处理单元,用于基于所述任务队列和所述参数对所述原子变量执行所述原子操作。

    本申请一可选实施方式中,所述构建单元,还用于建立跨链原子变量库;

    为所述跨链原子变量库中的原子变量分配序列号,所述序列号用于表征所述原子变量已经被执行原子操作的次数。

    本申请一可选实施方式中,所述第一处理单元,还用于生成随机数;基于所述随机数和所述原子变量的序列号生成所述原子变量的承诺。

    本申请一可选实施方式中,所述构建单元,用于按待执行的原子操作的执行顺序,将所述待执行的原子操作添加至所述原子变量对应的任务队,存储所述任务队列。

    本申请一可选实施方式中,所述第一发送单元,用于向所述第二节点发送所述原子变量的序列号和所述原子变量的承诺。

    本申请一可选实施方式中,所述第一处理单元,用于接收所述第二节点发送的所述原子变量的锁定结果,所述锁定结果由所述第二节点基于所述原子变量的序列号和所述原子变量的承诺确定;若所述锁定结果为所述原子变量锁定成功,则按序执行所述任务队列中的所述原子操作,向所述第二节点发送所述任务队列。

    本申请一可选实施方式中,所述第一处理单元,还用于接收所述第二节点发送的对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,则向所述第二节点发送所述原子变量的随机数;将所述原子变量的序列号的值增加执行所述原子操作的次数。

    本申请一可选实施方式中,若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述第一处理单元,还用于将所述原子变量的值恢复至执行所述原子操作之前的数据,将所述第一节点对所述原子变量执行的原子操作恢复至任务队列。

    本申请一可选实施方式中,若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述第一处理单元,还用于将所述原子变量对应的随机数发送至所述第二节点,所述随机数用于所述第二节点撤销对所述原子变量执行的所述原子操作。

    本申请实施例提供一种第二区块链的第二节点,所述第二节点包括:

    第一接收单元,用于接收第一区块链的第一节点发送的原子变量的参数;

    第二处理单元,用于基于所述参数锁定所述原子变量。

    本申请一可选实施方式中,所述第一接收单元,用于接收所述第一节点发送所述原子变量的序列号和所述原子变量的承诺。

    本申请一可选实施方式中,所述第二处理单元,用于判断所述原子变量是否被锁定;

    若所述原子变量未被锁定,基于所述承诺锁定所述原子变量。

    本申请一可选实施方式中,所述第二节点还包括:

    第二发送单元,用于向所述第一节点发送所述原子变量的锁定结果;

    若所述锁定结果为所述原子变量锁定成功,所述第一接收单元还用于接收所述第一节点发送的所述原子变量的任务队列;

    所述第二处理单元,还用于基于所述任务队列和所述参数对所述原子变量执行原子操作。

    本申请一可选实施方式中,所述第二发送单元,还用于向所述第一节点发送对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,所述第一接收单元还用于接收所述第一节点发送的所述原子变量的随机数;

    所述第二处理单元,还用于基于所述随机数解锁所述原子变量,将所述原子变量的序列号的值增加执行所述原子操作的次数。

    本申请一可选实施方式中,若所述执行结果与所述第一节点的执行结果不一致、或者所述锁定结果为所述原子变量锁定不成功,

    所述第一接收单元,还用于接收所述第一节点发送的所述原子变量的随机数;

    所述第二处理单元,还用于基于所述随机数撤销对所述原子变量执行的所述原子操作。

    本申请实施例提供的计算机程序产品包括计算机可执行指令,该计算机可执行指令被执行后,能够实现上述的区块链中跨链的原子变量实现方法。

    本申请实施例提供的存储介质上存储有可执行指令,该可执行指令被处理器执行时实现上述的区块链中跨链的原子变量实现方法。

    本申请实施例提供的电子设备,所述电子设备包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时可实现上述的区块链中跨链的原子变量实现方法。

    本申请实施例提供的区块链中跨链的原子变量实现方法,第一区块链的第一节点构建原子变量的任务队列;所述第一节点向第二区块链的第二节点发送所述原子变量的参数,以使所述第二节点基于所述参数锁定所述原子变量;所述第一节点基于所述任务队列和所述参数对所述原子变量执行所述原子操作。如此,在第一区块链和第二区块链共享原子变量的情况下,若第一区块链的第一节点对原子变量执行原子操作,第一节点将原子变量的参数发送给第二区块链的第二节点,第二节点利用原子变量的参数锁定该原子变量;如此,使得第一区块链在对原子变量执行原子操作时,共享原子变量的其他区块链锁定该原子变量,其他区块链不能够对该原子变量执行操作。并且,第一区块链通过将原子变量的任务队列发送至第二节点,第二节点基于任务队列对原子变量执行原子操作,使得第一区块链和第二区块链中原子变量的数据保持一致,实现了跨链间变量操作的原子性。

    为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合附附图,作详细说明如下。

    附图说明

    图1为本申请实施例提供的区块链中跨链的原子变量实现方法的一种可选处理流程示意图;

    图2为本申请实施例提供的区块链中跨链的原子变量实现方法的另一种可选处理流程示意图;

    图3为本申请实施例提供的区块链中跨链的原子变量实现方法的一种详细可选处理流程示意图;

    图4为本申请实施例提供的撤销原子操作的一种可选处理流程示意图;

    图5为本申请实施例提供的第一区块链的第一节点的结构组成示意图;

    图6为本申请实施例提供的第二区块链的第二节点的结构组成示意图;

    图7为本申请实施例的电子设备的结构组成示意图。

    具体实施方式

    为了能够更加详尽地了解本申请实施例的特点和技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。

    本申请实施例中,相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

    下面对本申请实施例所涉及的一种区块链中跨链的原子变量实现方法进行详细介绍,本申请实施例所提供的区块链中跨链的原子变量实现方法的执行主体可以为转账发起方对应的具有数据处理能力的装置或设备,本申请实施例中不作限定。

    本申请实施例所提供的区块链中跨链的原子变量实现方法的应用场景可以是包括两条或两条以上区块链的区块链网络;区块链网络中的至少两条区块链的智能合约共同持有同一个变量。本申请实施例所提供的区块链中跨链的原子变量实现方法的一种可选处理流程示意图,如图1所示,至少可以包括以下几个步骤:

    步骤s101,第一区块链的第一节点构建原子变量的任务队列。

    在一些实施例中,若一个变量被多条区块链的智能合约共同持有,则可以在每条区块链的智能合约中声明此变量为原子变量,该过程可以理解为声明此变量被多条区块链的智能合约共同持有。

    在一些实施例中,原子变量被声明后,每个原子变量对应一个任务队列,任务队列是记录此原子变量待执行的原子操作的队列。例如,当执行x.add时,会先将加法操作先写入任务队列中。任务队列是每条区块链的每个原子变量私有的,每条区块链的每个原子变量都有各自的任务队列。

    本申请实施例中,第一节点构建原子变量的任务队列的实现过程可以是:所述第一节点按待执行的原子操作的执行顺序,将所述待执行的原子操作添加至所述原子变量对应的任务队列;所述第一节点存储所述任务队列。

    举例来说,若对原子变量待执行的原子操作包括:加法和乘法,且对原子变量先执行加法,再执行乘法,则任务队列为{加法,乘法}。

    其中,原子变量是并行计算领域内用于实现基于单机内部的线程调度模型。多个线程同时访问一个原子变量时,通过硬件的手段实现多个线程的有序执行。若一个线程要访问一个原子变量,该线程首先尝试获取锁,以锁住原子变量;再对原子变量进行操作,操作完成之后对原子变量解锁。若在该过程中,还存在另一个线程需要操作此原子变量,则另一个线程在获取锁时会被阻塞,直到前一个线程释放了锁,另一个线程才可以继续对原子变量进行操作。通过锁的方式,保证了多个线程操作同一个变量时是有序执行的。

    对原子变量执行的操作称为原子操作,原子操作是不可分割的,在执行完毕之前不会被任何其它任务或事件中断。原子操作可利用智能合约调用原子操作函数完成,所述原子操作函数至少可以包括下述中的一种或多种:add、sub、mul和div等;其中,div是对数据进行标准化进行规格化,使得各行的和为1;mul是乘法函数;sub是将一个函数作为第二个参数(替换式),add是加法函数。若原子操作为“加”,则利用智能合约调用“原子操作函数加”;原子操作函数加可以表示为x.add(1),表示对变量x加一,若执行原子操作之前变量x为100,执行原子操作后x为101。

    当然,本申请实施例中的原子操作函数不限于上述举例,还可以是其他任何对原子变量执行原子操作对应的函数。

    本申请实施例中,第一节点为发起原子操作的第一区块链上的一个节点;第二区块链的智能合约与第一区块链的智能合约共享同一个原子变量;在具体实施时,可以有多条区块链共享同一个原子变量,如第一区块链、第二区块链和第三区块链的智能合约共享同一个原子变量。

    在一些可选实施方式中,在执行步骤s101之前,所述方法还可以包括:

    步骤s100,所述第一节点建立跨链原子变量库,为所述跨链原子变量库中的原子变量分配序列号,所述序列号用于表征所述原子变量已经被执行原子操作的次数。

    在一些实施例中,跨链原子变量库中包括一个或多个原子变量;原子变量被声明后,第一节点为原子变量库中的每个原子变量分配一个序列号(seq),seq用于表征所述原子变量已经被执行原子操作的次数。针对原子变量执行一次原子操作之后,seq的值加1;本申请实施例中,同一个原子变量在不同的区块链中的值是一致的。

    本申请实施例中,原子变量的任务队列和原子变量的序列号都可以看做是跨链原子变量库中的数据结构。

    在一些可选实施方式中,在执行步骤s101之前,所述方法还可以包括:

    步骤s100’,第一节点生成随机数,基于所述随机数和所述原子变量的序列号生成所述原子变量的承诺。

    在一些实施例中,随机数用r表示,第一节点对所述原子变量的随机数与所述原子变量的序列号之和进行哈希计算,得到原子变量的承诺;原子变量的承诺可以用cm表示。则cm=hash(r seq);其中,cm和seq用于锁定原子变量。

    当然,承诺与随机数和序列号的关系可以满足哈希函数关系,也可以满足其他的函数关系。

    步骤s102,所述第一节点向第二区块链的第二节点发送所述原子变量的参数,以使所述第二节点基于所述参数锁定所述原子变量。

    在一些实施例中,所述参数可以包括:所述原子变量的序列号和所述原子变量的承诺。

    步骤s103,所述第一节点基于所述任务队列和所述参数对所述原子变量执行所述原子操作。

    在一些实施例中,第一节点向第二节点发送原子变量的参数之后,第二节点会根据原子变量的参数执行锁定原子变量的操作,并向第一节点反馈锁定结果。

    在一些实施例中,若所述锁定结果为所述原子变量锁定不成功,则所述第一节点将所述原子变量的值恢复至执行所述原子操作之前的数据,将所述第一节点对所述原子变量执行的原子操作恢复至任务队列。

    在另一些实施例中,若所述锁定结果为所述原子变量锁定成功,则所述第一节点按序执行所述任务队列中的所述原子操作,向所述第二节点发送所述任务队列。第二节点根基于任务队列对原子变量执行原子操作,并向第一节点反馈执行结果。

    在一些可选实施方式中,若第二节点反馈的执行结果与第一节点执行原子操作后的执行结果不一致,所述第一节点将所述原子变量的值恢复至执行所述原子操作之前的数据,将所述第一节点对所述原子变量执行的原子操作恢复至任务队列。

    在另一些可选实施方式中,若第二节点反馈的执行结果与第一节点执行原子操作后的执行结果一致,则第一节点将原子变量的序列号的值增加执行所述原子操作的次数;并向第二节点发送原子变量的随机数,所述随机数用于第二节点解锁原子变量。其中,第一节点将原子变量的序列号的值增加执行所述原子操作的次数的过程可以是,若原子变量的seq在执行原子操作之前是100,执行三次原子操作,则第一节点将原子变量的seq修改为103。若第二节点利用随机数解锁原子变量成功,则第二节点向第一节点反馈解锁成功。若第二节点利用随机数解锁原子变量失败,则第二节点向第一节点反馈解锁失败,且解锁失败的原因是第一节点向第二节点发送的随机数错误;在该场景下,第一节点需检查随机数与承诺的对应关系,将正确的随机数发送至第二节点。

    综上,本申请实施例中,若第二节点锁定原子变量不成功,或第二节点对原子变量的执行结果与第一节点对原子变量的结果不一致,则第一节点撤销对原子变量的原子操作,如将所述第一节点对所述原子变量执行的原子操作恢复至任务队列,将所述原子变量对应的随机数发送至所述第二节点,以使所述第二节点基于所述随机数撤销对所述原子变量执行的所述原子操作;如果第一节点已经执行原子操作,第一节点将所述原子变量的值恢复至执行所述原子操作之前的数据。拖第二节点锁定原子变量成功,且第二节点对原子变量的执行结果与第一节点对原子变量的结果一致,则原子变量在第一区块链中的数据与在第二区块链中的数据相同,即原子变量的数据在第一区块链和第二区块链是同步的。

    本申请实施例所提供的区块链中跨链的原子变量实现方法的应用场景可以是包括两条或两条以上区块链的区块链网络;区块链网络中的至少两条区块链的智能合约共同持有同一个变量。本申请实施例所提供的区块链中跨链的原子变量实现方法的另一种可选处理流程示意图,如图2所示,至少可以包括以下几个步骤:

    步骤s201,第二区块链的第二节点接收第一区块链的第一节点发送的原子变量的参数。

    在一些实施例中,所述参数可以包括:所述原子变量的序列号和所述原子变量的承诺。

    其中,原子变量的序列号用seq表示,用于表征所述原子变量已经被执行原子操作的次数。原子变量的承诺由第一节点对所述原子变量的随机数与所述原子变量的序列号之和进行哈希计算得到,原子变量的承诺可以用cm表示。

    步骤s202,第二节点基于所述参数锁定所述原子变量。

    在一些实施例中,第二节点接收到第一节点发送的序列号后,判断用于表征所述原子变量是否被锁定的参数值,若该参数值为1或true,则表征原子变量被锁定;若该参数值为0或false,则表征原子变量未被锁定。原子变量被锁定或未被锁定还可以用其他参数表示。若所述原子变量未被锁定,则第二节点基于所述承诺锁定所述原子变量,第二节点在第二区块链上建立承诺与原子变量对应的seq的对应关系,只有与承诺对应的随机数才能够解锁原子变量,本申请实施例基于密码学实现了对原子变量的锁定。

    在一些实施例中,第二节点执行步骤s202之后,还可以包括:

    步骤s203,所述第二节点向所述第一节点发送所述原子变量的锁定结果;若所述锁定结果为所述原子变量锁定成功,则接收所述第一节点发送的所述原子变量的任务队列;基于所述任务队列和所述参数对所述原子变量执行原子操作。

    在一些实施例中,若第二节点锁定原子变量成功,则第一节点和第二节点针对原子变量存在相同的任务队列,第一节点和第二节点针对原子变量执行相同的原子操作。

    举例来说,若任务队列中仅包括任务x.add(1),即对原子变量加1,若执行原子操作前的原子变量x=100,则第一节点和第二节点执行原子操作后的执行结果均是x=101。

    在一些实施例中,第二节点执行步骤s203之后,还可以包括:

    步骤s204,第二节点向所述第一节点发送对所述原子变量的原子操作的执行结果;若所述执行结果与所述第一节点的执行结果一致,则接收所述第一节点发送的所述原子变量的随机数;基于所述随机数解锁所述原子变量,将所述原子变量的序列号的值增加执行所述原子操作的次数。

    在一些实施例中,若所述执行结果与所述第一节点的执行结果一致,则第一节点和第二节点对原子变量进行解锁。在具体实施时,第一节点将随机数r发送给第二节点,随机数可以是字符串,如0x7a3fda34。

    第二节点基于随机数解锁原子变量的过程可以是:利用随机数计算承诺,承诺用cm表示,则cm=hash(r 1),若r=0x7a3fda34,则cm=ab79f4aaa11908f557a7783fdd0632dc;若第二节点计算得到的承诺与步骤s201中第一节点发送的承诺相同,则解锁成功,将所述原子变量的序列号的值增加执行所述原子操作的次数。若原子变量的序列号在执行原子操作之前是seq=1,本次执行一次原子操作,则seq=2。若第二节点计算得到的承诺与步骤s201中第一节点发送的承诺不相同,则解锁失败,第二节点向第一节点反馈解锁失败;解锁失败的原因是第一节点发送的r错误;若第一节点根据随机数与承诺的对应关系判断发送给第二节点的随机数错误,则第一节点将正确的随机数发送至第二节点。

    在一些实施例中,若在步骤s203中,第二节点对原子变量的锁定结果为锁定失败,或者在步骤s204中,第二节点对所述原子变量的原子操作的执行结果与第一节点的执行结果不一致,则第二节点接收所述第一节点发送的所述原子变量的随机数,基于所述随机数撤销对所述原子变量执行的所述原子操作。

    其中,第二节点基于所述随机数撤销对所述原子变量执行的所述原子操作的过程可以是:第二节点查找到与随机数匹配的承诺,将承诺对应的原子变量恢复至执行原子操作之前的数据,并解锁该原子变量的锁定。第二节点撤销原子操作之后,可以向第一节点反馈撤销成功;若第二节点撤销原子操作失败,则可以向第二节点反馈撤销失败,失败的原因是第一节点发送的随机数错误;第一节点将正确的随机数发送至第二节点。

    本申请实施例中,第一节点为发起原子操作的第一区块链上的一个节点;第二区块链的智能合约与第一区块链的智能合约共享同一个原子变量;在具体实施时,可以有多条区块链共享同一个原子变量,如第一区块链、第二区块链和第三区块链的智能合约共享同一个原子变量。

    下面以区块链a、区块链b和区块链c共享原子变量,在区块链a、区块链b和区块链c的智能合约中声明原子变量,并存储原子变量的序列号(seq),区块链a、区块链b和区块链c针对同一个原子变量的序列号是一致的,区块链b作为发起链发起对原子变量的原子操作为例,对本申请实施例提供的区块链中跨链的原子变量实现方法的详细处理流程进行说明。本申请实施例提供的区块链中跨链的原子变量实现方法的一种详细可选处理流程,如图3所示,至少可以包括以下步骤:

    步骤s301,区块链b上的b节点调用原子变量的原子操作函数。

    在一些实施例中,b节点首先确定需要对原子变量执行的原子操作,再利用智能合约调用原子操作对应的原子操作函数。

    步骤s302,b节点构建任务队列。

    本申请实施例中,b节点将原子操作(x.add(1))缓存入原子变量对应的任务队列。

    步骤s303,b节点生成随机数和承诺。

    本申请实施例中,b节点本地生成随机数r(如r=0x7a3fda34),基于r与原子变量的序列号(seq)生成承诺(cm)。

    如seq=1,cm=hash(0x7a3fda34 1)=ab79f4aaa11908f557a7783fdd0632dc。

    步骤s304,b节点向a区块链的a节点和c区块链的c节点发送原子变量的序列号和承诺。

    步骤s305,a节点和c节点判断原子变量是否被锁定。

    本申请实施例中,a节点和c节点判断用于表征所述原子变量是否被锁定的参数值,若该参数值为1或true,则表征原子变量被锁定;若该参数值为0或false,则表征原子变量未被锁定。原子变量被锁定或未被锁定还可以用其他参数表示。若所述原子变量未被锁定,则a节点和c节点分别基于所述承诺锁定所述原子变量;即利用承诺锁定原子变量,a节点和c节点分别建立承诺与原子变量对应的seq的对应关系,只有与承诺对应的随机数才能够解锁原子变量。

    步骤s306,a节点和c节点向b节点反馈锁定成功。

    步骤s307,b节点从任务队列按顺序取出n个原子操作。

    步骤s308,b节点将任务队列发送给a节点和c节点。

    步骤s309,a节点、b节点和c节点均备份执行原子操作前的原子变量的数据,再依次执行n个原子操作。

    步骤s310,a节点和c节点向b节点反馈执行原子操作的执行结果。

    步骤s311,b节点判断a节点、b节点和c节点的执行结果一致,则用随机数解锁原子变量,并将原子变量的序列号加n。

    步骤s312,b节点向a节点和c节点发送随机数。

    步骤s313,a节点和c节点利用随机数解锁原子变量,并将原子变量的序列号加n。

    本申请实施例中,a节点和c节点利用随机数解锁原子变量的过程可以是:利用随机数计算承诺,承诺用cm表示,则cm=hash(r 1),若r=0x7a3fda34,则cm=ab79f4aaa11908f557a7783fdd0632dc;若a节点和c节点计算得到的承诺与步骤s304中b节点发送的承诺相同,则解锁成功。

    在本申请实施例提供的区块链中跨链的原子变量实现方法中,在b区块链的b节点发起对原子变量的原子操作过程中,b区块链以外的其他区块链上的节点不能对原子变量执行原子操作,并且,共享原子变量的其他区块链的节点执行与b节点对原子变量的相同的原子操作,实现了不同区块链上原子变量数据的一致性。在步骤s313执行结束之后,原子变量解锁,b区块链以外的其他区块链上的节点可以再次发起对原子变量的原子操作。

    在图3所示的区块链中跨链的原子变量实现方法是以原子变量锁定成功、原子变量执行原子操作以及原子变量解锁成功为例进行的说明。在具体实现过程中,在步骤s305还可能存在a节点和c节点中至少一个锁定原子变量失败的情况。在步骤s309还可能存在a节点和c节点中至少一个执行原子操作超时的情况,如c节点在约定的时间、或预设的时间内为执行完成全部的原子操作,则认为c节点执行原子操作超时。在步骤s311还可能存在a节点和c节点中至少一个发送给b节点的执行结果与b节点的执行结果不一致的情况,如a节点的执行结果是原子变量x的值为101,而b节点的执行结果是原子变量x的值为102。在上述三种情况中的任意一种情况发生的场景下,需要执行撤销原子操作的步骤。

    本申请实施例中,撤销原子操作的一种可选处理流程,如图4所示,至少可以包括以下步骤:

    步骤s401,b节点将原子变量恢复至执行原子操作之前的数据。

    在一些实施例中,b节点将原子变量的数据恢复至上述步骤s309中备份的数据。

    步骤s402,b节点恢复任务队列。

    在一些实施例中,b节点将本次执行的原子操作按序恢复至任务队列,以便再次发起原子操作。

    步骤s403,b节点利用随机数撤销对原子变量的锁定。

    步骤s404,b节点发送随机数至a节点和c节点。

    步骤s405,a节点和c节点验证随机数与承诺是否匹配,若匹配,则将原子变量的数据恢复至上述步骤s309中备份的数据。

    步骤s406,a节点和c节点利用随机数撤销对原子变量的锁定。

    步骤s407,a节点和c节点向b节点反馈撤销成功。

    步骤s408,b节点再次触发对原子变量的原子操作。

    本申请实施例中,在步骤s405还可能存在a节点和c节点中的至少一个验证随机数与承诺不匹配的情况,在该场景下,需要向b节点反馈从核销错误,撤销错误的原因是b节点发送的随机数错误;b节点需要发送正确的随机数。

    在本申请实施例提供的区块链中跨链的原子变量实现方法中,若共享原子变量的多条区块链中的至少一条区块链锁定原子变量失败、或者执行原子操作超时、或者与发起原子操作的区块链的执行结果不一致,则共享原子变量的全部区块链均撤销对本次执行的原子操作,使原子变量恢复至本次原子操作之前的数据,保证了数据的一致性。

    需要说明的是,本申请实施例中所涉及的区块链中的节点,如第一节点、第二节点、节点a、节点b和节点c均可以通过云计算技术获取足够的计算能力和存储空间,进而执行本申请实施例所提供的区块链中跨链的原子变量实现方法。本申请实施例中所涉及的区块链中的节点可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或分布式系统,还可以是提供云服务、云数据库、云计算、云存储、云通信以及大数据等基础云计算服务的云服务器;节点开始以智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱以及智能手表等;当然,节点的形态并不限定于上述,还可以是其他任何具备计算能力的设备。各节点之间可以通过有线或无线的方式进行直接或间接的通信。

    应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

    为实现本申请实施例提供的上述区块链中跨链的原子变量实现方法,本申请实施例还提供一种第一区块链的第一节点,图5为本申请实施例提供的第一区块链的第一节点500的结构组成示意图,所述第一节点包括:

    构建单元501,用于构建原子变量的任务队列;

    第一发送单元502,用于向第二区块链的第二节点发送所述原子变量的参数,以使所述第二节点基于所述参数锁定所述原子变量;

    第一处理单元503,用于基于所述任务队列和所述参数对所述原子变量执行所述原子操作。

    在一些可选实施方式中,所述构建单元501,还用于建立跨链原子变量库;

    为所述跨链原子变量库中的原子变量分配序列号,所述序列号用于表征所述原子变量已经被执行原子操作的次数。

    在一些可选实施方式中,所述第一处理单元503,还用于生成随机数;基于所述随机数和所述原子变量的序列号生成所述原子变量的承诺。

    在一些可选实施方式中,所述构建单元501,用于按待执行的原子操作的执行顺序,将所述待执行的原子操作添加至所述原子变量对应的任务队,存储所述任务队列

    在一些可选实施方式中,所述第一发送单元502,用于向所述第二节点发送所述原子变量的序列号和所述原子变量的承诺。

    在一些可选实施方式中,所述第一处理单元503,用于接收所述第二节点发送的所述原子变量的锁定结果,所述锁定结果由所述第二节点基于所述原子变量的序列号和所述原子变量的承诺确定;若所述锁定结果为所述原子变量锁定成功,则按序执行所述任务队列中的所述原子操作,向所述第二节点发送所述任务队列。

    在一些可选实施方式中,所述第一处理单元503,还用于接收所述第二节点发送的对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,则向所述第二节点发送所述原子变量的随机数;将所述原子变量的序列号的值增加执行所述原子操作的次数。

    在一些可选实施方式中若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述第一处理单元503,还用于将所述原子变量的值恢复至执行所述原子操作之前的数据,将所述第一节点对所述原子变量执行的原子操作恢复至任务队列。

    在一些可选实施方式中,若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述第一处理单元503,还用于将所述原子变量对应的随机数发送至所述第二节点,所述随机数用于所述第二节点撤销对所述原子变量执行的所述原子操作。

    为实现本申请实施例提供的上述区块链中跨链的原子变量实现方法,本申请实施例还提供一种第二区块链的第二节点,图6为本申请实施例提供的第二区块链的第二节点600的结构组成示意图,所述第二节点包括:

    第一接收单元601,用于接收第一区块链的第一节点发送的原子变量的参数;

    第二处理单元602,用于基于所述参数锁定所述原子变量。

    在一些可选实施方式中,所述第一接收单元601,用于接收所述第一节点发送所述原子变量的序列号和所述原子变量的承诺。

    在一些可选实施方式中,所述第二处理单元602,用于判断所述原子变量是否被锁定;

    若所述原子变量未被锁定,基于所述承诺锁定所述原子变量。

    在一些可选实施方式中,所述第二节点还包括:

    第二发送单元603,用于向所述第一节点发送所述原子变量的锁定结果;

    若所述锁定结果为所述原子变量锁定成功,所述第一接收单元601还用于接收所述第一节点发送的所述原子变量的任务队列;

    所述第二处理单元602,还用于基于所述任务队列和所述参数对所述原子变量执行原子操作。

    在一些可选实施方式中,所述第二发送单元603,还用于向所述第一节点发送对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,所述第一接收单元601还用于接收所述第一节点发送的所述原子变量的随机数;

    所述第二处理单元602,还用于基于所述随机数解锁所述原子变量,将所述原子变量的序列号的值增加执行所述原子操作的次数。

    在一些可选实施方式中,若所述执行结果与所述第一节点的执行结果不一致、或者所述锁定结果为所述原子变量锁定不成功,

    所述第一接收单元601,还用于接收所述第一节点发送的所述原子变量的随机数;

    所述第二处理单元602,还用于基于所述随机数撤销对所述原子变量执行的所述原子操作。

    本领域技术人员应当理解,图5所示的第一节点和图6所示的第二节点中的各单元的实现功能可参照前述匿名转账方法的相关描述而理解。图5所示的第一节点和图6所示的第二节点中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。

    本申请实施例上述的第一节点和第二节点如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,readonlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

    相应地,本申请实施例还提供一种计算机程序产品,其中存储有计算机可执行指令,该计算机可执行指令被执行时能够实现本申请实施例的上述区块链中跨链的原子变量实现方法。

    相应地,本申请实施例还提供一种存储介质,所述存储介质上存储有可执行指令,该可执行指令被处理器执行本申请实施例的上述区块链中跨链的原子变量实现的步骤。

    为实现本申请实施例提供的上述区块链中跨链的原子变量实现方法,本申请实施例还提供一种电子设备(第一节点或第二节点),图7为本申请实施例的电子设备的结构组成示意图,如图7所示,电子设备70可以包括一个或多个(图中仅示出一个)处理器702(处理器702可以包括但不限于微处理器(mcu,microcontrollerunit)或可编程逻辑器件(fpga,fieldprogrammablegatearray)等的处理装置)、用于存储数据的存储器704、以及用于通信功能的传输装置706。本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述电子设备的结构造成限定。例如,电子设备70还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。

    存储器704可用于存储应用软件的软件程序以及模块,如本申请实施例中的方法对应的程序指令/模块,处理器702通过运行存储在存储器704内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器704可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器704可进一步包括相对于处理器702远程设置的存储器,这些远程存储器可以通过网络连接至电子设备70。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

    传输装置706用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子设备70的通信供应商提供的无线网络。在一个实例中,传输装置706包括一个网络适配器(nic,networkinterfacecontroller),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置706可以为射频(rf,radiofrequency)模块,其用于通过无线方式与互联网进行通讯。

    本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。

    在本申请所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

    上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

    另外,在本申请各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

    以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。


    技术特征:

    1.一种区块链中跨链的原子变量实现方法,其特征在于,所述方法包括:

    第一区块链的第一节点构建原子变量的任务队列;

    所述第一节点向第二区块链的第二节点发送所述原子变量的参数,以使所述第二节点基于所述参数锁定所述原子变量;

    所述第一节点基于所述任务队列和所述参数对所述原子变量执行所述原子操作。

    2.根据权利要求1所述的方法,其特征在于,所述第一区块链的第一节点构建原子变量的任务队列之前,所述方法还包括:

    所述第一节点建立跨链原子变量库;

    为所述跨链原子变量库中的原子变量分配序列号,所述序列号用于表征所述原子变量已经被执行原子操作的次数。

    3.根据权利要求1所述的方法,其特征在于,所述第一区块链的第一节点构建原子变量的任务队列之前,所述方法还包括:

    所述第一节点生成随机数;

    基于所述随机数和所述原子变量的序列号生成所述原子变量的承诺。

    4.根据权利要求1至3任一项所述的方法,其特征在于,所述第一区块链的第一节点构建原子变量的任务队列,包括:

    所述第一节点按待执行的原子操作的执行顺序,将所述待执行的原子操作添加至所述原子变量对应的任务队列;

    所述第一节点存储所述任务队列。

    5.根据权利要求1至3任一项所述的方法,其特征在于,所述第一节点向第二区块链的第二节点发送所述原子变量的参数,包括:

    所述第一节点向所述第二节点发送所述原子变量的序列号和所述原子变量的承诺。

    6.根据权利要求1至3任一项所述的方法,其特征在于,所述第一节点基于所述任务队列和所述参数对所述原子变量执行所述原子操作,包括:

    所述第一节点接收所述第二节点发送的所述原子变量的锁定结果,所述锁定结果由所述第二节点基于所述原子变量的序列号和所述原子变量的承诺确定;

    若所述锁定结果为所述原子变量锁定成功,则所述第一节点按序执行所述任务队列中的所述原子操作,向所述第二节点发送所述任务队列。

    7.根据权利要求6所述的方法,其特征在于,所述第一节点基于所述任务队列和所述参数对所述原子变量执行所述原子操作之后,所述方法还包括:

    所述第一节点接收所述第二节点发送的对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,则所述第一节点向所述第二节点发送所述原子变量的随机数;

    将所述原子变量的序列号的值增加执行所述原子操作的次数。

    8.根据权利要求7所述的方法,其特征在于,若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述方法还包括:

    所述第一节点将所述原子变量的值恢复至执行所述原子操作之前的数据,将所述第一节点对所述原子变量执行的原子操作恢复至任务队列。

    9.根据权利要求7所述的方法,其特征在于,若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述方法还包括:

    所述第一节点将所述原子变量对应的随机数发送至所述第二节点,所述随机数用于所述第二节点撤销对所述原子变量执行的所述原子操作。

    10.一种区块链中跨链的原子变量实现方法,其特征在于,所述方法包括:

    第二区块链的第二节点接收第一区块链的第一节点发送的原子变量的参数;

    基于所述参数锁定所述原子变量。

    11.根据权利要求10所述的方法,其特征在于,所述第二区块链的第二节点接收第一区块链的第一节点发送的原子变量的参数,包括:

    所述第二节点接收所述第一节点发送所述原子变量的序列号和所述原子变量的承诺。

    12.根据权利要求11所述的方法,其特征在于,所述基于所述参数锁定所述原子变量,包括:

    所述第二节点判断所述原子变量是否被锁定;

    若所述原子变量未被锁定,基于所述承诺锁定所述原子变量。

    13.根据权利要求11或12所述的方法,其特征在于,所述基于所述参数锁定所述原子变量之后,所述方法还包括:

    所述第二节点向所述第一节点发送所述原子变量的锁定结果;

    若所述锁定结果为所述原子变量锁定成功,则接收所述第一节点发送的所述原子变量的任务队列;

    基于所述任务队列和所述参数对所述原子变量执行原子操作。

    14.根据权利要求13所述的方法,其特征在于,所述基于所述任务队列和所述参数对所述原子变量执行原子操作之后,所述方法还包括:

    所述第二节点向所述第一节点发送对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,则接收所述第一节点发送的所述原子变量的随机数;

    基于所述随机数解锁所述原子变量,将所述原子变量的序列号的值增加执行所述原子操作的次数。

    15.根据权利要求14所述的方法,其特征在于,若所述执行结果与所述第一节点的执行结果不一致、或者所述锁定结果为所述原子变量锁定不成功,所述方法还包括:

    所述第二节点接收所述第一节点发送的所述原子变量的随机数;

    基于所述随机数撤销对所述原子变量执行的所述原子操作。

    16.一种第一区块链的第一节点,其特征在于,所述第一节点包括:

    构建单元,用于构建原子变量的任务队列;

    第一发送单元,用于向第二区块链的第二节点发送所述原子变量的参数,以使所述第二节点基于所述参数锁定所述原子变量;

    第一处理单元,用于基于所述任务队列和所述参数对所述原子变量执行所述原子操作。

    17.根据权利要求16所述的第一节点,其特征在于,所述构建单元,还用于建立跨链原子变量库;

    为所述跨链原子变量库中的原子变量分配序列号,所述序列号用于表征所述原子变量已经被执行原子操作的次数。

    18.根据权利要求16所述的第一节点,其特征在于,所述第一处理单元,还用于生成随机数;基于所述随机数和所述原子变量的序列号生成所述原子变量的承诺。

    19.根据权利要求16至18任一项所述的第一节点,其特征在于,所述构建单元,用于按待执行的原子操作的执行顺序,将所述待执行的原子操作添加至所述原子变量对应的任务队,存储所述任务队列。

    20.根据权利要求16至18任一项所述的第一节点,其特征在于,所述第一发送单元,用于向所述第二节点发送所述原子变量的序列号和所述原子变量的承诺。

    21.根据权利要求16至18任一项所述的第一节点,其特征在于,所述第一处理单元,用于接收所述第二节点发送的所述原子变量的锁定结果,所述锁定结果由所述第二节点基于所述原子变量的序列号和所述原子变量的承诺确定;若所述锁定结果为所述原子变量锁定成功,则按序执行所述任务队列中的所述原子操作,向所述第二节点发送所述任务队列。

    22.根据权利要求21所述的第一节点,其特征在于,所述第一处理单元,还用于接收所述第二节点发送的对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,则向所述第二节点发送所述原子变量的随机数;将所述原子变量的序列号的值增加执行所述原子操作的次数。

    23.根据权利要求22所述的第一节点,其特征在于,若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述第一处理单元,还用于将所述原子变量的值恢复至执行所述原子操作之前的数据,将所述第一节点对所述原子变量执行的原子操作恢复至任务队列。

    24.根据权利要求22所述的第一节点,其特征在于,若所述锁定结果为所述原子变量锁定不成功、或所述执行结果与所述第一节点的执行结果不一致,所述第一处理单元,还用于将所述原子变量对应的随机数发送至所述第二节点,所述随机数用于所述第二节点撤销对所述原子变量执行的所述原子操作。

    25.一种第二区块链的第二节点,其特征在于,所述第二节点包括:

    第一接收单元,用于接收第一区块链的第一节点发送的原子变量的参数;

    第二处理单元,用于基于所述参数锁定所述原子变量。

    26.根据权利要求25所述的第二节点,其特征在于,所述第一接收单元,用于接收所述第一节点发送所述原子变量的序列号和所述原子变量的承诺。

    27.根据权利要求26所述的第二节点,其特征在于,所述第二处理单元,用于判断所述原子变量是否被锁定;

    若所述原子变量未被锁定,基于所述承诺锁定所述原子变量。

    28.根据权利要求26或27所述的第二节点,其特征在于,所述第二节点还包括:

    第二发送单元,用于向所述第一节点发送所述原子变量的锁定结果;

    若所述锁定结果为所述原子变量锁定成功,所述第一接收单元还用于接收所述第一节点发送的所述原子变量的任务队列;

    所述第二处理单元,还用于基于所述任务队列和所述参数对所述原子变量执行原子操作。

    29.根据权利要求28所述的第二节点,其特征在于,所述第二发送单元,还用于向所述第一节点发送对所述原子变量的原子操作的执行结果;

    若所述执行结果与所述第一节点的执行结果一致,所述第一接收单元还用于接收所述第一节点发送的所述原子变量的随机数;

    所述第二处理单元,还用于基于所述随机数解锁所述原子变量,将所述原子变量的序列号的值增加执行所述原子操作的次数。

    30.根据权利要求29所述的第二节点,其特征在于,若所述执行结果与所述第一节点的执行结果不一致、或者所述锁定结果为所述原子变量锁定不成功,

    所述第一接收单元,还用于接收所述第一节点发送的所述原子变量的随机数;

    所述第二处理单元,还用于基于所述随机数撤销对所述原子变量执行的所述原子操作。

    31.一种存储介质,其特征在于,所述存储介质上存储有可执行指令,该可执行指令被处理器执行时实现权利要求1至9任一项所述的方法步骤;

    或者,该可执行指令被处理器执行时实现权利要求10至15任一项所述的方法步骤。

    32.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时可实现权利要求1至9任一项所述的方法步骤;

    或者,所述处理器运行所述存储器上的计算机可执行指令时可实现权利要求10至15任一项所述的方法步骤。

    33.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令被执行后,能够实现权利要求1至9任一项所述的方法步骤;

    或者,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令被执行后,能够实现权利要求10至15任一项所述的方法步骤。

    技术总结
    本申请公开了一种区块链中跨链的原子变量实现方法及装置、电子设备,所述方法包括:第一区块链的第一节点构建原子变量的任务队列;所述第一节点向第二区块链的第二节点发送所述原子变量的参数,以使所述第二节点基于所述参数锁定所述原子变量;所述第一节点基于所述任务队列和所述参数对所述原子变量执行所述原子操作。通过本申请提供的区块链中跨链的原子变量实现方法,使得若一个变量被多条区块链的智能合约共同持有,则在一条区块链操作该变量时,共享该变量的其他区块链能够同步所述变量的操作结果,实现跨链间变量操作的原子性。

    技术研发人员:石翔;李辉忠;张开翔;范瑞彬
    受保护的技术使用者:深圳前海微众银行股份有限公司
    技术研发日:2020.12.10
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-21865.html

    最新回复(0)