掌桥专利:专业的专利平台
掌桥专利
首页

跨链互操作的交易处理方法、装置、电子设备和存储介质

文献发布时间:2023-06-19 09:57:26


跨链互操作的交易处理方法、装置、电子设备和存储介质

技术领域

本发明涉及区块链交易技术领域,尤其是涉及一种跨链互操作的交易处理方法、装置、电子设备和存储介质。

背景技术

在区块链所面临的诸多问题中,区块链之间互通性极大程度的限制了区块链的应用空间。不论对于公有链还是私有链来看,跨链技术就是实现价值互联网的关键,它是把区块链从分散的孤岛中拯救出来的良药,是区块链向外拓展和连接的桥梁。通常发生在区块链上的交易过程均会改变区块链的状态,具体来说在链A上触发交易A的交易过程1,状态由S1变成S1’,中继触发跨链链B上交易A的交易过程2和跨链链C上交易A 的交易过程3,而在跨链交易执行的同时,链A上另一个交易B因为可以脏读,所以读取到状态S1’,执行成功后,状态由S1’变成S1”,而后链B交易过程2或者链C交易过程3执行失败,此时链A状态已经不能回退到S1,无法保证原子性。这种无法保证原子性的跨链交易过程会使得转账过程中出现转账成功,但收款方实际未收到的情况,给用户带来损失。

可见,现有的跨链交易的过程无法保证原子性,容易造成链上交易信息与实际交易情况不符合。

发明内容

本发明实施例提供一种跨链互操作的交易处理方法、装置、电子设备和存储介质,用以解决现有的跨链交易的过程无法保证原子性,容易造成链上交易信息与实际交易情况不符合的问题。

针对以上技术问题,第一方面,本发明实施例提供一种跨链互操作的交易处理方法,包括:

对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,以阻塞所述目标交易之外的交易对所述第一状态信息进行操作;

若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息;其中,所述第二状态信息为执行所述目标交易对所述第一状态信息进行操作生成的新状态信息;

其中,所述主交易为所述目标交易中的第一个交易过程;分支交易为所述目标交易中除了所述主交易之外的交易过程。

可选地,所述在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,包括:

当所述任一区块链用于执行所述主交易时,在用户对所述任一区块链发起所述主交易后,将所述任一区块链当前的第一状态信息锁定,并生成主交易准备事件;其中,所述主交易准备事件至少包括如下任一信息:所述主交易的标识信息、每一分支交易的元数据、确认主交易请求元数据、跨链原子交易状态查询请求元数据;

在所述主交易执行成功后,将所述主交易准备事件抛出,所述任一区块链的链下中继监听到所述主交易准备事件后,获取主交易证据信息,提取触发每一分支交易的元数据,并在用于执行每一分支交易的区块链上触发分支交易,并开始监听每一分支交易的交易状态。

可选地,所述在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,包括:

当所述任一区块链用于执行任一分支交易时,在所述任一区块链成功发起所述分支交易后,将所述任一区块链当前的第一状态信息锁定,并生成分支交易准备事件;其中,所述分支交易准备事件至少包括如下任一信息:所述主交易的标识信息、跨链原子交易状态查询请求元数据、确认分支交易请求元数据;

在所述任一区块链上的所述分支交易执行成功后,将所述分支交易准备事件抛出,所述任一区块链的链下中继监听到所述分支交易准备事件后,开始监听所述目标交易是否执行成功。

可选地,所述若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,包括:

当所述任一区块链用于执行所述主交易时,若监听到每一分支交易的交易状态为执行成功,则判定所述目标交易成功,通过提交操作提交所述第二状态信息,以将所述任一区块链的状态信息更新为第二状态信息。

可选地,所述若所述目标交易失败,则保持所述任一区块链的状态信息为所述第一状态信息,包括:

当所述任一区块链用于执行所述主交易时,若经过预设时长没有监听到每一分支交易的交易状态均为执行成功,则判定所述目标交易失败,通过回滚操作保持所述任一区块链的状态信息为所述第一状态信息。

可选地,所述若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,包括:

当所述任一区块链用于执行任一分支交易时,若监听到用于执行所述主交易的区块链通过提交操作更新状态信息,则判定所述目标交易成功,提交所述第二状态信息,以将所述任一区块链的状态信息更新为第二状态信息。

可选地,所述若所述目标交易失败,则保持所述任一区块链的状态信息为所述第一状态信息,包括:

