上文有两个值得注意的小细节,第一个是领钱的规则,并不是任何知道秘密的人都可以领,要是指定的交易对手说出秘密才可以。这是因为区块链上的信息人人可见,所以当我在广播交易的同时,所有人都会看到早上好我的朋友,甚至有可能抢先在我的交易被确认之前,用同个秘密去把钱偷走,所以不能只认秘密,要同时限制收款人才行。
第二个是两人的提款时限是不一样的,因为即便双方都用同一组哈希,一开始却只有我单方面知道秘密,所以当前面的设置完成之后,什么时候执行交易的主动权握在我手上。若是两边的时限一样,我就可以在到期前不久打出领以太币的指令,并趁对方来得及反应之前把本来的比特币抽走。所以通常对方会把时限订得比拥有秘密的人设定的时限再早一点,确保就算被压死线也还有足够的时间拿到应得的钱。
所以说,整个换手的过程,就是我选了一支密码学钥匙,并构造了一个可以被这支钥匙解开的锁。基于神奇的数学魔法,锁是没办法回推钥匙的形状的。所以我安心的把自己的钱锁起来,并给对方一个一模一样的锁,对方也安心的把他的钱用这个锁给锁起来,因为他知道,只要我亮出钥匙来取他的钱,他绝对可以用同一把钥匙拿走我的钱。
也就是说:不同区块链上的两笔交易,用同一个哈希锁,产生了关联。
于是跨链交易的原子性就得到了保证,只有可能两边都给对方钱,否则就是两边都取回本来的钱,(理论上)绝对不会有某一方拿了就跑的情况。而且更重要的是,这整个过程完全没有第三方介入,虽然也需要把钱暂时锁定,但这和放进交易所的大金库有着根本的不同。藉由区块链本身的锁定机制,钱的控制权还是在拥有者手上,不会没事就被盗。
点击关注币海启行微信公众号,了解更多