什么是闪电网络其工作原理是什么

区块链

580人已加入

描述

你听过比特币闪电网络吗?这是一个扩容方案:

“通过使用小额支付通道网络,实现比特币扩容,每天将可以处理数十亿美元。”

他们没有告诉你的是,只有使用大型中心化的“银行”中心才能实现这个方案。

比特币社区的很多人错误地认为或者被引导认为,闪电网络(LN)是一个分布式的P2P网。

但是,这个方案是不可行的。事实上,使用一组宽松的假设,我们也可以从数学的角度证明这是不可能的。

我们将本文分为几个部分。第一部分,简单概述闪电网络。第二部分,简单说明为什么闪电网络不能实现去中心化的扩容。第三部分,更为严格的数学证明。

第一部分:闪电网络概述

比特币扩容之战

比特币最初被设计成一个点对点的现金系统,可以直接通过增加区块大小进行扩容。但是,关于网络如何实现扩容的讨论已变得更加复杂和更具有争议。

57名Bitcoin“Core”开发者签署了一份官方的扩容路线图,提倡把闪电网络作为“高度去中心化”的“非带宽扩容机制”(译者注这里的“非带宽”原文是non-bandwidth)。

我们不同意并将证明这是无法做到的。阅读和理解这篇文章后,你可以自己得出你的结论。

闪电网络及其工作原理是什么?

闪电网络(LN)是一种可以提供一系列链下双向支付通道的协议。如果你想了解技术细节,Aaron van Wirdum提供非常棒的一个由三部分组成的系列。

“双向”简单来说就是两个方向,所以Alice和Bob可以打开一个私人通道互相发送比特币(在区块链下):

预期的网络

LN传道者提出了这个Alice通过Bob支付Carol的设想,我们可以扩展这个设想来构建一整个支付通道网络,从而能够在链下进行大量的交易。

但是,实际上这实现后并不是一个P2P网络,至少不是一个大规模的P2P网络。

“去中心化”VS“分布式”语义

大多数人每天谈论比特币的时候说的“去中心化”,从技术上是指一种“分布式拓扑”技术。

相反,如果没有单一的中心,拥有中心化中心机构的网络可以从技术上来说是“去中心化的”。

但是,让我们别陷入文字游戏。下面的图表应该可以把事情说清楚:

区块链

第二部分:一个给外行人看的解释:为什么闪电网络无法扩容?

我会尽可能简短地对此进行说明:

首先,你必须了解闪电网络不同于其他网络,因为你无法随时链接到另一个用户。

为了发送或是接收比特币,你需要和具体用户建立一个支付通道,或者需要一系列相互连接的通道。(一个“路由”)。

只是为了发送一笔链下交易,就创建一个通道是毫无意义的,因为它要求链上交易打开通道。你倒不如直接在链上发送一笔交易;你不需要LN。

这个设想你可以通过一些链接将交易发送到任何地方。从用户的角度来看,发送交易给其他人的潜在路径就像一个树结构:

它开始像是一个基础的数学问题

我们假设目标是规模扩大到100万用户。

让我们来思考一下:如果你有一棵树,树上有10个树枝,每根树枝有10篇叶子。你可以得到100片叶子。

如果你有1棵长着10根树枝的树,每根树枝有10个小树枝,每个小树枝又10个小树枝等等…你可以进行到第六层“深度”并得到:10 x 10 x 10 x 10 x 10 x 10, 或简单表示即:10⁶,等于一百万。

因为你从树枝跳到树枝,跳6次得到树叶,我们可以说进行了“6跳”。因此,10个树枝6跳,在我们的案例中:10通道6跳。

那么,挑战是什么呢?

你的钱无法同时存在两个地方

如果我们假设,我们需要10个支付通道进行6跳达到这个网络,这意味着你需要把你的比特币分为10份。

但是,可能只有其中一个通道可以在某一特定时间可以到达预期的接收者。这意味着你只能转部分的钱,例如10%。

我们可以创建两个通道,进行20跳来解决这个问题吗?我们稍后会回到这个问题。首先,让我们先了解另一个重要的事实:

每个人都在借钱给另外一个人

想象一下Alice想要通过Bob发送1个比特币给Carol, 像这样:Alice-》Bob-》Carol

为了发送交易,Bob在与Carol连接通道的时候,余额里必须至少有1BTC。本质上,Alice是借Bob的钱支付给Carol。

Bob在[Bob-》Carol]通道将自己的1BTC转给Carol。而Alice在[Alice-》Bob]通道上将1BTC给Bob。这就是它的工作原理——Alice不能“给”1BTC给Bob,然后传给Carol。

这实际上是贷款,因为网络使用时间锁来消除保管风险:Alice在确认Bob已经支付Carol之前不会偿还Bob。

实际上,在达到目的地的路径中每一跳都必须要有足够的资金来进行每一笔交易。所以,跳数越多,借贷的负担成倍地变得更大。

