什么是比特币闪电网络?闪电网络的工作原理详解

2023-12-24分类:比特币介绍 阅读(


比特币闪电网络的背景和目的

比特币闪电网络(Lightning Network,简称LN)是一种建立在比特币之上的二层协议,旨在通过实现链下交易,提高比特币的速度和可扩展性,降低交易成本,支持更多的微支付场景。

比特币作为一种去中心化的点对点电子现金系统,具有安全、透明、不可篡改等优点,但也面临着一些挑战和局限性,主要表现在以下几个方面:

交易确认时间长

比特币的区块平均每10分钟产生一个,每个区块的大小限制在1MB,这意味着每个区块只能容纳一定数量的交易,而且交易需要等待至少一个区块的确认才能被视为有效。这对于一些需要即时支付的场景,如购买咖啡、打车等,显然不够理想。

交易吞吐量低

由于区块的大小和时间限制,比特币的网络每秒钟只能处理大约7笔交易(TPS),远远低于传统的支付系统,如Visa可以处理每秒2万多笔交易。这限制了比特币的用户规模和交易量,影响了其广泛的应用和采用。

交易费用高

比特币的交易费用是由交易的数据量和网络的拥堵程度决定的,当网络的需求高于供给时,用户需要支付更高的费用来竞争有限的区块空间,才能让自己的交易被优先处理。这导致了交易费用的不稳定和不可预测,有时甚至超过了交易本身的价值。这对于一些需要频繁或小额的交易,如打赏、捐赠、订阅等,不太合适。

为了解决比特币的可扩展性问题,社区提出了多种方案,如增加区块大小、实施隔离见证、进行硬分叉等,但这些方案都有各自的优缺点和挑战,而且可能会影响比特币的安全性、去中心化程度或兼容性。闪电网络则是一种不需要修改比特币协议本身,而是利用比特币的智能合约功能,在比特币之上构建一个快速、低成本、高容量的支付网络的方案。

比特币闪电网络的工作原理

闪电网络的核心思想是,让用户在链下建立双向的支付通道,通过智能合约来保证资金的安全和交易的有效,只有在通道的开启和关闭时,才需要在链上进行交易,从而减少对链上的依赖和压力。同时,闪电网络还可以通过多跳的路由机制,让用户通过已有的支付通道网络,实现任意两个用户之间的支付,而无需直接建立通道。下面我们具体介绍一下闪电网络的工作流程:

建立支付通道

假设Alice和Bob想要在闪电网络上进行交易,他们首先需要在比特币区块链上建立一个双向的支付通道,也就是一个2-of-2的多重签名地址,这个地址需要Alice和Bob各自提供一个私钥来控制。Alice和Bob分别向这个地址存入一定数量的比特币,比如各存入0.5 BTC,作为他们在通道中的初始余额。这个交易被称为开启交易,需要被广播到比特币网络,并等待至少一个区块的确认,才能生效。这个过程可能需要花费一定的时间和费用,但只需要进行一次。

进行链下交易

一旦支付通道建立好了,Alice和Bob就可以在链下进行任意次数和金额的交易,而无需再广播到比特币网络,也无需等待区块确认,只需要双方相互签署一份更新的余额分配协议,就可以实现资金的转移。比如,如果Alice想要向Bob支付0.1 BTC,她只需要和Bob签署一份协议,表示她同意把自己在多重签名地址中的0.1 BTC转让给Bob,那么他们的新余额就变成了Alice 0.4 BTC,Bob 0.6 BTC。这个协议被称为交易合约,它实际上是一种可撤销的智能合约,也就是说,只有在双方都同意的情况下,才会生效,否则可以被双方中的任何一方撤销。这样,Alice和Bob就可以在链下进行快速、低成本、高频的交易,而不影响链上的状态。

关闭支付通道

当Alice和Bob不想再在闪电网络上进行交易时,他们可以选择关闭支付通道,也就是把他们在链下达成的最终余额分配协议广播到比特币网络,让比特币区块链来执行和确认这个协议,从而把他们在多重签名地址中的比特币按照协议的比例转移到他们各自的地址中。这个交易被称为关闭交易,需要花费一定的时间和费用,但也只需要进行一次。关闭交易一旦被确认,支付通道就被销毁了,Alice和Bob就可以自由地支配他们的比特币了。

除了直接建立支付通道之外,闪电网络还支持通过多跳的路由机制,让用户可以利用已有的支付通道网络,实现任意两个用户之间的支付,而无需直接建立通道。这个过程可以类比于银行间的清算系统,只不过在闪电网络中,没有中心化的机构来协调和监督,而是通过一种叫做哈希时间锁定合约(HTLC)的智能合约来保证资金的安全和交易的有效。下面我们具体介绍一下HTLC的工作原理:

生成哈希锁和时间锁

假设Alice想要向Dave支付0.1 BTC,但是她和Dave之间没有直接的支付通道,而是通过Bob和Carol中转。为了实现这个支付,Alice首先需要生成一个随机数R,然后对它进行哈希运算,得到一个哈希值H。R和H的作用类似于钥匙和锁,只有拥有R才能解开H。Alice把H发送给Dave,让他知道这是一个支付的标识,但不告诉他R是什么。同时,Alice还需要设置一个时间锁,比如24小时,表示如果在这段时间内,她没有把R告诉Dave,那么她可以撤销这笔支付,并把自己的1 BTC拿回来。这样,Alice就不用担心Dave拿了钱不给R,也不用担心Bob或Carol中途退出或作弊。这个时间锁可以通过比特币的 nLocktime 或 OP_CHECKLOCKTIMEVERIFY 指令来实现。

转发支付请求

Alice把H和时间锁告诉Bob,让他帮忙转发给Carol,再转发给Dave。Bob和Carol也需要生成自己的R和H,以及设置自己的时间锁,但是他们的时间锁必须比Alice的时间锁短,以便于他们有足够的时间来撤销或确认交易。比如,Bob可以设置23小时,Carol可以设置22小时。这样,如果Alice想要撤销交易,她必须在24小时内做到,否则Bob可以在23小时内把R告诉Alice,从而确认交易。同理,如果Bob想要撤销交易,他必须在23小时内做到,否则Carol可以在22小时内把R告诉Bob,从而确认交易。以此类推,直到Dave收到H和时间锁。

接收支付

当Dave收到H和时间锁后,他就知道Alice想要向他支付0.1 BTC,而且他有24小时的时间来接受或拒绝这笔支付。如果他想要接受支付,他就需要把自己的R告诉Carol,从而解开哈希锁,让Carol把0.1 BTC转给他。Carol收到R后,就可以把R告诉Bob,从而让Bob把0.1 BTC转给她。Bob收到R后,就可以把R告诉Alice,从而让Alice把0.1 BTC转给他。这样,一笔从Alice到Dave的支付就通过多跳的路由完成了,而且每个中间节点都可以从中赚取一定的费用,作为提供路由服务的报酬。

以上就是比特币闪电网络的工作原理的简单介绍,希望对你有所帮助。

Tags: 闪电网络