零点课堂 | 跨链技术方案之哈希锁定
哈希锁定和闪电网络
哈希锁定,全称哈希时间锁定合约(Hash TimeLock Contract),是闪电网络中提出的一种新的技术实现形式。
哈希锁定模式是指用户在规定的时间段对于哈希值的原值进行猜测来支付的一种机制。简单讲,就是在智能合约的基础上,双方先锁定资产,如果都在有限的时间内输入正确哈希值的原值,即可完成交易。
在这样的机制下可以实现小额支付的快速确认,也就是说实现闪电网络快速确认的目标。
接下来大白将通过哈希锁定的应用场景之资产兑换为例来为大家科普哈希锁定是怎么实现的。
怎么实现哈希时间锁定?
为了方便理解哈希时间锁定到底是如何锁定的,这里给大家类比了两个锁,一个是哈希锁,一个是时间锁。
1、哈希锁
通过哈希值上锁,上锁之后只有用产生这个哈希值的原本值进行开锁,假设数 123,哈希之后的值为 a03a,通过 a03a上锁,不考虑哈希碰撞的情况下,只能由 123 解锁。
2、时间锁
时间锁要求在规定时间内输入哈希锁的密码。如果时间锁的时间是 1 个小时,那么就要求用户需要在 1 个小时内输入哈希锁的密码,如果在 1 个小时后输入哈希锁的密码,时间锁仍然不会开启。
也就是说同时打开这两个锁的条件是,在规定的时间内输入哈希值原本的值,上面的例子就是在1个小时内,输入“ 123 ”,两把锁才会都处于开启状态。
现在大白将利用哈希时间锁定的机制把自己的比特币在小黑那里兑换以太币,具体的操作步骤如下:
(1)大白先生成随机数 S,再把随机数的哈希值 H(S) 通过网络给小黑,假设随机数是 123 ,哈希值是 a03a 。
同时,大白进行时间上锁和哈希上锁,假设时间锁的时间为1小时,哈希锁上锁的哈希值是 a03a。上完锁后,待转换的比特币就被锁定在链 A 上。
(2)小黑收到大白给的哈希值“ a03a ”后,小黑根据这个哈希值在以太坊上部署智能合约,并往合约中存同等价值的以太币。小黑的智能合约要求大白在规定时间内提供密码“ 123 ”才可以取走智能合约中的以太币。
这个过程相当于,小黑自己也上了两把锁,其中哈希锁和大白的那把哈希锁一样,需要用同样的密码才可以打开,时间锁假如为半个小时。
(3)大白使用小黑的这个智能合约,并在半个小时内输入自己的密码“ 123 ”,就能打开小黑在链B上的哈希锁,就能取走小黑智能合约里的以太币(相当于小黑的以太币,因为智能合约是小黑创建的,合约里的以太币也是小黑转进去的)。
(4)因为大白在调用了小黑的智能合约时输入了密码,因此小黑也就知道了密码是“123”,他只要在一个小时内通过这个密码打开链A上的哈希锁,大白的比特币就会转给小黑。
通过上面的过程,可以看到,大白可以通过哈希时间锁定这种方式,实现了比特币到以太币的兑换。当然这往往需要大白多支付一点比特币给小黑作为手续费,毕竟天下没有免费的劳动力。
哈希锁定的优缺点
听了大白上面的讲解有的小伙伴会疑惑?有哈希锁不就可以了吗?毕竟大白必须输入哈希锁的密码才能取走小黑的以太币,小黑也只有当大白输入完链B上的哈希锁密码之后才能打开链A上的哈希锁。看起来哈希锁就能搞定的事儿,干嘛要加一个时间锁?
在哈希时间锁定机制中,如果时间超过了规定时间,锁定在系统中的代币将会被收回。因此,加上时间锁有效地促进了大白在小黑规定的时间内解开链 B 上的哈希锁,小黑也会因为自己的利益所需而在大白规定的时间段内解开链 A 上的哈希锁。
在整个过程链与链之间也不用相互了解,进而促进了交易的速度。而且如果交易失败,哈希锁定是不会收取额外的手续费。
不过哈希锁定的应用场景比较受限,它支持的功能比较少。
————————————————
版权声明:本文为CSDN博主「白话区块链-大白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mrRqAEr7ci9s2v0/article/details/116810540