当所述任一区块链用于执行任一分支交易时,若监听到用于执行所述主交易的区块链通过回滚操作保持原有状态信息,则判定所述目标交易失败,通过回滚操作保持所述任一区块链的状态信息为所述第一状态信息。

第二方面,本发明实施例提供一种跨链互操作的交易处理装置,包括:

锁定模块,用于对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,以阻塞所述目标交易之外的交易对所述第一状态信息进行操作;

原子性模块,用于若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息;其中,所述第二状态信息为执行所述目标交易对所述第一状态信息进行操作生成的新状态信息;

其中,所述主交易为所述目标交易中的第一个交易过程;分支交易为所述目标交易中除了所述主交易之外的交易过程。

第三方面,本实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如以上任一项所述的跨链互操作的交易处理方法的步骤。

第四方面,本实施例提供了一种非暂态可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上任一项所述的跨链互操作的交易处理方法的步骤。

本发明的实施例提供了一种跨链互操作的交易处理方法、装置、电子设备和存储介质,对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息。多条链上产生的交易必须全部成功更新为新状态信息或者全部取消保持原状态信息,即交易成功时对全部链更新状态,交易失败时保持全部链为原有状态,保证了跨链交易的原子性,能够保证链上交易信息与实际交易情况相吻合。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的跨链互操作的交易处理方法的流程示意图;

图2是本发明另一实施例提供的跨链互操作的交易处理装置的结构框图;

图3是本发明另一实施例提供的电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

现有的无法保证原子性的交易过程可以简单描述如下:

链A交易A的交易过程1状态S1->S1’;

链B交易A的交易过程2状态S2->S2’;

链C交易A的交易过程3状态S3->S3’;

在交易A执行过程中,链A发生另一交易B,链A状态S1’->S1”,但此时发现交易过程2或者交易过程3失败,即实际上整个交易A执行失败,但是由于交易B此时已经将链A的状态置为S1”,导致链A的状态无法还原到交易A执行之前的状态S1,无法保证原子性,为用户带来经济损失。

跨链互操作原子性指的是跨链互操作中会在多条区块链上产生交易 (每笔交易都会改变各自链上的状态),原子性代表多条链上产生的交易必须全部成功或者全部取消,多条链上的状态要么同时编程新的状态,要么同时保持原有状态不变。本申请提供了在多条链跨链互操作的过程中,保证原子性同时保证一致性的一种跨链互操作的交易处理方法(交易过程中不会出现脏读)。

图1为本实施例提供的跨链互操作的交易处理方法的流程示意图,参见图1,该方法包括:

步骤101:对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,以阻塞所述目标交易之外的交易对所述第一状态信息进行操作;

步骤102:若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息;其中,所述第二状态信息为执行所述目标交易对所述第一状态信息进行操作生成的新状态信息;

其中,所述主交易为所述目标交易中的第一个交易过程;分支交易为所述目标交易中除了所述主交易之外的交易过程。

目标交易可以为一个转账过程,例如,用户A向用户B转账,通常涉及到对多个区块链的状态进行操作。

目标交易执行过程中,执行目标交易主交易的区块链和执行目标交易分支交易的区块链均处于锁定状态,使得其它交易无法对区块链的状态进行操作(例如,读写操作),只有当整个目标交易成功后,才更新全部区块链的状态信息,保证了区块链的原子性。

本施例提供了一种跨链互操作的交易处理方法,对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息。多条链上产生的交易必须全部成功更新为新状态信息或者全部取消保持原状态信息,即交易成功时对全部链更新状态,交易失败时保持全部链为原有状态,保证了跨链交易的原子性,能够保证链上交易信息与实际交易情况相吻合。

进一步地,在上述各实施例的基础上,所述在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,包括:

当所述任一区块链用于执行所述主交易时(例如,该任一区块链为上述的链A),在用户对所述任一区块链发起所述主交易后,将所述任一区块链当前的第一状态信息锁定,并生成主交易准备事件;其中,所述主交易准备事件至少包括如下任一信息:所述主交易的标识信息、每一分支交易的元数据、确认主交易请求元数据、跨链原子交易状态查询请求元数据;

在所述主交易执行成功后,将所述主交易准备事件抛出,所述任一区块链的链下中继监听到所述主交易准备事件后,获取主交易证据信息,提取触发每一分支交易的元数据,并在用于执行每一分支交易的区块链上触发分支交易,并开始监听每一分支交易的交易状态。

