侧链技术(二):原子交换

根据侧链白皮书里的说法,资产之间的原子交换是,要么完全完成,要么根本不发生,不应存在会导致资产损失或允许欺诈产生的失败交易模式。也就是说,这交易具有原子级别的刚性。

这名字意会意会就行了,接下来我们看看它的具体实现原理。

假如现在要用侧链技术在比特币和莱特币两条链之间进行资产互换,A在比特币区块链上有地址A1,A1上有1个比特币,在莱特币区块链上有地址A2。同理,B在比特币区块链上地址B1,在莱特币区块链上有地址B2,B2上有100个莱特币。A和B通过原子交换的方式,将这1个比特币和100个莱特币进行兑换。

第一步:A准备一个秘密数a。

第二步:A在比特币的区块链上构造一笔交易,从A1地址发送1个比特币到一个特殊的输出M1(请注意,M1只是一个输出,不是一个地址),这个输出的锁定脚本是精心构造的,要想拿到这1个比特币,解锁脚本要满足以下条件:(1)提供秘密数a和B1的签名;或(2)A1和B1两个签名。这笔交易构造后,不广播。

第三步:A构造第二笔交易,将输出M1上的比特币转回给A1,但带有48小时的时间锁定。根据第二步我们知道,第二笔交易要成功执行,也就是A要拿回自己的这1个比特币,必须要B1的签名。所以,A将第二笔交易单独发给B,要求B1签名。

第四步:如果B1不愿意签名,因为A的第一笔交易并没有播布,大家都没损失,只不过双方的原子交换就玩不下去了。如果B1签名了,那么A就有底了,于是广播第一笔交易到比特币区块链上。A的1个比特币暂时锁定在输出M1。

第五步:同样地,B也构造一笔交易,将B2的100个莱特币锁定在输出M2上,解锁的条件是:(1)提供秘密数a和A2的签名;或(2)A2和B2双方的签名。接着,B再构造第二笔交易,将币从M2转回给B2,同时要求A2签名。

好,现在双方都相互提供签名了,接下来就是原子交换的执行。

这个执行是由A发起的。因为只有A知道秘密数a,于是他可以利用条件(1),将M2输出上的100个莱特币,转移到自己的莱特币地址上。但同时,他也把秘密数a个暴露了,于是,B也可以利用条件(1)将M1输出上的1个比特币转移到自己的比特币地址上。这样,双方的互换就完成了。

在这个过程中,似乎A占优势,他既知道秘密数a,也有自己构造的第二笔交易的B2的签名,那他是否可以在将莱特币转到自己账上后,又马上利用自己构造的第二笔交易,把比特币转会给自己呢?其实不行的。因为他的第二笔交易有个附加条件,要锁定48小时才生效。这就让B有充分的时间先将比特币转走。

所以,在这个过程中,一开始拥有秘密数也占不到什么便宜,双方仍是对等的。也完全可以是B准备一个秘密数b,然后按上面的原理进行操作,效果是一样的。

不投资毋宁死

自由,就是拥有选择的权利,而每一次选择都是一次投资。

谢谢阅读

✬如果你喜欢这篇文章,欢迎分享到朋友圈✬

评论功能现已开启,灰常接受一切形式的吐槽和赞美☺

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181019G1JWGX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券