01
闪电网络的由来
树哥:假设有一辆安保极其严格的押运车,每天从A点运载一批货物到B点。你有什么办法提升运送效率吗?
任潇潇:这个简单啊,至少有三种方法:①把押运车的货物整理一下,多装一点。②换一个更大的押运车。③避开拥堵路线,增加一些其他运输线路。
树哥:第一个方案就有点像隔离见证,通过整理货物而空出一些空间来放更多的货物。换大押运车就类似于大区块方案,可以运载更多货物。而第三个方案就像闪电网络方案。因为主网络比较拥堵,所以再搭建一条线路以避开拥堵路段,这样的方式就叫“闪电网络”。
前两个方案都要对比特币软件进行更改,都是针对比特币区块链来进行扩容,所以就叫“链上扩容”。第三个方案是在比特币区块链之外进行扩容,所以通常被称作“链外扩容”,或者“链下扩容”“第二层扩容”。
闪电网络就属于链外扩容方案,闪电网络中这个额外建立的通道就是“支付通道”。比特币区块链最关键的作用就是记录比特币转账信息,每一笔交易都需要网络上的大多数节点确认,还要等矿工竞争出区块生产者来将这些信息打包进区块。这其实是比特币区块链安全性的保障,也是效率不高的原因。
是不是所有的记账信息都需要放进比特币区块链呢?是否可以不保存一些不重要的高频小额交易?
这个就是闪电网络方案的思路。日常生活中有80%的交易都是高频小额交易,例如买早点、买瓶水等。这些信息既会涉及我们的隐私,却也没有那么重要,没有必要都写入区块链。
如果不写入区块链,那就意味着交易不需要全网节点验证,也不需要等待区块生产者打包,这样交易确认的速度简直快如闪电,这就是闪电网络的由来。
02
闪电网络的优势
闪电网络实现的机理也比较简单:A和B之间有频繁的转账交易,原来每一笔交易都需要全网节点进行确认,现在不需要了。A和B之间只要开始在区块链上记录一下初始状态,例如A和B谁也不欠谁,然后他们之间就有一个状态通道建立了,他们开始了频繁的转账交易,具体转账过程只有他们知道,网络上的其他节点并不知道。
直到他们结束了相互转账,共同认可最终的状态:A给B转了0.5BTC,这个结果会写入区块链之中,之后他们之间的记录支付状态的通道就会关闭,这个记录状态的通道简称为“支付通道”。
支付通道在区块链上体现为一段可以执行的代码,也被称作“智能合约”,还需要开启通道的双方锁定一部分资产。当双方进行交易的时候,就可以通过这个自动执行代码从锁定的资产库中直接交易,相当方便快捷。
任潇潇:锁定的资产也就相当于抵押,假如两个人都存100元到第三方,两人的交易最终不能超过100元,以免之后兑现不了承诺。网络上那么多人进行小额高频交易,每笔交易都需要建立这样的支付通道吗?
树哥:那样成本就太高昂了。事实上,完全可以多人一起建立支付通道,也可以搭建这样的闪电网络,任何安装了相应软件的成员可以通过接入这通道网络打通和这个网络上其他人员之间的通道。
任潇潇:那这就是一个巨大的网络了,闪电网络的节点越多,速度就会越快。
树哥:是的。还有一些好处,因为单笔交易不需要在区块链上进行广播和记录,所以就具备一定的隐私性;因为不占用区块链的资源,所以速度快而且转账的成本极低,非常适合小额高频交易,是比特币在日常生活中使用的最有效的方案之一。
总结起来就是速度快、保护隐私、转账成本低、适合小额高频交易。
03
闪电网络方案的形成
任潇潇:是谁想出了闪电网络这么好的点子?
树哥:闪电网络方案也不是一步到位的。最初,中本聪在比特币白皮书中提到了“支付通道”的概念,虽然没明确写入区块中,但允许开放交易更改和替换,只不过在某段时间内需要相关方的私钥签名。他们在这个思路上进行了扩展,“双向支付通道”“链下支付网络”等概念紧跟着就被提出来了。
2015年2月,ThaddeusDryja和JosephPoon发表了闪电网络的白皮书,大家才开始正式开始闪电网络的研究和开发工作。
2015年底,通过闪电网络对比特币区块链进行扩容的思路受到广泛支持,在比特币的扩容发展线路图中,实施闪电网络也成为一个重要阶段。之后,众多团队开始开发闪电网络。2017年12月,闪电网络测试版本上线比特币区块链主网,并测试了闪电支付通道,这算是闪电网络上运行的第一笔交易。
2018年3月,闪电网络正式上线比特币区块链主网,各种以闪电网络为基础的应用开始快速发展。
任潇潇:闪电网络的支付速度将来能赶上传统的在线支付手段吗?
树哥:闪电网络发展速度非常快,2018年2月,闪电网络节点数就达到7000多个,状态通道数量接近3万,这些指标都是前几个月的数倍。
扩容方案除了前面说到的三种外还有很多,分片方案就是其中之一。区块链效率低的原因是每笔交易都需要全网确认,那么分片方案就主张不进行全网确认,把网络分成片区,各片区分别确认。如果分成10个片区,那效率就能提高10倍。
也有人认为并不是所有的数据都值得记入区块链,就想了一个办法,将这个数据进行哈希运算,把它的数字指纹放入区块链之中,原来的数据还存储在普通的节点上。这样一来,需要核实数据有没有被篡改时,就可以直接去区块链中找到它的数字指纹进行校验。