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上的哈希锁。看起来哈希锁就能搞定的事儿,干嘛要加一个时间锁? (责任编辑:admin) |