区块链——原子互换(Atomic Swap)
币安Binance,全球排名第一的最大的加密货币交易所。稳定,安全,可靠!→
欧易OKX,最大的老牌加密货币交易所之一,对中文用户非常友好!→
芝麻开门Gate.io,老牌加密货币交易所,2013年创办至今,原名“比特儿”!→
原子互换是区块链上的一种不用到第三方的去中心化的加密货币交换算法。它可以让远在异地的两个账户交换不同的货币,而不用担心对方捐款逃跑或者赖账。虽然不是完美解决方案, 但是底线是起码不会让交易的任何一方损失钱。各原种资料看了遍,终于自己能说通了。 下面就说说我对这个算法的理解。 总分总的思路 🙂
交易双方为 A 和 B. 除了利用普通交易中的签名认证,还有加了一些维度的限制。
(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 账户(地址)中。 但是这个交易实现是要有条件的, 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 账户(地址)中。 但是这个交易实现是要有条件的, 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想 “卷款”, 也就是使用了 TX3, 获得 3 ETH, 但是这个操作有side effect: 也会使得 x 上链并且被广播。所以 B 也就知道了原像 x, 也能使用TX4.
12. 时间点3- A 使用了 TX3,获得了3 ETH。 因为A 有原像, 并且自己of course 可以私钥签名。 但是如上面所说 原像x 会被广播公开。
13. 时间点4- B 从链上拿到 原像 x, 并且of course 自己私钥签名,就能使用 TX4 咯。
总结下:
这样其实 我们可以看到 交易的两个条件: 拿到原像和对方签名是对应交易成功时的条件。 双方的签名条件是用来执行保底交易,达成撤资条件的。 而且在 双方开始把真正交易提交网络之前, 先要把双发的保底交易给sign 咯。 比如上面的步骤 4,5,8,9。 这样也对,和实际生活中一样,先把丑话说前头, 而且有个时间锁,谁也不能赖。
还有就是上锁时间,谁先发送保底交易,谁的锁的时间就要比对方长。这样才能给对方足够的时间来确认。 因为对方操作类似对称,所以时间在两倍。
当然,原子互换并不完美, 有一些局限性,比如要相同的哈希算法, 上锁时间可能过长,汇率影响等等。 读者有兴趣就自己搜搜吧。
![比特巴士的朋友们](https://btcbusnet-1252377195.cos.ap-nanjing.myqcloud.com/avatar/superay.jpg)
永远被割,永远热泪盈眶!
共有 0 条评论