【小哈划重点:比特币的处理能力非常弱,程序员在不断的探索优化代码(优化编译、改进算法、调整数据结构)方面下了很多功夫,但是见效甚微,交易处】
比特币的处理能力非常弱,程序员在不断的探索优化代码(优化编译、改进算法、调整数据结构)方面下了很多功夫,但是见效甚微,交易处理能力和区块链数据容量似乎是一对无可调和的矛盾。思路决定出路,常规方法找不到出路,就逼得社区换一个思路考虑这个问题。既然在比特币区块链中优化性能如此艰难,为何不尽可能将交易放到链外执行?于是就有了闪电网络。
闪电网络在链下实现点对点微支付,处理能力的瓶颈被彻底打破,时延、最终性、容量甚至隐私问题也迎刃而解,社区甚至认为:“闪电网络”的论文(The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments)对比特币的重要性仅在中本聪的创世论文之下,排名第二。
要理解闪电网络,只要理解“链下点对点微支付”两个部分:
1.微支付
2.链下点对点
1.微支付
微支付是基于这样一个假设,假设是单次支付的金额足够小,即使一方违约另一方的损失也非常小,风险可以承受。因此使用时必须注意“微支付”这个前提。多少资金算“微”,显然应该根据业务而定。一笔大的支付可以切成小的微支付多次支付来达成。
2.链下点对点
闪电网络的基础是交易双方之间的双向微支付通道,这条通道并不是由比特币主网创建的,而是点对点机制创建的。假如一次微支付张三要给不认识的王五支付0.07个比特币,那么会经过下面三部:
1)建立链下通道,假设李四跟王五之前有直接通道,同时张三跟李四之间正好也有直接支付通道,那么现在张三可以间接的通过李四寻找到了王五,建立一条三个节点的通道:
2)传递一个暗号
由王五创建并传递给张三一个加密过的接头暗号“8bff37e78b38d2d470be8361058e4c50”,这个暗号是王五用哈希函数加密的,任何人不能由这个密文推倒出明文,所以张三并不知道明文是什么,到现在为止只有王五一个人知道明文。如果自己想玩一下哈希加密去这里:http://www.kjson.com/encrypt/hash/?fm=map
3)用暗号达成合约
张三利用加密过的暗号8bff37e78b38d2d470be8361058e4c50和李四之间达成一个合约,只要李四在两天之内告诉他暗号的明文,他将支付给李四0.071个 btc,此时张三有0.071个 btc 被冻结。如果李四做不到,合约终止,两天之后张三0.071个 btc解除冻结。
李四利用加密过的暗号8bff37e78b38d2d470be8361058e4c50和王五之间达成一个合约,只要王五在一天之内告诉他哈希值的明文,他将支付给王五0.07个 btc,此时李四有0.07个 btc 被冻结,如果王五做不到,合约终止,一天之后,李四0.07个 btc 解除冻结。
4)遵守合约,交易达成
一切就绪之后,
1.王五告诉了李四,暗号的明文是“Bitchain”,因为王五当时是这么做的(实际上的约定的比特币加密可能不是这个):
MD5(Bitchain) = 8bff37e78b38d2d470be8361058e4c50
2.李四利用上文的公式检查正确性后没问题,按照约定支付王五0.07个 btc,
3. 李四因为已经支付给王五0.07个比特币了,必然会立马告诉张三明文是“Bitchain”,不然自己亏损了0.07个 btc,
4.张三用上文的加密公式检查正确性后没问题按照约定支付李四0.071个 btc。 李四作为中间商遵守了承诺,获得0.001个 btc 作为中介佣金。
以上4步骤如图所示:
整个过程中的全部动作都发生在比特币区块链之外,只是第四步发生之后,把最终结果上报给比特币网络登记。
因为有中间商可以赚佣金,闪电网络的支付通道未来也可能逐渐向少数大型中介集中,变成若干大型中介彼此互联、普通用户直连大型中介的形式。