文章阅读页通栏

区块链——原子互换(Atomic Swap)

来源: 互联网 作者:
原子互换是区块链上的一种不用到第三方的去中心化的?#29992;?#36135;币?#25442;?#31639;法。它可以让远在异地的两个账户?#25442;?#19981;同的货币,而不用担心对方捐款逃跑或者赖......
原子互换是区块链上的一种不用到第三方的去中心化的?#29992;?#36135;币?#25442;?#31639;法。它可以让远在异地的两个账户?#25442;?#19981;同的货币,而不用担心对方捐款逃跑或者赖账。虽然不是完美解决方案, 但是底线是起码?#25442;?#35753;交易的任何一方损失钱。各原种资料看了遍,终于自己能说通了。 下面就说说我对这个算法的理解。 总分总的思路 :)

交易双方为 A 和 B. 除了利用普通交?#23383;?#30340;签名认证,还有加了一些维度的限制。

(1) Hashlock. 一个用 x 作为 原像的哈希函数 hash(x) . 只有揭露 x 的时候, 这个交易才能被链确认。 这里的揭露我们可以认为是链上的任何人都可以知道x 的值了。也就是在链上广播了。

(2) Timelock. 对于交易最终能够确认(能够上链得到公认), 设置了一个可以看成自动回滚的定时器。只有到 Timelock 以后才能 触发, 去确认(上链)。

HashLock 和 TimeLock 也是构成Hash Time Locked Contracts 的部分,在闪电网络中也用得到。

原子互换聪明在双方都各自发出两个交易(transaction- TX). 一个是应有的转钱交易,一个是自己的撤资交易, 用来’保底’。 一共四个交易。而不是我们普通想的两个交易。

这时候读者可以想想怎么利用这四个交易, HashLock, TimeLock 来完成这个原子互换?

下面是过程 A 用 1 个 BTC 换 B 的 3 个 ETH :)

1 . A 随机出一个数字 x, 并且 hash(x). 这个其实有点作为数字信物一样的东西,回头就会知道, 而且是由首先创造交易的人做哈希并且保存x 先。

2. A 创建 交易 TX1 :把 1 个 BTC 送到 B 的 public key 账户(地址)中。 但是这个交?#36164;?#29616;是要有条件的, A 又不傻。下面两个条件之一符合就可以:

要么: B揭露 x 并且有 B 的签名
要么: 有 A 和 B 两方的签名

3. A 创建交易 TX2?—?保底交易: 把 1 BTC 从 TX1 发回到 A 自己 public key 账户(地址)
并且 lock 48 hours. 回头会说为什么 48 hours. 这个交易A 自己先Sign掉。

4. A 发 TX2(保底交易) 给 B
5. B 签了 TX2 然后还给 A. 这时候注意 TX2 已经有了双方的签名,但是48小时的Locktime 在那里,撤资时机未到。
6. 时间点1?—?A 提交 TX1 到网络上。但这时还没有发到 B 的 public key. 因为B还没有揭露x.

B 这边也是大约类似的动作
7. B 创建 交易 TX3 :把 3 个 ETH 送到 A 的 public key 账户(地址)中。 但是这个交?#36164;?#29616;是要有条件的, B 也不傻。下面两个条件之一符合就可以:

要么: A 揭露 x 并且有 A 的签名
要么: 有 A 和 B 两方的签名

8. B 创建交易 TX4?—?保底交易: 把 3 ETH 从 TX3 发回到 B 自己 public key 账户(地址)
并且 lock 24 hours. 这个交易 B 自己先Sign掉。

9. B 发 TX4(保底交易) 给 A
10. A 签了 TX4 然后还给 B. 这时候注意 TX4也已经有了双方的签名,但是24小时的Locktime 在那里,撤资时机未到。

11. 时间点2- B 提交 TX3 到网络上

这里我第一次看的时候总觉得很危险,因为A 知道 x, 并且可以随时签名,TX 提交的时候 A 不就直接卷钱跑了吗? 但是原子互换的聪明之处也在这里,当A想 “卷款?#20445;?也就是使用了 TX3, 获得 3 ETH, 但是这个操作有side effect: ?#19981;?#20351;得 x 上链并且?#36824;?#25773;。所以 B 也就知道了原像 x, 也能使用TX4.

12. 时间点3- A 使用了 TX3,获得了3 ETH。 因为A 有原像, 并且自己of course 可以私钥签名。 但是如上面所说 原像x 会?#36824;?#25773;公开。

13. 时间点4- B 从链上拿到 原像 x, 并且of course 自己私钥签名,就能使用 TX4 咯。

总结下:

这样其实 我们可以看到 交易的两个条件: 拿到原像?#25237;?#26041;签名是对应交易成功时的条件。 双方的签名条件是用来执行保底交易,达成撤资条件的。 而且在 双方开始把真正交易提交网络之前, 先要把双发的保底交易给sign 咯。 ?#28909;?#19978;面的步骤 4,5,8,9。 这样也对,和实际生活中一样,先把丑话说前头, 而且有个时间锁,谁也不能赖。

还有就是上锁时间,谁?#30830;?#36865;保底交易,谁的锁的时间就要比对方长。这样才能给对方足够的时间来确认。 因为对方操作类似对称,所以时间在两倍。

当然,原子互换并不完美, 有一些局限性,?#28909;?#35201;相同的哈希算法, 上锁时间可能过长,汇率影响等等。 读者有兴趣就自己搜搜吧。

更多区块链信息:www.3300228.com/news
关键词: 原子互换  Atomic Swap  
0/300
? 拳皇命运官方实力排名
开拓者vs篮网录像 堡垒之夜第七赛季第七周任务 利物浦欧冠战绩 御龙在天国战视频经典 2978招财鞭炮手机版本下载 重庆时时彩计划软件免费版 天津快乐十分开奖号码 这个杀手不太冷里昂素描 活塞vs勇士 斯图加特火车