# 解读闪电网络Lightning Network原理

By [zhongxuqi](https://paragraph.com/@zhongxuqi) · 2023-02-21

---

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

### 什么是闪电网络

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

*   Lightning Network: TPS 40,000,000
    
*   Solana: TPS 65,000
    
*   Visa: TPS 24,000
    
*   Paypal: TPS 193
    
*   Ethereum: TPS 15
    
*   Bitcoin: TPS 7
    

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

### 闪电网络的工作原理

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

![建立支付通道](https://storage.googleapis.com/papyrus_images/fe61a1d2acc8841539b46a18a9d3a80ec2991346895eeb9ca4f63b44425e4e21.png)

建立支付通道

支付通道是点对点的，即两个用户之间。打个比方，用户A和用户B要建立一个10btc的支付通道，他们分别都支付了5btc（实际A和B的通道建立金额可以任意），具体如下图所示 !\[\[建立支付通道.svg\]\] 上图的流程步骤为：

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，具体流程图如下

![支付流程](https://storage.googleapis.com/papyrus_images/9ae4e42aaa10712ae218a7786c1a865831bdc1c83f741b4d50b8697064ecf93e.png)

支付流程

具体流程为

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。具体流程如下

![闪电网络支付](https://storage.googleapis.com/papyrus_images/fc8cd8595b12ff0ed2540fdfd0fa078fdf22ea87491e694e3b7d9b7eb3bb5eec.png)

闪电网络支付

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

![](https://storage.googleapis.com/papyrus_images/d1cbe2131111a5938f2ee2230bbd58f549112d800309ffe953c43ff946484ab2.png)

### 闪电网络目前使用的痛点

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

### 总结

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

---

*Originally published on [zhongxuqi](https://paragraph.com/@zhongxuqi/lightning-network)*
