原子互换(Atomic swap):不经由第三方完成的安全可靠的跨区块链交易。
所谓的原子性(Atomic)指的是一笔交易应该像原子一样,被视为最小的,不可再分割(虽然原子好像可以)的单位。也就是说,我给你钱你给我货这两件事情呢,必须要同时发生,否则就同时不发生。
为了创造这样的特性,我们会用上一些区块链的神奇黑魔法,以比特币来说是哈希函数和时间锁;至于以太坊的话就是智能合约。
交易的过程大致上是这样子的,假设我和一位匿名网友达成共识,要用我持有的10个比特币交换他的100 个以太币。首先我们需要知道彼此的收付款地址,为了后续说明方便,这里假设它们分别是:
BTC_in
BTC_out
ETH_in
ETH_out
再来,为了完成这笔交易,我需要为这笔交易创造一个秘密,具体来说会是一段只有我自己知道的字串,并算出这个秘密的哈希值。
这里我选用的秘密是:早上好我的朋友
SHA256 Hash of早上好我的朋友= 46f347a3d5b192f561898ade4665f7c48e8803046094601576f7f608e06298f4
接着,我发送一笔交易,将我的10个比特币从BTC_out转出到一个特殊的暂存位置(P2SH),并且规定这笔钱有两种方式可以转走:一种是如果出示那个可以被Hash变成46f34…8f4的秘密,就把钱交给BTC_in;另一种是如果钱放了两个小时还没被领走,那BTC_out就可以把钱领回去。
对方也要做类似的事情,把100个以太币从ETH_out转到暂存的智能合约,规定只要ETH_in向合约出示能变成46f34…8f4的正确秘密就可以把钱领走,否则一小时后ETH_out可以把钱拿回去。
等这些设定都完成了之后,我就可以对合约说「早上好我的朋友」,然后把对方的100个以太币领走,同时因为区块链数据是公开的,对方看得到我用来领钱的秘密,当然也就来把我的10 个比特币拿走,交易就算顺利完成啦。
点击关注币海启行微信公众号,了解更多