为什么这是一个大问题?

大量的“跳”意味着交易破坏(Deal-Breaker)

让我们假设所有人使用进行20跳的路由,大多数用户每个月消费1000美金。如果所有人都做完成了自己要完成的部分来帮助发送交易,每个用户每个月路由寻径所需的交易金额为2000美金。

这可能吗?

这取决于很多因素,包括:一个路由寻径的时间和交易数量。

即使我们(可能很宽松的)假设,用户可以路由的交易加载量是正常交易加载量的10倍,并其在通道可用性只减少50%,那么他所需的通道数量将是平时的两倍。

在现实中,甚至更糟糕

至少还有5个额外的问题会使情况变得更糟。

1.即使我们从基础数学开始:10⁶=1,000,000并不太适用。如果我们假设peers大多是随机链接,并且没有一个中央机构来规划路径,则有一定的成功概率。百万分之一的机会,重复一百万次,只能产生63%的成功率。选择两百万次,成功率增加到84%,这也意味着要增加通道的数量。

2.当用户花费他们的收入时,可用的路径就会降级,直到存入更多的资金。换句话说,当一个人在网络上收到一笔薪水支付和存款时,他们的通道达到最大值,具备完成路径的能力。但是随着这笔钱被花掉,这个能力也降到了0。平均来看,这种模式将路径的能力砍掉一半,并需要双倍的通道。

3.你帮人路由了钱也改了当前的通道中的资金分配这会进一步减小可用的通道数量。

4.在任何群体都会有贫富差距。因此,能够发送资金给任意其他随机用户的用户数量只是网络的一小部分。这个问题将随着跳的数量增加而呈指数级被放大。

5.这里还一直存在着一个风险:链接的通道变无效(不论是有意地或是无意地)。这个风险也将随着跳的数量增加而呈指数级增加。

简短总结

在大型网络要通过一系列分叉的通道找到某人,你要么需要大量的通道,要么进行大量的跳。

二者都有一个非常大的问题。大量的通道意味着用户必须划分他们的资金,除了接受小额支付什么都做不了。而进行大量跳意味着所有人的钱将都会被占用来路由别人的钱。

结论:一个完全不可用的系统

随着网络规模达到100万个用户,似乎并没有现实可行的方法可以避免这些问题。将资金划分到许多通道上,以及不断将钱借贷出去,二者都将使网络不可用。

唯一能想到的办法是,要么A)每个人都存入远远超过他们所需要转的资金,或者B)系统依靠于一个大型中心化机构。二者都不是一个去中心化的扩容方案,甚至不是其中重要的组成部分。

第三部分:非正式的数学证明

1. 假设

准确搭建一个有一大群人,并且实际上并不真实存在的理论系统网络模型显然是不可能的。我们这里做了一些假设,一些是事实,一些是影射,以及一些批评证据。

在这个情况下,我们旨在通过概率计算,演示每个用户需要拥有大量打开的支付通道,因此,从根本上100万用户规模的系统是无法运行的。

2. 需要通道和跳,没有约束条件

通过将网络搭建成100万个节点的复杂模型,我们将检测在在给定一定数量的开放通道C和允许进行的一定数量的跳H下,找到一个随机Peer的概率。

从用户的角度来看,通过分叉的通道找到远处的peers类似于树结构。树叶的数量呈指数增长并且有可能是交易的目的地。

为了简化计算,我们将忽略树上的分支可能已经连接到树上另一个分支的可能性(例如一个祖先或表亲)。

这种可能性是将分支节点数量降低,因为我们试图证明一个相对低数量的Peer可以才能完成在大量通道和跳来相互到达各个节点,而且真实节点数量可能要比计算值还得更少,因为我们使用了非常宽松的假设(以强化证明)。

假设n是叶子的数量,定义C^H。例如,10个已经打开的通道加上6跳就是 10⁶ = 1,000,000。

The probability P for failing to choosing a member of a set |N| with cardinality n by sampling n times, with replacement is:(译者注:这句句话我也不知道怎么译,反正就是一个概率P的计算式。)

区块链

通过取不同的指数e,我们可以计算出相应的概率:

区块链

使用这个公式,我们可以计算出一些至少达到80%概率的初始值;但是,这并没有考虑尚未讨论到的其他因素:

区块链

3. 使用固定数量的货币,需要的最少通道和跳数量要求

路线上的所有跳都必须拥有足够的资金来处理任何一笔他们希望服务的付款。这就是货币限制。

搭建一个拥有大量金融组合和消费模式的100万用户的网络是不可能的,因为有太多未知因素。

但是,我们使用一个非常宽泛的常识性假设,很多或大多数用户将以某种定期间隔收到某种收入,并存到LN用来消费。

存入资金通常用来消费或者最终用来提现。(我们将假设LN不是用作为一种储蓄工具)