本实施例在假设任一区块链执行的是目标交易的主交易时,对主交易执行过程中任一区块链上的执行过程进行限定,该任一区块链上的第一状态信息锁定,使得其它交易无法在确定目标交易是否执行成功前读写该第一状态信息,避免被其它交易操作后无法还原的情况,同时主交易执行后主动触发分支交易,保证整个交易过程的顺利进行。

进一步地,在上述各实施例的基础上,所述在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,包括:

当所述任一区块链用于执行任一分支交易时(例如,该任一区块链为上述的链B或链C时),在所述任一区块链成功发起所述分支交易后,将所述任一区块链当前的第一状态信息锁定,并生成分支交易准备事件;其中,所述分支交易准备事件至少包括如下任一信息:所述主交易的标识信息、跨链原子交易状态查询请求元数据、确认分支交易请求元数据;

在所述任一区块链上的所述分支交易执行成功后,将所述分支交易准备事件抛出,所述任一区块链的链下中继监听到所述分支交易准备事件后,开始监听所述目标交易是否执行成功。

本实施例在假设任一区块链执行的是目标交易的分支交易时,对分支交易执行过程中任一区块链上的执行过程进行限定,该任一区块链上的第一状态信息锁定,使得其它交易无法在确定目标交易是否执行成功前读写该第一状态信息,避免被其它交易操作后无法还原的情况。

进一步地,在上述各实施例的基础上,所述若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,包括:

当所述任一区块链用于执行所述主交易时(例如,该任一区块链为上述的链A),若监听到每一分支交易的交易状态为执行成功,则判定所述目标交易成功,通过提交操作提交所述第二状态信息,以将所述任一区块链的状态信息更新为第二状态信息。

进一步地,当所述任一区块链用于执行所述主交易时,在通过提交操作提交所述第二状态信息后,解除对所述任一区块链上的状态信息的锁定。

本实施例中,在主交易执行成功后,若监听到每一分支交易均执行成功,则可以对当前的第一状态信息进行更新,完成目标交易的整个过程。

进一步地,在上述各实施例的基础上,所述若所述目标交易失败,则保持所述任一区块链的状态信息为所述第一状态信息,包括:

当所述任一区块链用于执行所述主交易时,若经过预设时长没有监听到每一分支交易的交易状态均为执行成功,则判定所述目标交易失败,通过回滚操作保持所述任一区块链的状态信息为所述第一状态信息。

进一步地,在通过回滚操作保持所述任一区块链的状态信息为所述第一状态信息后,解除对所述任一区块链上的状态信息的锁定。

本实施例中,监听到任一分支交易的交易状态不是执行成功的情况下,可以判定目标交易失败,进而通过回滚操作保持任一区块链为第一状态信息不变,避免交易不成功时对链的交易状态的更新,保证了链的原子性。

进一步地,在上述各实施例的基础上,所述若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,包括:

当所述任一区块链用于执行任一分支交易时(例如,该任一区块链为上述的链B或链C时),若监听到用于执行所述主交易的区块链通过提交操作更新状态信息,则判定所述目标交易成功,提交所述第二状态信息,以将所述任一区块链的状态信息更新为第二状态信息。

进一步地,当所述任一区块链用于执行任一分支交易时。在提交所述第二状态信息后,解除对所述任一区块链上的状态信息的锁定。

对于执行分支交易的区块链,执行主交易的区块链更新了状态信息后,表示目标交易成功,执行分支交易的区块链也需要将状态信息更新为第二状态信息,保证在交易成功后,分支交易的区块链和主交易的区块链均进行状态更新,保证原子性。

进一步地,在上述各实施例的基础上,所述若所述目标交易失败,则保持所述任一区块链的状态信息为所述第一状态信息,包括:

当所述任一区块链用于执行任一分支交易时,若监听到用于执行所述主交易的区块链通过回滚操作保持原有状态信息,则判定所述目标交易失败,通过回滚操作保持所述任一区块链的状态信息为所述第一状态信息。

进一步地,当所述任一区块链用于执行任一分支交易时。在通过回滚操作保持所述任一区块链的状态信息为所述第一状态信息后,解除对所述任一区块链上的状态信息的锁定。

对于执行分支交易的区块链,执行主交易的区块链进行了回滚,则标识表示目标交易失败,进而通过回滚操作保持任一区块链为第一状态信息不变,避免交易不成功时对链的交易状态的更新,保证了链的原子性。

