本着劝和不劝分的原则,闪电协议设置了哈希时间锁定合约,单方面强制离婚(关闭交易通道)会受到延迟收到退款的惩罚,这是为了保证双方交易的稳定。
以上最后一个过程是通道关闭。注意,不管是协议离婚还是起诉离婚,这都是要法院受理登记的。关闭通道一定要发起交易并广播到主网,最后矿工记录,所以还是要忍耐一定确认时间和支付手续费的,这与闪电网络无关。
至此我们已经知道了Alice和Bob链下互相转账的那点事儿了,这就是所谓“双向支付通道”。开启通道需要在主链交易,这是锁定资金,关闭通道也需要在主链交易,这是释放资金。中间可以进行任意多次转账支付,是0确认0手续费的。
2.将双向支付通道扩展成闪电网络
新问题来了,世界上除了这两位,还有Carol、Eric、Diana等等。设想Alice想转给Carol 1个BTC,她该怎么办呢?自然地,她俩可以再重复上述操作建立一个双向通道。但是,如果我们为了应用闪电网络,需要世界上每两个人之间都建立一条通道,这将是非常大的工作量且不切实际的。为了解决这一问题,我们需要将双向支付通道扩展成闪电网络。
假如Bob和Carol之间已经建立了支付通道,而Alice和Bob之间也有支付通道,那么Alice可以先把钱转给Bob再由他转给Carol,即Bob充当了支付的中间人,在网络里他就是一个路由节点。 如上图,B和C,A和B之间有通道, A和C就通过B来达成交易。更一般地,A和F可以经过B、D来交易。
当很多的节点相互建立通道,最后就会形成闪电网络。
03
闪电网络原理技术细节版
通过上文,我们差不多了解了闪电网路是如何形成的。但是看完大家一定会觉得有哪里不对劲。哪里不对劲呢?
我们来回顾一下历史。
如果Alice和Bob完成了一笔交易,他们手头各自都有账本,在没有第三方见证的情况下,他们都可能把账本按照对自己有利的方向进行篡改。银行是怎么解决这个问题的呢?在传统的银行业中,由于Alice和Bob都信任银行,因此银行充当了双方都信任的第三方来进行记账,并且以第三方的账目为准,因此双方不管怎么篡改账本都没用。区块链是怎么解决这个问题的呢?区块链同样引入了第三方来充当记账者,虽然Alice和Bob都不信任记账者,但系统会想尽办法来保证记账者的诚实性。
但是到了闪电网络,请注意,这里再也没有一个第三方记账者了!Alice和Bob又重新拿回了他们的小本子,各自记起了各自的账本。问题在于怎么保证他们都诚实记账!
1.双方支付通道:如何使记账的双方保持诚实?
这是一个非常有意思的问题,使得我们的第一步――建立“双向支付通道”,变得难以维持了。那么,Alice和Bob这样两个完全不信任对方的陌生人,究竟该如何在没有主链矿工记录的情况下,相互转账交易?
作为铺垫,我们需要讲解两个概念,哈希时间锁定和哈希密钥锁定。首先是哈希时间锁定,这是在交易脚本里面设置时钟,必须要等设定时间之后,才能用地址的私钥签名解锁地址里的比特币。例如Alice收到了一笔2 BTC转账,但是对方设定了1000个区块之后才能解锁,所以Alice必须等待1000个区块之后才能用自己的私钥签署交易,花费其中的BTC转给Bob。
其次是哈希密钥锁定。哈希函数可以把一串输入转换成256位固定长度的输出,计算过程称为一次哈希运算,其中输入称为密文,输出称为密文的哈希值。哈希函数具有单向性,即从密文可以算出哈希值,但是从哈希值反向算出密文几乎是不可行的。计算的办法是暴力破解,逐一输入密文进行哈希运算,验证运算结果是否为要求的哈希值。基于这种特性,可以把一个密文的哈希值放入交易的输出当中充当哈希密文锁,也就是必须得输入该哈希值对应的密文才能解锁脚本中的比特币。例如,例如Alice收到了一笔2BTC转账,但是对方设定了哈希值锁定,所以Alice必须得到交易方的密文,同时配合自己的密钥签名才能签署交易,花费其中的BTC转给Bob。
此文由 中国比特币官网 编辑,未经允许不得转载!:首页 > 比特币行情 » 闪电网络很难懂?你需要看看这篇文章 | 硬核科普