随着区块链多年来的发展,在区块链生态中已经形成了不同特性的区块链网络,这些网络之间存在着一定的隔离和孤立性。为了打破这种局面,跨链技术应运而生,促进了区块链间的数据流通和价值交换。目前,主流的跨链机制包括公证人机制、侧链/中继、哈希锁定等。为了让账号快快升级,今天就来浅谈(水)一下哈希锁定的实现原理。
原理解析
事情是这样的:有一天,Alice
打算用 n 个比特币
和Bob
的 m 个以太币
交换,为了确保交换双方能如期获得对方的爱意,并尽可能避免出现空手套白狼的情况,Alice
和Bob
一起策划出了一个爱心方案,这个方案分为四个步骤。
(1)Alice
锁定自己的资产
首先,Alice
通过随机选取的方式生成一个原像s
,并利用哈希算法对s
进行计算得到一个哈希值h
: h = h a s h ( s ) h = hash(s) h=hash(s)。接着,利用哈希值具有不可逆性,Alice
部署了一个合约并将n个比特币
存入合约中,合约的内容是:
- 若
Bob
能破解出h
的原像s
,则 n 个比特币
自动转给Bob
- 若
Bob
在时间 T 1 T1 T1内无法破解,则 n 个比特币
自动原路返回给Alice
(2)Bob
锁定自己的资产
由于哈希值的不可逆性,Bob
无法直接计算出原像s
,而为了知道Alice
设置的原像s
,并通过s
获取Alice
合约中的 n 个比特币
,Bob
也部署了一个合约,并将 m 个以太币
存入其中,合约的内容是:
- 若
Alice
能破解出h
的原像s
,则 m 个以太币
自动转给Alice
- 若
Alice
在时间 T 2 T2 T2( T 2 < T 1 T2<T1 T2<T1)内无法破解,则 m 个以太币
自动原路返回给Bob
。
(3)Alice
提取Bob
的资产
待Bob
部署好合约后,由于Alice
本身知道原像s
,因此,Alice
就在时间 T 2 T2 T2内向Bob
的合约发送了原像s
,并且就此获得锁定在合约中的 m 个以太币
,而由于这个合约是Bob
部署的,因此,Bob
也获取到了原像s
。
(4)Bob
提取Alice
的资产
Bob
在获取到原像s
后,立即在时间 T 1 T1 T1(由于 T 1 > T 2 T1>T2 T1>T2,因此Bob
还有时间)内向Alice
的合约发送s
,解锁了Alice
合约中的n个比特币
,就此,交易完成。
就这样,Alice
和Bob
在无需可信公证人的情况下,通过哈希锁和时间锁共同完成链间资产兑换。这种机制无需依赖第三方,能够保持区块链的去中心化特点。但是,这种机制也同样存在着原子操作性较弱(可能因为网络异常而导致Bob
在提取资产时,时间超过了 T 1 T1 T1,使得Alice
空手套白狼成功)、效率较低的问题(Bob
需要等Alice
合约部署后,才能部署)。