实际上,本实施例中为了保证跨链交易原子性,设计了链上智能合约事务管理协议和状态锁定协议,事务管理协议对整个跨链互操作的交易原子性提供事务协调接口定义,而状态锁定协议对跨链交易中状态的改变提供读写锁定接口定义。

1)对于事务管理协议

StartGlobalTransaction方法用于主交易方法的前置处理,初始化跨链原子交易对象,参数传入跨链原子交易超时的链高度和时间戳。

RegisterBranchTransaction方法用于在主交易方法中注册所有分支交易的调用元数据,包括分支交易的网络,区块链,合约,方法和方法参数。

PreparePrimaryTransaction方法用于主交易方法的后置处理,将跨链原子交易对象的状态设定为’主交易已准备’,同时抛出主交易已准备事件。

StartBranchTransaction方法用于分支交易的前置处理,验证主交易是否完成。

PrepareBranchTransaction方法用于分支交易的后置处理,抛出分支交易已准备事件。

ConfirmPrimaryTransaction方法用于处理在链下中继收集到所有分支交易的执行结果后提交的主交易确认请求。

ConfirmBranchTransaction方法用于处理在链下中继获取到跨链原子交易的最终状态后提交的分支交易确认请求。

上述交易主要的数据结构如下所示:

message GlobalTransaction{TransactionID primary_prepare_tx_id=1;

BranchTransaction primary_confirm_tx=2;

repeated BranchTransaction branch_prepare_txs=3;

repeated BranchTransaction branch_confirm_txs=4;

uint64 ttl_height=5;

google.protobuf.Timestamp ttl_time=6;}

message Invocation{string contract=1;string func=2;repeated stringargs=3;}

message BranchTransaction{TransactionID tx_id=1;

Invocation invocation=2;

string proof=3;}

message URI{

string network=1;

string chain=2;

}

message TransactionID{

URI uri=1;

string id=2;

}

其中,1.URI用于定位跨链互操作中的区块链

2.TransactionID包含URI对象和当前链上的交易ID,可以定位跨链互操作中的任意一笔交易

3.Invocation封装一个跨链互操作中的交易调用信息

4.BranchTransaction封装跨链交易中的单个交易,包括分支交易的调用信息,分支交易的交易ID,分支交易执行的证据。

5.GlobalTransaction封装跨链原子交易,包含主交易的交易ID,主交易的确认交易,所有参与的分支交易。所有分支交易的确认交易,跨链原子交易的存活时间和存活高度。

2)关于状态锁定协议

状态锁定协议大致包括如下内容:

type LockManager interface{

PutLockedStateWithPrimaryLock(key string,value[]byte)error

PutLockedStateWithBranchLock(key string,value[]byte, primaryNetworkstring,primaryChain string,primaryTxID string)error

GetStateMaybeLocked(key string)([]byte,error)

PutStateMaybeLocked(key string,value[]byte)error

}

其中,PutLockedStateWithPrimaryLock方法用于在主交易中对于状态进行锁定。

PutLockedStateWithBranchLock方法用于在分支交易中对于状态进行锁定。

GetStateMaybeLocked方法用于在非跨链交易中读取跨链交易有可能修改的状态,在状态被跨链交易锁定后,读取时会阻塞或者返回超时错误。

PutStateMaybeLocked方法用于在非跨链交易中写入跨链交易有可能修改的状态,在状态被跨链交易锁定后,写入时会阻塞或者返回超时错误。

锁数据结构可以表示如下:

message Lock{

TransactionID primary_prepare_tx_id=1;

bytes prev_state=2;

bytes updating_state=3;

}

其中,最简单的锁数据结构包括主交易ID,状态的原值,状态需要更新的值。

3)还设计了链上和链下中继跨链交互事件协议,协调链上跨链原子交易状态和链下跨链中继传输。

整个跨链互操作,需要链下中继和将链上的数据进行在不同链之间进行中转,本申请一套跨链交互中的标准事件的数据协议。

message PrimaryTransactionPreparedEvent{

TransactionID primary_prepare_tx_id=1;

BranchTransaction primary_confirm_tx=2;

Invocation global_tx_status_query=3;

repeated BranchTransaction branch_prepare_txs=4;

repeated BranchTransaction branch_confirm_txs=5;

}

message PrimaryTransactionConfirmedEvent{

TransactionID primary_confirm_tx_id=1;

repeated BranchTransaction branch_confirm_txs=2;

}