当用户花费资金的时候,可用于路由寻径的支付通道将会降级,要么是因为一个通道关闭,或者是因为提供的资金减少。当额外的资金存入,路由的能力将会恢复。

我们没有哪些和多少用户何时以及多久得到多少资金的详细模型。但是我们可以根据大数定律总结一组用户的行为,该定律指出“从大量实验获得的平均结果将趋向于预期值。”

典型的消费周期有收入、支出组成,然后重复。我们可以用reverse锯齿波总结这这个行为:

区块链

支付达到峰值,然后收入逐渐等于消费,直到下一次支付。

对函数进行积分得到这个周期一半的值,正如预期的那样:

区块链

我们的结果变成:

区块链

这也是我们做的一个非常宽松的假设,即所有的用户都帮助其他用户进行路由寻径。现实中,财富分配不均很可能会给系统带来额外的重大限制。

4. 借贷的额外限制

除了划分资金和寻找路径,我们假设用户还通过帮助其他用户发送支付交易参与网络。

这将以两种方式中断用户。

首先,它可能导致用户个人资金的分配不均,收支不平衡,将减少可用路径的数量。随着时间的推移,理论上这可以通过从任意通道任意方向流入的资金最终达到平衡。但是,在给定时间内,每个用户都会受到很大程度差别的限制。

第二个是,资金用于帮助其他人进行支付的时候,在这期间用户无法使用这笔资金。

总体上我们应该忽略第一个中断因素,并构建第二种情况的模型。我们应该采取简单的方法来假设,所有的用户的平均交易次数和支出总额是相同的,并假设每个用户都平等地参与路由寻径。

让我们定义以下的变量:

U: 用户数量

H: 跳的次数

V:一段时间内网络交易总量

v: 一段时间内每个用户的交易总量

r:一段时间内每个用户的routed总量

D: 一段测量时间内的持续时间(小时)

t: 时间段D内每个用户的平均交易次数

d: 平均route的持续时间(小时)

由于每个跳需要为它所参与的路由寻径中的任意交易发送全部交易金额,所以在一段时间内整个网络发送的交易量= VH。

因此r= VH/U 又 V/U=v,所以r=Hv。

例如,如果v=$1000,图像如下:

区块链

让我们来介绍一下衡量路由寻径的能力美元-小时的概念。

当然,每个用户只能花一次自己的钱。但是,为了发送其他人的资金,我们可以将美元-小时作为他们的通道中的美元总额乘以可用小时数。例如,1000美元一周时间是168000美元-

然后我们可以计算商Q,代表为其他人发送交易后剩余的可用路由寻径能力的百分:

Q = 1- (d(H-1))/D

注意,v 和t 没有出现在等式中,因为它们都被分离出来,但是它们隐藏在比率d/D中。H-1是因为1跳不需要超过用户自己的交易(r=Hv)以外的任何网络成本。

例如,如果网络使用4跳,路由寻径需要4个小时,用户用于路由寻径的余额是建立在168(1周)的基础上,那么:

Q=1- ((4)*(3))/168 ) = 0.92

现在我们的概率公式:

区块链

5. 根据帕累托分配确定交易限制

似乎没有必要证明,如果资金需要分成很多份,对可用性将会造成很大的负面影响。但是,为了完成性,我们列入这一部分。

我们假设大多数消费者和企业根据帕累托分配进行消费,因此每个用户进行相对较少的大型交易、几个中型交易、大量的小额交易。

帕累托概率密度分布函数表示为:

区块链

这种分布不会因应用常数而发生改变,但是我们通过Y值乘以1000,用一些真实世界的值来更好的搭建这个模型,以使big items的美元金额变得很大,求一组典型的X值(以每个美元价格交易的数量)的积分,例如50。(译者注:我也译不准,The distribution does not change by applying constants, but we can better envision the model with some real world values by multiplying the y-values by 1000, so that dollar amounts for big items become substantial, and integrate over a typical set of x values (number of transactions at each dollar value), say 50.)

区块链

交易总量= $980。使用10%,价值$98,

我们可以求解等式:98 = 1000/x²,得到3.194笔交易。

接下来,我们将求最小一组交易的积分,得到交易金额小于我们的最小值$98的交易总额:

区块链

因为293.48/980=.299,我们可以说,如果使用10个通道,只能实现29.9%的所需经济活动。

结语

我希望批评家来挑刺。我鼓励你们做出自己的批判性思考。不要忘了为了忽略贫富差距而做出了宽松的假设。

记住,比特币必须是去中心化的。警惕合理化“只要基本层是去中心化的,中心化就是OK的”这种观点。这是一个阴险的陷阱,迫使用户离开基本层并进入中心化的系统。我们绝对不允许这样的事情。

因此,是否比特币会因为第二层不能用而陷入麻烦呢?不,根本不会。比特币的设计是通过简单地增加区块大小实现链上扩容的。如果我们允许的话,它是可以做到的。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分