【区块链学习笔记】系列1,搞掂闪电网络
区块链的困境
自比特币诞生起,其底层的应用技术-区块链一直面临诸多不尽如意的问题,如扩展性差、交易费用高、交易速度延迟等等。
举例比特币:论处理能力(tps),全网只有处理7笔/每秒;论时延10分钟出一个块;论交易确定,6个区块确认后才可视为作交易最终化,大额交易则等待更多;论容量,目前已生成40多万个区块,约60GB数据量,而且量级在未来更是逐渐膨胀。
区块链若要规模化应用,上述问题必须要解决,而行业许多的能人志士也在绞尽脑汁的探索着解决方案。
目前提出的解决方案
1. 区块扩容
一味的提高区块体积上限,则面临着区块块的传播与存储问题;
2.分片技术(shard)
缓解扩展性问题,大幅提升了吞吐量(tps),但在交易费用和延迟方面提升不够;
3.plasma或侧链技术
可以大幅提升扩展性,缓解交易费用问题,但在延迟方面依然没有得到很好解决;
4.状态通道技术(state channels)
闪电网络、雷电网络、移动雷电都是属于链下通道技术。它有望实现大部分的高频转账功能,而大额、非高频的转账仍然通过区块链上进行。
今天彼得想要和大家分享的就是闪电网络的一些知识。
闪电网络简介
大家知道,目前区块链的处理能力只有7-30笔/秒(以比特币和以太坊为例),而块内又有大量的交易排队等待处理,那么进行打包记账的矿工,出于自身的利益着想,自然会选择为出价(矿工费)最高的交易优先打包。这样,大批的高频、小额的交易将得不到应有的及时的处理。
对此,闪电网络提出了改进的方案,其理念是,在区块链之外开通一条“绿色通道”,将大量高频的、小额的交易在区块链外进行。
如此,交易双方可在这条“绿色通道”上进行多次、高频、双向地、点对点的,可实现瞬间确认的微支付;而且双方若无直接的点对点支付通道,只要闪电网络中存在一条连通双方的、由多个支付通道构成的支付路径,那么也可以利用这条支付路径实现可靠的交易。如下图:
(该图片来自于网络)
A若和B或F进行交易,那么直接使用他们之间建立的支付通道即可(AB、AF);而若A想和D进行,那么就需要借助AB、BE、EF三条通道接力完成,而这中介B、E将获得一定的“过路费”,这是不是有点像“人人为我,我为人人”的意思?
另外,为什么一定是高频次、小额交易呢,为什么不可以是大额交易呢?这里大家就需要了解闪电网络的核心概念:RSMC(Recoverable Sequence Maturity Contract)和 HTLC(Hashed Timelock Contract)。前者解决了链下交易的确认问题,后者解决了支付通道的问题。
什么是RSMC
Recoverable Sequence Maturity Contract,中文翻译为“可撤销的顺序成熟度合同”。它的主要理念类似于准备金机制,也就是说为了保证交易的有效性和避免欺诈行为,双方必须在这个支付通道中预存一部分资金,而这个支付通道类似于第三方中介,监督判断双方的资金是否足够支付每次交易(要完全控制交易风险,则每笔交易都不能超过通道余额的上限)。我想大家看到这里,应该也明白了为什么闪电网络并不试图解决大额交易的原因(若通过这种方案进行大额交易,那么双方需要在支付通道中预存的保证金将很大)。
下面描述下RSMC的具体运行原理
Alice和Bob需要进行交易,那么在微支付通道建立时,双方必须有一定的资金沉淀在该通道上,我们假设目前通道中资金为:Alice: 0.4, Bob: 0.6,这样预存到通道的资金共有1.0 BTC,其中Alice拥有0.4 BTC,Bob拥有0.6 BTC。而支付通道的设立会记录在比特币的区块链上。
某次,Bob决定向Alice支付0.1 BTC。在双方都签字认可的情况,链下支付通道的最新余额分配方案将变为{Alice:0.5, Bob:0.5},而且双方需要同时签字同意作废前一版本的余额分配方案{Alice:0.4, Bob:0.6},这样Alice就实际获得了0.5 BTC的控制权。
若Alice考虑到以后还会和Bob进行交易,那么她可以无需提取现在属于她的0.5 BTC,也无需在比特币区块链上更新已有变动的余额分配方案,因为若他们再次进行交易(如Alice向Bob支付0.2BTC)的话,他们仍然只需在链下对目的的余额分配方案达成一致,并设法作废前一版本的余额分配方案就行了。
若Alice不打算再次和Bob进行交易并想动用通道的资金,她可以向区块链出示双方签字的余额分配方案。如果在规定时间内Bob未提出异议,区块链则会终止双方的支付通道并将资金按协议转入各自预先设立的提现地址。如果Bob在规定时间内提交证据证明Alice提交的是一个双方已同意作废的余额分配方案,那么Alice的资金将被罚没并给到Bob。
另外,为了鼓励双方尽可能久地利用通道进行交易,RSMC对主动关闭方给予了小小的惩罚:主动关闭方其资金到账将比对方晚,也就是说谁先发起关闭通道谁吃亏。
什么是HTLC
RSMC 保障了两个人之间的直接交易可以在链下完成,HTLC(Hashed Timelock Contract中文意思是“哈希的带时钟的合约”)则保障了任意两个人之间的转账都可以通过一条“支付”通道来完成。这两个机制加在一起,就可实现了任意两个人之间的交易均可在链下完成。
下面描述下HTLC的具体运行原理
(该图来源于网络)
如上图所示,Alice(A)想给Darcy(D)发送0.05 BTC,但Alice和Darcy之间并没有微支付通道。但这没关系,闪电网络为Alice匹配了一条经过Bob(B)、Cady(C)到达Darcy的支付路径,该路径由Alice/Bob, Bob/Cady和Cady/Darcy这样三个微支付通道接力而成。
Darcy生成一个哈希值R并将Hash(R)发送给Alice,Alice不需要知道R。R和Hash(R)的作用类似于钥匙和锁,只有匹配在一起才可开锁。
Alice和Bob商定一个HTLC合约:只要Bob能在3天内向Alice出示正确的R,Alice会支付Bob 0.052 BTC;如果Bob做不到这点,这笔钱3天后自动退还Alice。
同样地,Bob和Cady商定一个HTLC合约:只要Cady能在2天内向Bob出示哈希正确的R,Bob会支付Cady 0.051 BTC;如果Cady做不到这点,这笔钱到期自动退还Bob。
最后,Cady和Darcy商定一个HTLC合约:只要Darcy能在1天内向Cady出示哈希正确的R,Cady会支付Darcy 0.05 BTC;如果Darcy做不到这点,这笔钱到期自动退还Cady。
方案确定好后,Darcy及时向Cady披露R并拿到0.05 BTC;现在Cady知道了R,她可以向Bob出示密码R并拿到0.051 BTC(差额部分的0.001 BTC成了Cady的佣金);Bob知道R后当然会向Alice出示并拿到他的那份0.052 BTC,差额部分的0.001 BTC成了Bob的佣金。
大家可以看到,最终的结果是Alice通过闪电网络安全地向Darcy支付了0.05 BTC,所付出的代价仅仅是支付给Bob和Cady(节点)的0.002 BTC“过路费”(佣金)。
最后总结一下:
1.闪电网络的理念就是引入了一个类似于第三方中介且仅适用于高频次、小额交易的微支付通道。
2.交易双方在这个微通道中必须先预存一定数量的保证金,而由区块链产生的智能合约(资金分配方案)进行监督评判。
3. 闪电网络中的所有交易动作都是发生在区块链之外,只有当需要提现时,才会将最终的交易结果写到区块链网络中并被最终确认。这大大降低了比特币区块链上的交易压力。
4. 微支付通道有向中心化中介演变的倾向,即,将来变成若干个大型的中介通道。但大家要明白,首先绝对的去中心化未必可取,其次,这种方案的交易双方并不需要信任中介、不需要到中介处存钱,其资金安全受到比特币区块链的充分保护。这种优势是传统中心化中介所不具备的!
(部分文字有参考网络资料)
彼得的公众号:sf-btc