message BranchTransactionPreparedEvent{

TransactionID primary_prepare_tx_id=1;

Invocation global_tx_status_query=2;

BranchTransaction confirm_tx=3;

}

其中,PrimaryTransactionPreparedEvent会在主交易中执行PreparePrimaryTransaction方法时抛出,这个事件中包含了主交易ID,所有分支交易元数据,确认主交易请求元数据和跨链原子交易状态查询请求元数据。主交易所在网络的链下中继会监听这个事件,接收到事件后,首先需要从主交易ID获取到主交易上链并执行成功的证据,然后提取分支交易元数据,并行调用所有分支交易,除了原有的分支交易参数外,同时将主交易证据和跨链原子交易状态查询请求元数据作为附加参数一起提交。

BranchTransactionPreparedEvent会在分支交易执行PrepareBranchTransaction方法时抛出,这个事件中包含了主交易ID,跨链原子交易状态查询请求元数据和确认分支交易请求元数据。分支交易所在网络的链下中继会监听这个事件,接收到事件后,中继会生成一个任务不断的调用跨链原子交易状态查询请求,一旦查询到跨链原子交易的最终状态,就提交确认分支交易请求。

PrimaryTransactionConfirmedEvent会在主交易执行ConfirmPrimaryTransaction方法时抛出,这个事件包含了主交易确认请求 ID和所有分支交易确认请求元数据,主交易所在网络的链下中继会监听这个事件,接收到事件后,首先需要从主交易确认请求ID获取到主交易确认请求上链并执行成功的证据,然后提取分支交易确认请求元数据,并行调用所有分支交易确认请求。

整个跨链互操作流程如下:

1.用户在链A上发起第一笔交易(主交易),执行主交易时,首先将链A上的状态S1进行锁定,而后将触发链B和链C分支交易的元数据写入主交易准备事件。当主交易成功执行后,直到整个跨链原子交易结束,所有在链A上发起的其他交易,如果对状态S1进行读写,这些交易都会被阻塞,即保证了链A上状态S1的一致性。

2.链A所在网络的链下中继监听到主交易准备事件后,获取主交易证据信息,同时提取触发链B和链C分支交易的元数据,同时在链B和链C 上发起分支交易。链B和链C执行分支交易时,状态S2和状态S3也都会被锁定直到整个跨链原子交易结束。所有在链B和链C上发起的其他交易,如果对状态S2或者S3进行读写,这些交易也都会被阻塞,即保证了链B和链C上状态S2和状态S3的一致性。

3.链B和链C上的分支交易执行成功后,会抛出分支交易准备事件,链B和链C所在网络的链下中继,会接收此事件,开始监听跨链原子交易的执行状态,当得知跨链原子交易的状态后,触发分支交易的提交或者回滚请求。

4.链A所在网络的链下中继也会监听链B和链C上分支交易的执行状态,当收集到所有分支交易执行状态后,会触发主交易的提交或者回滚请求。

5.当主交易确认请求(提交或者回滚)执行结束后,原子跨链交易状态最终确定,同时触发主交易确认事件,主交易所在网络的链下中继会接收此事件,会发起所有分支交易确认请求(提交或者回滚)。

6.在整个跨链原子交易生命周期中,链A,链B,链C上的状态都是被锁定的,保证了状态的一致性。同时主交易的最终的执行状态和整个跨链原子交易进行绑定,保证所有参与的链都能获取到一直的跨链原子交易状态。同时因为状态锁会有确定性的时间保证,锁定超时后,回滚保证能成功回到锁定前的状态,保证了一致性和终结性(整个跨链原子交易在有限时间内必然会提交或者回滚)。

图2为本实施例提供的跨链互操作的交易处理装置的结构框图,参见图2,该装置包括锁定模块201和原子性模块202,其中,

锁定模块201,用于对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,以阻塞所述目标交易之外的交易对所述第一状态信息进行操作;

原子性模块202,用于若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息;其中,所述第二状态信息为执行所述目标交易对所述第一状态信息进行操作生成的新状态信息;

其中,所述主交易为所述目标交易中的第一个交易过程;分支交易为所述目标交易中除了所述主交易之外的交易过程。

本实施例提供的跨链互操作的交易处理装置适用于上述各实施例提供的跨链互操作的交易处理方法,在此不再赘述。

本实施例提供了一种跨链互操作的交易处理装置,对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息。多条链上产生的交易必须全部成功更新为新状态信息或者全部取消保持原状态信息,即交易成功时对全部链更新状态,交易失败时保持全部链为原有状态,保证了跨链交易的原子性,能够保证链上交易信息与实际交易情况相吻合。

