在之前的文章《什么是闪电网络》、《星巴克支持比特币支付,对闪电网络意味着什么》中,我们介绍过闪电网络的定义和特点。你可能会发现,闪电网络交易只在通道开启和关闭时会访问两次btc区块链,期间大量的交易数据保存在链下。
那在没有其他节点同步交易数据的情况下,谁来验证上链最终结果的正确性呢?
其实,通常情况是交易双方共同确认并发布,即表明发布的是双方都认可的正确结果。不过如果是单方关闭通道并发布了过期交易,比特币网络的确也是无法立即识别其有效性的。
如何解决这一问题呢?这就要介绍下闪电网络的惩罚机制了。简单说,就是如果交易一方在通道关闭时向比特币网络发布了过期交易的余额,在被发现后将会被没收相应的BTC金额,没收金额直接给到对方。
闪电网络开发者之一Alex Bosworth曾在Twitter上发布过这一惩罚机制的测试结果
这一惩罚机制是由闪电网络的RSMC协议(Recoverable Sequence Maturity Contract,中文翻译为“序列到期可撤销合约”)实现的(为方便记忆,不妨参考在白话之前文章中对RSMC的翻译:肉丝冒菜)。
事实上,RSMC不仅可以避免或惩罚欺诈行为,也保障着闪电网络每笔交易的有效性。下面通过一个简单的闪电网络支付流程,来说明在RSMC协议下,闪电网络交易是如何发生的:
1、A和B在闪电网络上交易,双方都向一个多重签名地址中存入0.5BTC,此时会开启闪电网络的支付通道,通道内共有1BTC;
2、交易通道开启期间,AB之间可以发生多次转帐,每次转帐双方都会进行签字认可,通道每次会判断双方余额是否足够支付,并在转帐完成后更新最新余额、 同时作废之前的交易。假设多次交易后,A余额有0.2BTC,B余额为0.8BTC。
这里需要说明的是,在通道开启期间,因为交易数据没有发布到比特币网络上,通道内的余额不会影响双方真实比特币地址余额。
3、A不再想和B交易,准备结束交易提现走人,可以把有双方签字的最终余额提交给比特币网络,并关闭支付通道。如果在指定时间B不反对,那么结果就在比特币网络上正式确认,余额按协议转入双方预先设立的提现地址。如果B在指定时间内反对并提交证据,证明A发布的是双方之前过期交易的余额分配方案,那么A资金将被全部罚没给B。
从上面的流程中,我们可以看出RSMC协议可以惩罚欺诈情况,不过在过程中有两点仍然需要注意:
1、B需要在指定时间内发现A造假;这一时间可以自定义,比如可以设置为1000个区块确认时间,即差不多是7天,如果在这7天内没有被发现,那过期后双方交易结果将正式被比特币网络确认,惩罚将无法生效。
2、B在反对时需要提供相应的数据,因为闪电网络通道关闭前的交易是保存在链下,所以交易双方要妥善保管相关交易数据(包括签名、对方发来的私钥等等),如果数据丢失,就算知道对方是假数据,也无法获得赔偿。
所以,新问题又来了:如何保证B能在指定时间内及时反对并提交证据呢?解决办法有两个:B自己成为闪电节点,或委托第三方(也称“瞭望塔”)来实时监控闪电网络发布到比特币链上的交易是否有效,如果发现是笔过期交易时,立即代理B发布惩罚。
在闪电网络中,我们似乎常隐约看到第三方的身影:在通道中间节点跳转上、在通道关闭时的交易有效性验证代理上。它们不是必需的,但如果你希望享受更方便、更安全的交易服务,它们似乎又是不可或缺的。
总结:
闪电网络的每笔交易,本质上等同于没在比特币网络发布的比特币交易,通道关闭时会发布到比特币网络。在发布交易的可靠性上,则是通过惩罚机制来执行的,作恶一方会被罚没所有费用。
你愿意付费给第三方,帮你监测闪电网络交易结果的有效性,从而保障你的资产安全么?欢迎在留言区留言。