雷电网络(二):掌握雷电网络的特点 | 区块链技术博客

这一篇我们来看看基于智能合约的雷电网络机制有些什么特点。
首先,因为它是基于智能合约,所以能实现比闪电网络的HTLC更复杂的智能条件。可以这么说,HTLC的哈希锁机制只是雷电网络能实现的智能条件之一。
其次,雷电网络可以实现一个叫“组合锁”的功能。
在闪电网络中,HTLC的解锁条件是,收款人能否在时间到期之前出示符合哈希值的秘密。秘密由收款人和付款人设置都可以,不过一般由收款人设置,然后将秘密的哈希值发送给付款人。也就是说,在闪电网络中,假如A通过HTLC的方式转账给B,他们之间只会有一个单方向的秘密。这就给HTLC的应用造成了一些局限。

考虑下面的场景。
A利用HTLC通道,本来是通过中介C给B转账,但现在由于某些突发原因,A不能或不想通过C转了,比如C出现故障离线了。这时,如果原来的HTLC没有到期,A要换路径的话,会面临很大的风险。因为B在通过新路径拿到币后,可以再向C透露秘密,然后A在原来那条路径锁定的代币就会被C拿走,然后C再跟B分赃,而A就相当于支付了两次。

雷电网络为类似的场景设置了由三把锁的组成的组合锁,来避免这个问题。这三把锁分别是:
1、重试哈希锁:重试哈希锁的秘密是付款人设置的,顾名思义,这把锁在付款人想改变付款路径的时候,可重新生成;
2、收据哈希锁:收据哈希锁的秘密是收款人设置的;
3、时间锁:其实就是付款人设置的到期时间。

从上面可以看出,时间锁跟HTLC的锁定时间一样,不同的是,HTLC里只有一个方向的锁,但在雷电网络这里,两个方向都设置了锁。在利用组合锁的交易里,在时间锁到期前需要收款方同时提供两个方向的锁的秘密,也就是重试哈希锁和收据哈希锁的秘密,才能收到币。

我们来看看A利用组合锁通过C转账给B的交易流程:
第一步:收款人B生成收据哈希锁,并发送给A,自己保留收据哈希锁的秘密S1。
第二步:付款人A生成重试哈希锁,并使用收据哈希锁和自己的重试哈希锁构造交易,发给C,A自己保留重试哈希锁的秘密S2。
第三步:中间人C也利用收据哈希锁和重试哈希锁向B发起交易。
第四步:A确认以上过程无误后,向B提供秘密S2。
第五步:B现在拥有秘密S1和S2,就可向C出示,然后解锁转账,获得代币。C再将两个秘密向A出示,解锁获得代币。

这个机制的关键就是A可以利用秘密S2控制最终的转账动作。这样,当A想换路径时,直接换就是了,因为B和C手中没有S2,无法获取老通道的币。

最后,我们来说说雷电网络的一个缺点。
闪电网络结束通道时,双方可以签名构造一笔交易把多重签名地址里的币分了,好聚好散。但在雷电网络里,双方的每一次雷电交易,都需要双方签名,只不过每次的序列号会增加,最后结束通道时,双方也只有一个办法,那就是其中一个将最新序列号的信息提交到智能合约,然后通过智能合约分币(因为它不能像闪电通道一样,双方签名就可以直接发起链上交易)。
现在问题来了,假如最后一笔雷电交易是A转币给B,但A却将倒数第二笔交易的信息提交给合约,那A就会拿了B的币。为了避免这个问题,信息广播后,会设置一段锁定时间,如果锁定时间到期,B没有提供更新的信息,那么就按A提交的信息分币。但如果B正好掉线了,明明有更新的信息,但就是没办法提交呢?那就没办法了。所以,这是使用雷电网络时的一大风险,务必保持在线。

猜你喜欢

转载自blog.csdn.net/lianquan_cn/article/details/81565763