进一步地,所述在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,包括:

当所述任一区块链用于执行所述主交易时,在用户对所述任一区块链发起所述主交易后,将所述任一区块链当前的第一状态信息锁定,并生成主交易准备事件;其中,所述主交易准备事件至少包括如下任一信息:所述主交易的标识信息、每一分支交易的元数据、确认主交易请求元数据、跨链原子交易状态查询请求元数据;

在所述主交易执行成功后,将所述主交易准备事件抛出,所述任一区块链的链下中继监听到所述主交易准备事件后,获取主交易证据信息,提取触发每一分支交易的元数据,并在用于执行每一分支交易的区块链上触发分支交易,并开始监听每一分支交易的交易状态。

进一步地,所述在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,包括:

当所述任一区块链用于执行任一分支交易时,在所述任一区块链成功发起所述分支交易后,将所述任一区块链当前的第一状态信息锁定,并生成分支交易准备事件;其中,所述分支交易准备事件至少包括如下任一信息:所述主交易的标识信息、跨链原子交易状态查询请求元数据、确认分支交易请求元数据;

在所述任一区块链上的所述分支交易执行成功后,将所述分支交易准备事件抛出,所述任一区块链的链下中继监听到所述分支交易准备事件后,开始监听所述目标交易是否执行成功。

进一步地,所述若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,包括:

当所述任一区块链用于执行所述主交易时,若监听到每一分支交易的交易状态为执行成功,则判定所述目标交易成功,通过提交操作提交所述第二状态信息,以将所述任一区块链的状态信息更新为第二状态信息。

进一步地,所述若所述目标交易失败,则保持所述任一区块链的状态信息为所述第一状态信息,包括:

当所述任一区块链用于执行所述主交易时,若经过预设时长没有监听到每一分支交易的交易状态均为执行成功,则判定所述目标交易失败,通过回滚操作保持所述任一区块链的状态信息为所述第一状态信息。

进一步地,所述若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,包括:

当所述任一区块链用于执行任一分支交易时,若监听到用于执行所述主交易的区块链通过提交操作更新状态信息,则判定所述目标交易成功,提交所述第二状态信息,以将所述任一区块链的状态信息更新为第二状态信息。

进一步地,所述若所述目标交易失败,则保持所述任一区块链的状态信息为所述第一状态信息,包括:

当所述任一区块链用于执行任一分支交易时,若监听到用于执行所述主交易的区块链通过回滚操作保持原有状态信息,则判定所述目标交易失败,通过回滚操作保持所述任一区块链的状态信息为所述第一状态信息。

图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)301、通信接口(Communications Interface) 302、存储器(memory)303和通信总线304,其中,处理器301,通信接口 302,存储器303通过通信总线304完成相互间的通信。处理器301可以调用存储器303中的逻辑指令,以执行如下方法:对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,以阻塞所述目标交易之外的交易对所述第一状态信息进行操作;若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息;其中,所述第二状态信息为执行所述目标交易对所述第一状态信息进行操作生成的新状态信息;其中,所述主交易为所述目标交易中的第一个交易过程;分支交易为所述目标交易中除了所述主交易之外的交易过程。

此外,上述的存储器303中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

进一步地,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,以阻塞所述目标交易之外的交易对所述第一状态信息进行操作;若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息;其中,所述第二状态信息为执行所述目标交易对所述第一状态信息进行操作生成的新状态信息;其中,所述主交易为所述目标交易中的第一个交易过程;分支交易为所述目标交易中除了所述主交易之外的交易过程。

另一方面,本发明实施例还提供一种非暂态可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:对执行目标交易的主交易和/或分支交易的任一区块链,在所述目标交易执行过程中,将所述任一区块链当前的第一状态信息锁定,以阻塞所述目标交易之外的交易对所述第一状态信息进行操作;若所述目标交易成功,则将所述任一区块链的状态信息更新为第二状态信息,否则,保持所述任一区块链的状态信息为所述第一状态信息;其中,所述第二状态信息为执行所述目标交易对所述第一状态信息进行操作生成的新状态信息;其中,所述主交易为所述目标交易中的第一个交易过程;分支交易为所述目标交易中除了所述主交易之外的交易过程。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 跨链互操作的交易处理方法、装置、电子设备和存储介质
  • 跨链交易方法、装置、电子设备及存储介质
技术分类

06120112359302