随着Damus最近的大火,其内置的比特币闪电网络Lightning Network打赏功能也走进了大众的视野。闪电网络的比特币容量也随之猛增到5400枚,创下历史新高。那么下面我们就重点来介绍一下闪电网络的作用和工作原理。

什么是闪电网络

闪电网络是建立在Bitcoin链上的2层网络,即Bitcoin的L2。它的主要作用是解决比特币扩展性和交易手续费高的问题。 可以说闪电网络的TPS远超市面上所有区块链技术,如下表所示

Lightning NetworkSolanaVisaPaypalEthereumBitcoin
TPS40,000,00065,00024,000193157

闪电网络的TPS是目前区块链所有扩容方案中最高的,满足了目前所有的支付场景需求。

闪电网络的工作原理

闪电网络的基本流程就是在用户之间点对点地建立一些支付通道,建立好通道的用户可以方便地进行链下建议。然后随着越来越多的用户之间建立了支付通道,就形成了一张支付通道网络,就此闪电网络就形成了,只要在网络中的用户之间都可以进行相互链下交易。

建立支付通道

支付通道是点对点的,即两个用户之间。打个比方,用户A和用户B要建立一个10btc的支付通道,他们分别都支付了5btc(实际A和B的通道建立金额可以任意),具体如下图所示 建立支付通道

上图的流程步骤为:

  1. A和B分别用自己的UTXO-A和UTXO-B作为输入,共同签名上链并输出了UTXO-AB
  2. A生成链下交易TX-A1,并让B对TX-A1签名。
  3. B生成链下交易TX-B1,并让A对TX-B1签名。

其中UTXO-AB就是A和B之间建立的支付通道,TX-A1和TX-B1不需要广播到链上,如果TX-A1和TX-B1被广播到链上就代表支付通道被关闭了。 TX-A1由A持有,TX-B1由B持有,他们都可以随时关闭通道取出自己的钱。 如果A广播了TX-A1,那么就会生成UTXO-A1-A和UTXO-A1-B。 UTXO-A1-A的使用需要满足以下条件之一即可:

  1. 需要等x个区块才能被A密钥使用
  2. 可以用B密钥和A1密钥共同签名使用,A1密钥由A保管

UTXO-A1-B的使用需要满足以下条件之一即可:

  1. 用B密钥签名即可使用

同理如果B广播了TX-B1,那么就会生成UTXO-B1-A和UTXO-B1-B。 UTXO-B1-A的使用需要满足以下条件之一即可:

  1. 用A密钥签名即可使用

UTXO-B1-B的使用需要满足以下条件之一即可:

  1. 需要等x个区块才能被B密钥使用
  2. 可以用A密钥和B1密钥共同签名使用,B1密钥由B保管

用户之间点对点转账

用户A要向用户B转1个BTC,具体流程图如下 支付流程 具体流程为

  1. 用户A用A2密值构建交易TX-A2,并提交给用户B签名,用户B把TX-A2的签名传给用户A
  2. 用户A把A1密值传给B
  3. 用户B用B2密值构建交易TX-B2,并提交给用户A签名,用户A把TX-B2的签名传给用户B
  4. 用户B把B2密值传给A 完成以上4步后才算转账完成

如何防止用户作恶

假设用户A想作恶,转账给B 1个BTC后,故意把TX-A1广播出去,企图从支付通道中取回5BTC。 具体流程如下

  1. 完成转账1BTC后,A把TX-A1广播到链上。
  2. UTXO-AB被使用,生成新的UTXO-A1-A和UTXO-A1-B。
  3. 这是闪电网络瞭望塔发现了支付通道被关闭,并通知到用户B
  4. 用户B收到通知后用B密钥签名取回UTXO-A1-B的5BTC。
  5. 用户A要等待x个区块后才能取出UTXO-A1-A的钱,导致目前还无法取出。
  6. 用户B用B密钥和得到的A1密值从UTXO-A1-A中取出5BTC,用户A损失了全部的BTC。 由此可知,任何作恶用户的结局就是损失全部的资产。

闪电网络跨用户转账

任何用户之间只要在相同的闪电网络中,都可以方便地进行支付。 假设用户A想和用户C交易,但是他们之间没有直接支付通道,但是用户B和用户C之间由支付通道。那么用户A可以通过用户B间接与用户C转账BTC。具体流程如下 闪电网络支付

走完以上四步流程后,就完成了一次闪电网络交易。 随着越来越多的用户组成了一个更大的闪电网络,那么闪电网络里面的用户之间都可以方便地进行交易。 Lightning-layers.png

闪电网络目前使用的痛点

  • 自主托管和备份通道状态
  • 可能存储大量撤销密钥
  • 离线后上线遭受意外惩罚
    • 没有备份到最新状态
  • 再平衡通道余额
    • 商家-消费者

总结

目前闪电网络的通道容量已经突破5400BTC,创下历史新高。毫无疑问,闪电网络是比特币生态目前最有前景的方向,它解决了比特币网络的扩展性和交易手续费问题,使得比特币支付成为可能,是一个非常值得区块链用户和开发者密切关注的发展方向。