美文网首页ugChain技术团队
详解跨链原子交易

详解跨链原子交易

作者: Buffalo_Lv | 来源:发表于2018-05-17 11:56 被阅读6次

跨链原子交易是一个很绝妙的设计,却很少有人能够或者乐意将其解析得清清楚楚、明明白白,因此我写了这篇文章,和大家分享一下。考虑一个常见的换币场景:

Bob有BitCoin,Lee有LiteCoin,Bob和Lee同意按照一定的比率互换BitCoin与LiteCoin,比如:

(1)Bob在BitCoin网络上转让1个BitCoin给Lee

(2)Lee在LiteCoin网络上转让100个LiteCoin给Bob

那么如何才能保证在没有中心化的第三方担保人或担保机构的情况下,完全利用双方手中的钱包APP和区块链网络完成这件事?如何能保证换币双方在操作过程中不会出现意外财产损失(比如Bob实施诈骗,Bob先拿到Lee的LiteCoin,然后拒绝转让BitCoin给Lee)?这就是跨链原子交易算法和流程要解决的问题。解决方法与操作步骤如下:

1、Bob生成一个随机数密码Secret,很显然,全世界只有Bob才知道这个随机数的值,Secret的Hash值记为HS,通过HS不能反推出Secret,这是HASH函数的妙用

2、Bob创建一笔交易TX_Bob2Lee花掉自己的1个BitCoin,但暂时并不发送到BitCoin网络(交易就是一段人工设计的有结构的数据),TX_Bob2Lee对应的输出脚本(记为TX_Bob2Lee.UTXO)设定了两个规则:

       【1】若Bob和Lee共同签名,则可以花掉这1个BitCoin

       【2】若Lee对Hash值等于HS的数值进行签名,则Lee可以花掉这1个BitCoin

        Secret就是Hash值等于HS的数值,但是Lee目前并不知道Secret

3、Bob再创建一笔交易TX_return2Bob,这笔交易的输入为TX_Bob2Lee.UTXO,但是交易包含了一个锁定时间字段(比如72小时)

4、Lee收到TX_return2Bob,读取并检查锁定时间字段,然后签名,并把签名后的交易数据再发送给Bob

5、Bob收到Lee的回复后,验证Lee的签名,然后自己也对其进行签名,这样Bob就拥有了满足规则【1】的交易数据,可以花掉TX_Bob2Lee.UTXO,因此TX_return2Bob也被称为赎回交易

6、Bob将TX_Bob2Lee和TX_return2Bob一起发送到BitCoin网络上,TX_Bob2Lee很快就生效了,但是TX_return2Bob则需要等待锁定时间段(72小时)过了之后,才能生效,这就为Lee留了一个时间窗口进行类似的操作

这里可以总结一下:Bob花掉自己的1个BitCoin生成TX_Bob2Lee,但是Lee目前不知道Secret,没有办法取走这1个BitCoin,而且Bob拥有一笔被自己和Lee共同签名确认的赎回交易TX_return2Bob,因此等待锁定时间段过了之后,赎回交易生效,BItCoin网络就自动退给了Bob这1个BitCoin,所以Bob的财产不会有任何损失

类似的,Lee对自己的100个LiteCoin执行同样的交易生成与发送步骤,设定了一个锁定时间字段(比如48小时),同样指定了两个规则:

   【1】若Bob和Lee共同签名,则可花掉这这100个LiteCoin

   【2】若Bob对Hash值等于HS的数值进行签名,则Bob可以花掉这100个LiteCoin

因为Bob知道Secret,所以Bob能先于Lee取走这100个LiteCoin,可是Bob在取币的同时,必然要向整个LiteCoin网络出示Secret,所以Lee很快也就知道了Secret的值,Lee设定的时间窗口比Bob设定的时间窗口小24小时,因此Lee有足够的时间在BitCoin网络上取走1个BitCoin,整个互换过程正常完成。若Bob不取这100个LiteCoin,那么等待一个锁定时间段(比如48小时)过了之后,赎回交易生效,LiteCoin网络就自动退给了Lee这100个LiteCoin,因此Lee的财产也不会有任何损失

相关文章

网友评论

    本文标题:详解跨链原子交易

    本文链接:https://www.haomeiwen.com/subject/bmkbdftx.html