LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > 区块链跨链事务管理

区块链跨链事务管理

2020-09-06 NB区块链 来源:区块链网络

跨链事务管理

一个完整的跨链交易可以拆分成若干个子交易,每个子交易在各自所属的区块链系统中被处理。

这些子交易作为一个整体需要事务管理,保证事务的一致性、原子性。

举个例子,A有一个比特币,以1︰50的兑换率交换B的50个莱特币。A和B之间互相转账的过程包含以下两笔交易。

(1)在比特币的网络中,A获得B的账户地址,向B的地址转出1个比特币。

(2)在莱特币的网络中,B获得A的账户地址,向A的地址转出50个莱特币。

这两笔转账交易分别发生在不同的区块链系统中,彼此是互相独立的原子操作。同时,它们又是同一个跨链交易的组成部分,构成了一个完整的事务,事务的管理需要保证两笔交易的一致性和原子性。

设计跨链的事务管理机制还需要考虑两个子问题。

(1)交易的最终确定性

一个交易被确认之后依然有可能回滚,如何保证交易的最终确定性?

(2)交易的去中心化原子性

如果一笔交易获得成功而且满足最终确定性,那么如何保证后续的子交易也一定能成功?如果其他子交易执行失败,那么如何撤回已经转出的资金?

交易的最终确定性

在PoW共识算法的区块链系统中,只要有足够大的算力,理论上每一笔交易都可以被撤销,只是被确认的区块越多,被撤销的可能性就越小。

在跨链交易中,必须确定前一个交易已经被最终确认,才能处理后续的子交易,否则会有回滚的可能。常见的方案如下。

(1)等待足够的确认数

最简单的办法就是等待足够多的确认,直到回滚交易的可能性达到预定的阈值之后,再执行其他子交易。显而易见,这种方案的劣势就是事务处理的时间会变长。

(2)区块纠缠

区块纠缠,即令两个链之间的区块有依赖关系。如果一个链上的某个区块被撤销,那么其他链上的相关区块也会被自动撤销。

如上图所示,区块链A的每一个区块引用两个父块,一个在区块链A中,另一个在区块链B中。这样A中的区块对于B中的区块有依赖关系。如果子交易x所在的区块被回滚,那么后面的子交易y也必须被回滚。

(3)使用DPoS/xBFT等共识算法

相比PoW共识算法,DPoS/xBFT等共识算法更容易达成最终确定性。比如EOS可以在三秒内达到100%的最终确定性。使用这类共识算法的区块链系统能更高效地实现侧链及跨链交易。

交易的去中心化原子性:哈希时间锁

传统的事务管理协议,如2PC(二阶段提交协议)、3PC(三阶段提交协议),都依赖一个中心化的事务管理者协调各个子任务的执行状态,以保证原子性,但这需要第三方可信的中心,不符合去中心化的设计理念。

基于哈希时间锁的原子交换协议是一种去中心化的事务管理机制,可以保证多笔交易的原子性。

依然用A的比特币兑换B的莱特币的例子,具体应用流程如下。

(1)A创建了一个随机密码r,并且算出该密码的哈希值Hash(r)。A将这个哈希值Hash(r)发给B。

(2)B锁定莱特币资产,解锁条件:A必须在H小时内出示哈希值为Hash(r)的随机密码,否则超时后返还给B。

(3)A锁定比特币资产,解锁条件:B必须在2H小时内出示哈希值为Hash(r)的随机密码,否则超时后返还给A。

(4)A在H小时内出示有效随机密码r,成功将B的莱特币转移到自己的账户。伴随此交易成功执行,随机密码r被记录在了莱特币区块链上。

(5)B得到随机密码r,至少有H小时的充裕时间可以解锁A的比特币资产。

—-

编译者/作者:NB区块链

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...