【论文阅读】Modeling of Bitcoin’s Blockchain Delivery Network

news2024/11/25 6:33:15

文章目录

  • 摘要
  • 一、引言
  • 二、相关工作
    • A. BTC 网络的测量报告
    • B. 业务概况对 BTC 网络的影响
    • C. 数据分布算法
  • 三、节点连接性、RTT 和块大小
    • A. 建模节点连接
    • B. 建模往返时间 (RTT)
    • C. 建模区块和交易传输时间
  • 四、数据分发和传播
  • 五、交易费率和块费率
  • 六、分布式网络的排队模型
    • A. 区块的节点响应时间
    • B. 交易的节点响应时间
    • C. 数据分发时间
  • 七、分叉
    • A. 分叉概率和分区大小
    • B. 账本不一致的持续时间
  • 八、绩效结果
    • A.节点连通性和数据分布
    • B. 数据到达率
    • C. 块流量的排队性能
    • D. 交易流量的排队性能
    • E. 分叉和不一致周期
  • 九、结论

摘要

在本文中,我们为比特币的区块链分发网络提供了一个全面的分析模型。该模型的组件来自最近的测量和业务分析报告。我们使用网络中的分支过程对数据分布算法进行建模,节点连接性随机分布。然后,我们将 Jackson 网络模型应用于整个网络,其中各个节点作为优先级 M/G/1 排队系统运行。到达节点的数据被建模为非齐次泊松过程,其中到达节点的速率分布来自数据传输协议的分析模型。在性能结果中,我们展示了区块和交易分发时间的概率分布、节点响应时间、分叉概率、网络分区大小和账本不一致期的持续时间。

一、引言

比特币,以下简称 BTC,是一种分散的加密货币系统,运行在通过 P2P 网络互连的多个处理节点上 [22]。它基于区块链技术,该技术实现了一个分布式的,或者更确切地说,是复制的分类帐,其中包含打包成块的金融交易 [3]、[4]、[20]、[29]。交易记录了从付款人到收款人的资金转移,并且必须进行验证以确保所有声称输入的价值等于或大于新输出的总和 [25]。交易被分组到块中,这些块由块头中的随机数“密封”,保证块哈希包含所需数量的前导零。此步骤需要不平凡的计算工作,称为工作量证明或 PoW。每个块还包含前一个块的哈希值,从而创建在每个处理节点上保存的块的单个链表。

新创建或“挖掘”的块被分发到网络以进行进一步验证;奖励区块矿工以激励挖矿工作。收到新块后,正在验证相同(或几乎相同)交易集的节点将放弃他们的努力,验证新到达的块并将其插入其分类账,并从未验证的池中继续交易验证交易。为了调节区块挖掘的速度,比特币协议定期调整计算区块头中随机数的难度,使得平均每 10 分钟挖掘一次新区块 [22]。

转发块或交易的长时间延迟会导致安全漏洞 [5]、[11]、[12]、[17]、[23]、[24]、[27],从而影响分类帐的一致性。一个重要的漏洞是分叉,当一些节点将一个块附加到他们的账本上而其他节点附加另一个块时,就会发生分叉,从而使分布式账本处于不一致的状态。如果攻击者能够以足够高的速率生成块,并因此构建自己的区块链扩展来接管区块链头部,则可以利用分叉进行攻击。这种情况可以通过网络中的快速数据传播来缓解。

在这项工作中,我们基于对 P2P 网络上比特币业务结构的分析 [20]、[29] 以及有关连接性、往返时间 (RTT)、块大小和分布的最新测量报告,开发了比特币 P2P 网络的详细分析模型网络中的区块挖掘能力 [1]、[6]、[8]、[21]、[28]。 BTC 网络的分析建模面临许多挑战。例如,节点间连接数量的可变性会影响数据分发算法,并引入进入节点的数据速率的可变性。这引入了数据到达网络节点的非齐次泊松过程,进而影响节点的进一步排队分析,由于服务时间的未知属性,需要以 M/G/1 方式进行[30]。另一个问题是块和交易流量需要在不同的队列中分开并按优先级顺序处理。解决所有这些问题允许使用 Jackson 网络方法 [19] 分析区块链网络。

我们的模型包括节点连通性、RTT 概率分布、块大小、非均匀分布块矿工的影响、数据分布(八卦)算法、单个节点的排队模型和整个网络排队模型。然后,该模型用于查找传递跃点数、每一跳中接收数据的节点数量以及区块链网络中的区块和交易传递时间的概率分布。此外,我们推导出分叉概率的阶段、分叉事件时网络分区的大小以及账本不一致期的持续时间,所有这些都可以帮助分析共识协议。

本文的其余部分组织如下:第二部分讨论相关工作,而第三部分根据文献中报告的测量结果介绍连接性、RTT 和块大小的分析模型。在第四节中,我们开发了一个数据分发协议模型。传入数据到达过程的模型在第五节中给出。在第六节中,我们提出了分发网络的排队模型,并推导了网络中块和事务的总分发时间。分叉概率和不一致持续时间的推导在第七节中介绍,然后在第八节中进行性能评估。最后,第九节总结了本文。

二、相关工作

相关工作可以分为报告 BTC 网络测量的论文、报告 BTC 业务统计的论文以及处理 BTC 数据分布算法的论文。

A. BTC 网络的测量报告

在过去几年中出现了一些与比特币网络各个方面的测量相关的报告。 [1]、[6]、[8]、[21]、[28] 中报告了有关 BTC 网络规模、节点地理分布、每个节点的连接数以及区块和交易统计数据的组合。在 [1] 中报告了往返时间 (RTT) 的测量以及 BTC 网络中的节点分布以及奥地利维也纳的有利位置; [10] 中介绍了来自专用网络的类似测量结果。值得注意的是,所有报告的作品都使用了测量工具,这些工具在一定程度上干扰了 BTC 网络中的真实活动。

B. 业务概况对 BTC 网络的影响

另一组工作揭示了 BTC 网络的业务概况 [20],[29],我们认为这是 BTC 网络架构的主要驱动力。他们表明,比特币被不同种类的企业使用,这些企业的金融交易频率和价值各不相同。根据交易数量,业务可分为博彩、挖矿、交易所、钱包、编程和硬件服务、媒体新闻、在线供应商、场外交易、捐赠、比特币服务等。根据交易金额,我们可以区分交易所、供应商、钱包、采矿和赌博 [20]。企业的地理分布在过去几年中发生了变化。例如,2015 年大部分交易来自美国,重点是博彩业务,其次是西欧国家,重点是挖矿。最近,西欧的 BTC 节点数量已经超过了美国的节点数量,但中国的区块挖掘强度有所增加,大约 70% 的区块被开采 [1],[10]。

C. 数据分布算法

[5] 中报告了测量 BTC 网络数据分布算法性能的最早也是最有影响力的工作之一。结果表明,块分发时间呈指数分布,在 100 kbps 的 TCP 连接吞吐量下,分叉概率约为 1.8%,但节点连接、RTT 分布和网络大小的值不明确。

有关数据分发范式的后续文献并未提供完全一致的图景。例如,[27] 只考虑广播/泛洪,[5],[7] 使用基于八卦(即受控泛洪)的算法,[24] 考虑两种数据分发协议。然而,在不断增加的交易流量下,纯广播协议往往无法扩展到大型网络。我们的数据分发算法类似于随机谣言传播 [18],但该工作假设源的每次传输完全连接和随机选择对等点。在这项工作中,源节点具有在用于后续数据分发的 TCP 连接建立之前随机选择的对等点。

关于块到达过程,人们普遍认为新块完成 PoW 的时间呈指数分布,即块根据齐次泊松过程到达网络 [5]、[9]、[13]、[22] , [27].然而,[2] 表明非齐次泊松过程可能是更好的匹配,因为定期调整计算块头中随机数的难度。通常假设块传播时间遵循指数概率分布 [5]、[27]。

[7]、[24] 中讨论了理解比特币区块链网络层以防止安全攻击的重要性。连通性、加入/离开程序和通信策略也被提及,但没有进行定性或定量评估。

三、节点连接性、RTT 和块大小

BTC 网络的拓扑结构受业务类型的影响,在某种程度上还受地理/国家因素的影响。众所周知,每个 BTC 节点可以连接到 8 个出站对等点(节点)和最多 125 个入站对等点。虽然这似乎暗示链接是单向的,但这只是一个不幸的术语选择,因为比特币技术社区信息明确指出出站对等点是“我们的节点出去并找到的节点”,而入站对等点指的是“通过网络找到我们的节点”。两种类型的连接都使用默认双向的 TCP 传输协议,并且比特币协议包括双向消息传输这一事实进一步证实了这一点,如下文第 IV 节所述。

我们假设这种限制有一个相当有趣的结果,尽管可能是无意的:即功能划分为高度连接的核心和轻度连接的边缘。也就是说,一些具有少量连接的 BTC 节点——比如最多 8 个左右——充当边缘服务器,将小型企业与网络核心。这些业务边缘单元(即业务内节点)连接到由网关节点(通用或业务特定网关节点)组成的网络核心,具有更高的连接性,可确保交易和块在整个网络中快速传播,并且,因此,有助于支持比特币分布式账本的高效运行。区块挖掘、交易所、赌博和其他具有高财务激励的高度集中的业务就是这种情况 [21],它们可能具有高连接性的节点,从而有效地导致具有高聚类系数和模块化的网络社区。也有可能(并且在经济上合理)让企业设置网关以共享企业间和企业内互连之间的连接。这种类型的共享清楚地反映了 BTC 网络的社交网络方面 [20]。

分区的存在似乎已通过实证研究得到证实,该实证研究发现连接性在 5 到 13 范围内的边缘节点和连接性在 14 以上范围内的网关节点,最高值在 60​​ 左右,即使规则允许最多 125 个连接 [6]、[20]。 [21] 中报告了更大数量的连接,但该观察结果(没有其他报告证实)可能反映了使用并发 TCP 连接来增加吞吐量,就像现代浏览器所做的那样。然而,吞吐量的增加受到节点可用带宽的限制[10];另外,由于 TCP 固有的公平性,每个连接的吞吐量会下降。

A. 建模节点连接

现在让我们介绍将用作 BTC 网络中数据传输算法构建块的分析子模型。

网关 BTC 节点的 TCP 连接数服从参数 a 在 2 到 2.4 范围内的无标度长尾分布,具体取决于业务类型和国家/地区 [20]。分布的长尾部分的节点度数在 14 到 60 之间。该分布可以用概率生成函数 (PGF) 来表征
在这里插入图片描述
并且比例因子 L ¼ 1= P60 k=14 1 ka。另一组节点的度数在 5 到 13 个连接之间,平均值约为 8 [6]、[21]、[28]。对于非网关节点,每个节点的连接数遵循截断二项式概率分布 CnðzÞ ¼ P13 k¼5 pkzk,其范围在 5 到 13 个连接之间,平均值为 8,即 Cnð1Þ ¼ 1 和 Cn0 ð1Þ ¼ 8。继 [6 ], [20], [21], [29] 我们假设最终的连通性分布可以作为
在这里插入图片描述
在这里插入图片描述

其中 mmin ¼ 5 和 mmax ¼ 60。权重系数 km 的值可以在 0.3 到 0.7 的范围内,注意它会影响网络直径。在 ¼ 2 和 km ¼ 0:4 下得到的概率密度函数 (pdf),如图 1(a) 所示,与 [6] 中的测量数据非常相似。

B. 建模往返时间 (RTT)

根据[1],大约 50% 的 IP 地址位于欧盟,30% 位于北美,20% 位于亚洲; [10] 中报道了类似的结果。由于我们的有利位置在北美大陆,我们可以通过将每个大陆的分段与指数分布相结合来创建 RTT 的总概率分布,如下所示:

(1) 在北美,RTT 的范围为 0 到 100 毫秒,速率为 mNA ¼ 1=0:05 使其在该区域的 pdf 为 mNAe mNAðx 0:01Þ Hð0:1 xÞHðx 0:01Þ,其中 HðxÞ 表示分段 Heaviside 函数,当 x 0 时定义为 1,当 x < 0 时定义为 0 .

(2)北美和欧盟之间的RTT范围在100~200ms之间,速率为mEU ¼ 1=0:15,因此其在该地区的pdf可以表示为mEUe mEUðx 0:1Þ Hð0:2 xÞHðx 0:1Þ。

(3) 北美和亚洲之间的RTT范围在200~400 ms之间,速率为mAS ¼ 1=0:3,其在该地区的pdf可以表示为 mASe mASðx 0:2Þ Hð0:4 xÞHðx 0:2Þ。

在这里插入图片描述
因此,RTT 的联合 pdf 具有三个不同的组成部分:

在这里插入图片描述
其中 Cf 是从总概率条件导出的

在这里插入图片描述
然而,块和事务分发协议需要一个 RTT 和一个单向传播时间,如图 2 所示。如果我们假设两个方向的传播时间高度相关,那么块/事务分发协议需要 1.5RTT。它的 pdf f1:5RTT ðxÞ 可以类似于 (3) 计算,但使用 1.5 阈值。单 RTT 和双 RTT 的 Laplace-Stieltjes 变换 (LST) 可以计算为

在这里插入图片描述
得到的累积分布函数 (CDF) 如图 1(b) 所示,它与 [1] 中的测量数据非常相似。此外,该分布的矩接近于指数分布的矩。

C. 建模区块和交易传输时间

传输块或事务的时间取决于它们的长度。根据跟踪网站上的信息,在 2019 年 2 月 24 日至 5 月 26 日的 13 周期间,块大小介于 0.55 MB 和 1.1 MB 之间2。块大小分布可以近似为

在这里插入图片描述
以数百 KB 表示。给定每个连接 2 Mbps 的 TCP 吞吐量符合实际测量 [10],这导致传输时间的分布(以秒为单位)用 LST 变换描述
在这里插入图片描述
平均块大小和传输时间分别约为 850 KB 和 3.4 秒。

网络中的总块到达率是 b;tot ¼ 1 600,因为在具有 N 个节点的整个网络中每 10 分钟开采一个块。为了对挖矿集群的存在进行建模并考虑通过其网关 [6]、[10]、[21] 注入的流量的影响,我们假设所有节点都参与块分发,但只有 KfN 个节点将挖出的块注入到速率为 b ¼ b;tot Kf N 的网络,其中 0 < Kf < 1。

根据上述跟踪网站上提供的信息,平均交易到达率在每秒 4.07 到 4.31 左右。我们假设每个网络的总交易到达率为每秒 t;tot ¼ 4:31。由于比特币业务的异质性,可以合理地假设交易到达率在整个网络中是统一的,比率为 t ¼ t;tot=N。交易验证时间和它的传输时间一样,有几十毫秒量级。因此,事务处理时间主要取决于一个半 RTT,我们假设它遵循 (5) 给出的概率分布。

四、数据分发和传播

我们考虑具有 N 个节点的 BTC 网络,其中节点连接具有 (2) 中描述的 PGF MxðzÞ。两个节点连接的概率是 pb ¼ Pmmax i¼mmin mxi i N ¼ Mx N ,网络的直径 DN;MxðzÞ 取决于网络大小和节点之间的连接性。

如图 2 所示,块和事务传递协议在每个 TCP 连接上遵循双向握手。作为块或交易源的节点将向其直接邻居发送 inv(库存)消息。从相邻节点接收到 inv 消息的节点如果没有块/交易被宣布将发送一个 getdata 请求,否则忽略 inv 消息。结果,块和事务分阶段(几代)通过网络传播。

我们使用分支过程 [14] 对通过网络转发的数据(即块和事务)进行建模。传播协议对于由特定节点挖掘的块或到达该节点的交易具有相同的行为作为覆盖网络的入口。在第一阶段,源节点将充当图形生成树的根,并通过其所有 TCP 连接传输数据。它的第一跳邻居包括已经接收到数据的第一代节点,它们将把这些数据发送给它们的下一跳邻居(第二代),等等。为清楚起见,我们将索引 i ¼ 0 … DN;MxðzÞ 1 分配给分发协议的每个阶段。第一代节点数的 PGF 为 H1ðzÞ ¼ Pmmax;1 i¼mmin;1 mxizi ¼ MxðzÞ,其中 MxðzÞ 是 (2) 中定义的连通性 PGF。第一个数据分发阶段(生成)的平均节点数是 H1 ¼ H0 ð1Þ。

由于每个节点的 TCP 连接总数的概率分布在所有节点上是均匀的,并且 TCP 连接是双向的,因此每个节点是每一代 i 的相同连接数的源和目的地。但是,我们需要解决以下场景

  • 在分发算法的第 i 个阶段,一些节点可能相互连接,因此它们不会相互传输数据,因为它们已经从阶段 i 1 中的节点获得了数据。

  • 此外,当前第 i 代中的某些节点可能会连接到第 i + 1 阶段的同一节点,这将减少第 i + 1 代中的节点数量。这也减少了第 i + 1 代中的节点将连接的 TCP 连接数用于进一步将数据分发到第 i + 2 代中的节点。

BTC 八卦算法建模的挑战源于这样一个事实,即节点已通过其接收数据项的连接以及与已经拥有该数据项的节点的连接不能用于数据分发。令 MxiðzÞ、LociðzÞ 和 OiðzÞ 表示可用于传输到第 i 代节点的连接总数、指向同一代 i 中其他节点的连接数以及可用于向节点传输数据的连接数的 PGF分别在第 i + 1 代。对于从矿工(作为生成树的根)接收数据的第一代节点,这些 PGF 是

在这里插入图片描述
基于每相相同数量的输出和输入连接,第二代节点将具有 PGF O1ðzÞ 描述的输入连接数。剔除二代本地连接后,可向三代节点发送数据的连接数为

在这里插入图片描述
如上所述,从第一代到第二代的一些连接可能在同一节点结束。我们可以使用 PGF 对进入第二代节点的重叠连接数进行建模在这里插入图片描述
因此,第二代节点可用于继续数据分发的 TCP 连接数的 PGF 为在这里插入图片描述
这导致第二代数据分布算法中节点数(种群)的PGF为在这里插入图片描述
然后,将 Mx2ðzÞ 和 H2ðzÞ 的值用于一组类似于 (9) 至 (12) 的方程式,以计算第三阶段的节点连通性和人口;对下一阶段重复此操作,总数量为 DN;MxðzÞ 1 个阶段。在第 i 代的每个阶段中,i ¼ 0 … DN;MxðzÞ 1 计算为 Hi ¼ H0 ið1Þ,并且在第 i 代达到给定节点的概率为在这里插入图片描述
上一代到达的平均节点数和数据不会被转发的概率可以计算为在这里插入图片描述

五、交易费率和块费率

第四部分的模型描述了一个数据项的网络分布。但是网络中的节点也可以注入新挖出的区块进行验证分发,任何节点都可以注入新的交易进行验证和分发。因此,提供给任何网络节点的流量包括要进行进一步分发的新流量和正在通过网络分发的流量。

当其中的所有交易都有效并且工作量证明 (PoW) 完成时,将开采一个新区块。在听到新挖出的区块后,当前正在挖矿的节点将取消其挖矿过程。所有节点都参与块分发,但如第 III 节所述,只有 KfN; 0 < Kf < 1;节点正在向网络注入开采的区块。

由于数据分发时间有限,竞争块可能会在比块分发时间更短的时间窗口内被两个或多个节点通过网络挖掘和分发。这导致了分叉,即不同区块作为网络不同区域的区块链头部链接的情况。假设所有节点具有相同的计算能力(哈希率),则每个节点的新块的泊松到达率可以写为在这里插入图片描述
其中 Pfork 表示分叉概率,将在下面的第七节中推导。

我们假设新交易以 t 的速率到达每个节点,如第 III 节所述。在网络的每个节点,进入网络的块和交易的新鲜流量的 PGF 分别是在这里插入图片描述
让 vb 和 vt 分别表示每个节点的输出块和交易率。对于初始阶段 i ¼ 0,块和交易流量的输入和输出速率相同:在这里插入图片描述

对于每个后续阶段 i ¼ 1 … DN;MxðzÞ 1,由于 TCP 连接是双向的,因此输入和输出、块和交易流量的 PGF 是在这里插入图片描述

由于每个节点都分发所有阶段的数据,所以提供给每个节点的总流量可以用在这里插入图片描述
分别针对区块和交易:

因此,由于区块和交易在不同阶段的分布组合以及每个节点与网络其余部分的随机连接,每个节点的输入和输出数据速率是随机变量。块流量的输出数据速率分布的前两个中心矩可以从 (19) 中获得为 vb;tot ¼ d dz vb;totðzÞjz¼1 和 varðvb;totÞ ¼ d2 dz2 vb;totðzÞjz¼1 + vbtot vb;tot 2;可以通过类似的方式获得交易流量的相应值。由于篇幅限制,我们没有显示第三和第四中心矩的表达式。

由于 (19) 的复杂性,我们分别将块和交易的输出数据速率的概率分布建模为密度为

在这里插入图片描述
其中区块和交易流量的参数定义为在这里插入图片描述

六、分布式网络的排队模型

节点通过其 TCP 连接在不同的分发阶段接收块和交易,但它们只接收和转发它们还没有的数据。此外,区块和交易加入不同的验证池,前者优先于后者。这个框架可以使用应用于非抢占式优先级队列的 Jackson 网络方法 [19] 建模,如 [15]、[16]、[26] 中所讨论的。这种方法是合理的,因为块到达率远低于交易到达率,因此前者(具有更高优先级)对后者的不利影响不会很高。网络中的每个节点都有两个队列,按照块优先于事务的优先顺序组织。每个队列由外部到达的已挖掘块和新交易提供,但如果块或交易已经在队列中并且不需要进一步转发,节点也可以删除它们。由于不会转发的数据不会加入转发队列,因此一个节点的输入速率由连接到它的所有节点的输出速率(所有协议阶段的)组成。

A. 区块的节点响应时间

处理和转发单个块的时间包括块验证时间、交换库存和获取数据消息的时间,其中包括一个半平均往返时间 (RTT-s) 和传输块的时间。区块验证时间大约为几毫秒,而(3)和(5)中所示的具有累积分布的一个半 RTT 的平均值约为 0.19 秒。通过 TCP 连接的块传输时间的概率分布由 (7) 给出。块处理时间的分布可以用 LST 来描述在这里插入图片描述
可以使用 LST [19] 的属性找到块服务时间 bbðxÞ 的概率密度函数作为在这里插入图片描述
交易验证和传输时间远小于 1.5RTT,这就是为什么交易服务时间的 pdf 可以近似为 btðxÞ ¼ f1:5RTT ðxÞ。

对于块和事务队列的非抢占式优先级 M/G/1 分析[30],我们需要块服务时间内块到达数、事务服务时间内块到达数和事务到达数的概率分布在交易服务期间,其 PGF 将分别用 AbðzÞ、AbtðzÞ 和 AtðzÞ 表示。

该模型的一个具体挑战是泊松过程的块和交易到达率 vb;tot 和 vb;tot 是随机的,并且必须修改 [30] 中的框架。为了计算区块和交易服务时间内到达过程的概率分布,我们需要导出个体到达概率:在这里插入图片描述
从中我们可以推导出相应的 PGF:在这里插入图片描述
PGF 的泰勒级数展开的计算复杂度相当高,但我们发现 AtðzÞ 大约有 24 个级数成员,AbðzÞ 有大约 6 个级数成员; AbtðzÞ 提供足够的精度 10 6,尽管确切的数字取决于负载。块流量(更高优先级)表示块离开后留在队列中的块数的 PGF 和表示块响应时间的 LST 具有以下形式:在这里插入图片描述
其中 vtot ¼ vb;tot + vt;tot, rb;tot ¼ vb;tot=mb, rt;tot ¼ vt;tot=mt 和 rtot ¼ rb;tot + rt;tot。然后,可以得到块的节点响应时间的第k时刻在这里插入图片描述
块的节点响应时间的变异系数、偏度和峰度计算如下在这里插入图片描述
在这里插入图片描述

B. 交易的节点响应时间

事务具有较低的优先级,事务的响应时间需要包括块服务的整个繁忙期。为此,我们需要找到 PGF FðzÞ 为节点在繁忙期间服务的块数。这个 PGF 可以从差分方程 [30] 中找到在这里插入图片描述
可以通过将两边展开成幂级数并使相应的系数相等来求解。块繁忙期的 LST 可以找到为在这里插入图片描述
事务离开后留在队列中的事务数的 PGF 和事务响应时间的 LST 可以写成在这里插入图片描述

C. 数据分发时间

使用第四节中计算的数据分发协议中的阶段概率,我们可以计算总区块/交易分发持续时间的 LST 为在这里插入图片描述
从中可以找到分发时间的所有必要时刻。由于式(39)的复杂性,使用逆变换很难得到概率密度函数。相反,我们使用具有概率密度函数的 Gamma 分布来估计数据分布时间在这里插入图片描述

七、分叉

比特币分布式账本的正常运行假设所有节点都有相同的链接块列表,所有账本都有相同的块 Y 作为各自链的头部。然而,当两个或多个竞争块都没有完成通过网络的分发时,可能会在时间窗口内挖掘并发送两个或多个竞争块。区块交易集可能部分或全部重叠,除了所谓的 coinbase 交易,它将挖矿费用分配给矿工节点,因此必须特定于每个区块 [22]。

让我们假设块 A 在时间 t0 已经被挖掘并且正在分发过程中,并且在时间 t0 < t1 < b 另一个节点挖掘块 B 并开始将其分发到网络。结果,一些节点会将区块 A 作为头部链接,而其他节点会将区块 B 链接在其本地分类帐的头部。这在区块链中创建了两个具有不同头部的分区并创建了一个分叉——分布式账本中的不一致状态,如图 3 所示。可能存在多路分叉,但其概率非常低,我们将在进一步考虑时忽略它.

不一致性通过新块 C 的到来来解决。在一种情况下,块 C 在块 A 和 B 完成传播后到达,如图 4 的上图所示,我们需要考虑块所在的分区C被开采
在这里插入图片描述
在以 A 为头的原始分区中,块 C 将毫无问题地链接到 A 并成为新的主头;在非起源分区中,以B为头,区块C将凭借其高度(即距区块链开头-创世块的距离)超过当前头而成为主头,而B将成为边头。新侧头独有的交易(即不包含在新头中)将被移回交易池缓冲区,并在来自非原始分区的节点中被视为未确认。

在另一种情况下,块 C 可能会被挖掘,而先前的块仍在分配过程中,如图 4 的下图所示。知道 A 或 B 的节点将以以下方式处理新块类似于上面的情况。尚不知道 A 或 B 的节点会将 C 视为孤立块:即,它们会在处理 C 之前从传输节点请求其先前的块,并最终将其附加到其区块链。

A. 分叉概率和分区大小

我们拥有的关于块分布的信息允许我们为块 A 的不同分布阶段开发分叉概率。设 Pth iðsÞ ¼ T bðsÞ i 表示路径延迟超过 1 i 的 LST DN;MxðzÞ 啤酒花;可以使用(32)中定义的矩通过适当的 Gamma 函数获得相应的概率密度函数:在这里插入图片描述
在这里插入图片描述
不幸的是,来自 (44) 的 Pfork 参与了由 (15) 定义的块到达率。这就需要从较低的暂定值开始迭代求解方程组,比如 P0 fork ¼ 0:001,直到在两次连续迭代中计算出的 Pfork 值之间的差异降到预定义的阈值以下。

概率 Pfork;i 还包括有关分叉区块链分区大小的信息,因为区块 A 已经链接到第 0 代… i 1。此外,第 1 代的所有节点都在分发区块 A,而只有区块 B 的矿工节点开始分发。因此,其余节点(假设每个节点都具有连通性 PGF MxðzÞ)将分别以概率 PA;i ¼ Hi 1 Hi 1þ1 和 PB;i ¼ 1 Hi 1þ1 连接块 A 或 B。这进一步意味着,当区块 B 出现而区块 A 处于其第 i 个分配阶段时,分区 Ai 和 Bi 的平均大小约为 Ai ¼ cvi þ ðN cviÞPA;i 和 Bi ¼ ðN cviÞPB;i。

B. 账本不一致的持续时间

图 4 中描述的不一致时期从区块 A 被挖掘开始,继续进行区块 B 和 C 的挖掘和分发,直到区块 C 在整个网络中链接时结束。由于区块C到达区块B分发时间的随机点,我们需要区块C到达后区块B剩余分发时间的概率分布。基于LST从(39)获得区块分发时间的概率分布,我们将计算已用和剩余​​块分发时间的 LST 为在这里插入图片描述
令 T l ðsÞ 表示块链接时间的 LST 作为主要或侧端;请注意,它比块分发时间小得多。分叉导致的账本不一致周期可以作为图4场景不一致持续时间的加权和得到;它可以表示为在这里插入图片描述
可能有多个连续的分叉事件,即,不是一个块的到达将解决分叉,而是两个新块到达,它们建立在不同的图 4 上。双向分叉的不一致周期。分区,从而延长分叉。在一般情况下,不一致状态可能由任意数量的连续分叉事件组成,这使我们得出分类帐不一致时间分布的一般表达式:在这里插入图片描述
请注意,(46) 中的第一项对应于块通过网络传播并“定期”更新区块链的时间,而第二项描述了解决分叉所需的时间。因此,最后一个等式有效地描述了在比特币网络中达成共识所需的时间。

八、绩效结果

我们的评估是针对 BTC 网络规模从 N ¼ 2500 到 5000 变化的,步长为 250。使用 (2) 中定义的 PGF MxðzÞ 对每个节点的连接进行建模,其中 km ¼ 0:4,而 (1) 中的长尾参数被设置为 ¼ 2 以匹配来自 [6] 的经验结果。因此,在所调查的网络规模范围内,每个节点的平均连接数约为 Mx0 ð1Þ 15:4,网络直径为 DN;MxðzÞ ¼ 4。

将新挖掘的区块注入网络的节点部分分别设置为 Kf = 1 和 Kf = 0:5。每个网络的总新事务到达率是每秒 t;tot ¼ 4:31,并且每个节点 t ¼ t;tot=N。

A.节点连通性和数据分布

每个阶段到达的平均节点数如图5(a)所示,其中最低的线对应于N ¼ 2500,而最高的线对应于N ¼ 5000;这些之间的线是单调排序的。所有线都显示每一代平均人口的指数增长,直到第三代,此时向第四代的梯度变为负值。节点属于第 i 代的概率,图 5(b),是通过将一代大小的平均大小除以网络大小获得的。结果,节点属于第四代的概率在 N = 2500 时最高,在 N = 5000 时最低,因为网络规模在增加,但连通性分布 MxðzÞ 没有改变。

B. 数据到达率

到节点的总事务到达率在图1中示出。图 6(a),圆圈和线条分别对应于 Kf ¼ 0:5 和 Kf ¼ 1 的结果。可以看出,Kf 的两个值的平均值、变异系数和偏度实际上是相同的。 (类似的观察适用于峰度,只是它的值在 12 到 18 的范围内,这就是为什么它没有在这里显示。)平均到达率随着网络规模的增加而降低,而变异系数和偏度都显示出温和的线性增加。这是由于网络规模大,节点之间的连接性很强(但分布均匀),这意味着进入一个节点的大部分流量实际上是从其他节点中继的数据,而不是本地生成的数据。因此,在接下来的讨论中,我们将仅展示 Kf ¼ 1 的结果。

另一个重要的观察结果是,块和交易到达率的行为方式相同,从图 6(b) 可以看出,它显示了到节点(线)的平均交易到达率以及平均块到达率(框)但是缩放到 N ¼ 2500 个节点的平均事务到达率的值。

这源于这样一个事实,即无论数据类型如何,通过网络的数据传播都遵循相同的模式,即它是块还是事务。平均到达率随着网络规模的增加而降低,这是因为中继流量增加到本地生成的流量,因为网络的总交易到达率保持在恒定值。在这里插入图片描述

C. 块流量的排队性能

在这里插入图片描述
块流量的排队分析结果如图 7 所示,Kf = 1;如上所述,Kf ¼ 0:5 的结果实际上是相同的。图 7(a)描述了图 5 的块的节点响应时间。平均值非常接近平均块传输时间、1.5RTT 和队列中的小等待时间的总和。由于队列中等待时间的减少,它显示出随着网络规模的非常小的下降。在观察到的节点数量范围内,变异系数变化相当低,变化很小,从大约 0.15 到 0.1,而偏度范围在 5 和 0 之间(分别对于 N ¼ 2500 和 N ¼ 5000)。对于相同的网络大小跨度,峰度在 20 到 10 之间的范围内,因此由于使用其他参数进行缩放而未显示。这些值表明,当节点数量增加时,节点响应时间的分布变得更窄且更对称,并且分布尾部的厚度变得更小。这是意料之中的,因为块大小的概率分布接近于均匀分布,并且块队列中的等待时间随着总块到达率的降低而减少。

如图 7(b)所示,块的网络分发时间还受到块分发协议的影响。

由于几乎恒定的网络直径和大量可用链接,分布算法中的平均跳数(用圆圈显示)在观察到的网络规模范围内仅增加 10%。当网络规模从 2500 个节点增加到 5000 个节点时,平均块交付时间增加了几乎相同的量,从 14.6 秒增加到大约 16 秒。同时变异系数仅为0.15左右;偏度介于 0.8 和 -0.6 之间,分别表示具有右手和左手方向的薄分布尾部;峰度小于 3。这些结果表明块传播时间遵循接近正态分布的分布,而不是 [5]、[27] 中报告的指数分布。如第 II 节所述,这种差异可能是由于网络规模等参数的不同值以及真实 BTC 网络上的测量会扰乱其运行这一事实造成的。

D. 交易流量的排队性能

交易流量的优先级低于块流量,因此交易的节点响应时间反映了两种流量类型的动态。图 8(a) 显示了响应时间的平均值,由于交易规模小得多,响应时间低于块,以及它的变异系数、偏度和峰度。由于块和交易流量强度随着网络规模的增加而下降,如图 6 所示,由于节点缓冲区等待时间的减少,平均节点响应时间略有下降。当网络规模增加到超过 3000 个节点时,它接近交易服务时间。变异系数的值低于 1,而偏度从 2.8 左右下降到 1.4 以下,低于但仍接近指数分布。在观察到的网络规模范围内,峰态值介于 18 到 7 之间。

网络分布时间、均值、变异系数、偏度和峰度的参数如图 8(b)、图 6 所示。关于数据到达率。可以看出,在网络规模超过 3000 时,交易的平均分发时间下降到交易服务时间值的 k 倍左右。这种行为接近于参数 k 在 3 到 4 范围内的一般 Erlang-k 分布。
在这里插入图片描述
在这里插入图片描述

E. 分叉和不一致周期

在原始区块 A 的第 i 个分配阶段,网络中出现新开采的区块 B 时的分叉概率,1 i DN;MxðzÞ,如图 9(a) 所示。在这种情况下,可变参数是最先出现的区块(即我们上面讨论的区块 A)的分配阶段;所有阶段的平均值用圆圈表示。图 9(a)中前三个分布阶段的分叉概率有点类似于图 6 中所示的平均块到达率的形状。然而,阶段 4 中的部分分叉概率与网络规模大致成比例增加,这是由于竞争块(我们上面讨论中的块 B)的到达率增加,因为块分布早期阶段的节点数量受节点连接性的限制。通过 (44) 计算的总体分叉概率首先随着网络规模的增加而降低,但当网络规模超过 4000 个节点时略有增加,这是由于在块分发的最后阶段分叉的影响增加。我们注意到 1.6% 到 1.8% 的平均分叉概率接近 [5] 中报告的 1.69% 的值。

图 9(b) 显示了当区块 B 出现在网络中时节点链接区块 A 的分区的大小,归一化为整个网络的大小。由于这些值实际上与网络大小无关,我们将它们显示为网络中出现的第一个块的分布阶段(1、2、3 和 4)的函数。我们观察到,只有在区块 A 的第一个分配阶段开采区块 B 时,分区大小约为 0.5(即,在各自区块链头部的区块 A 和 B 的分区具有相似的大小)。当原始区块 A 具有当区块 B 出现在网络中时,进展到第二个或以后的分配阶段,分配结束时 A 的分区将包含大多数节点:第二阶段约为 94%,第三阶段超过 98% 和 99%和第四阶段,分别。

分布式账本不一致的周期如图 10 所示。单次双向分叉后的平均不一致周期(实线)及其标准差(圆圈)如图 10(a)所示,而偏度(未显示)约为2. 这个时期受块到达之间的指数分布时间的强烈影响,而块分布时间贡献了大约 10% 的值,即使分叉概率约为 1.5%。然而,鉴于当前网络规模和区块规模增加的趋势,分叉概率和不一致周期的持续时间/特征在未来可能会增加。

两个块到达之间的一般不一致时间分别在图 10(b)中显示为平均值(实线)、标准偏差(圆圈)和偏度(菱形)。在这里,我们进行了重要的观察,虽然平均不一致时间大约为 11 到 12 秒,但仅大约 2% 的块到达间隔时间,标准偏差高于 100 秒,偏度系数高于 15,表明重尾。这证实了分叉的影响可能会导致偶尔出现长时间的不一致,持续时间可能超过几分钟。在这里插入图片描述

九、结论

在这项工作中,我们开发了比特币区块链网络上数据传输协议的分析模型。模型结合了文献中的许多最新测量结果。我们还开发了基于优先级的比特币节点排队模型和全网杰克逊网络模型。这些模型给出了数据分发阶段节点数量的概率分布、节点的响应时间以及块和事务流量的网络分发时间。

所呈现的结果表明,网络性能对节点连接性和网络规模的分布具有很强的定性和定量依赖性。我们已经表明,中继数据根据非同质泊松过程到达节点,并且丰富的中继流量压倒了节点本身注入的流量,无论是作为挖掘的块还是新的交易。我们还表明,网络中的数据分发时间是次指数的,并且交易流量的强度由于其较高的优先级而不会显着影响块流量的性能。我们演示了组合模型在计算分叉概率、分叉创建的网络分区的大小以及账本不一致期的持续时间方面的使用。我们的结果表明,节点连通性、网络和块大小是影响块分叉概率和不一致周期持续时间的主要因素。

本文中描述的模型将被扩展以分析事件的成功概率,例如孤立块、交易处理和双重支出等攻击 [5]、[24]、[27]。它还可以用于预测在块大小、节点连接、节点数量的增加/减少以及网络中业务配置文件变化引起的其他影响下的性能变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 中 switch 的性能优化

问题 有这样一段代码&#xff0c;编译器会傻傻地做多次 compare 来找到对应分支吗&#xff1f; #include <stdio.h> #include <stdlib.h> int func(int i) {return (long)(&i) i rand(); }int test(int flag) {int i 0;switch (flag) {case 0:i func(i);…

软件设计师 试题六零基础做题方法分解

接口要实现implements&#xff0c;父类要继承extends 做题技巧&#xff1a;如果在接口下的代码可以不写public 接口后面有个代码&#xff0c;在下面代码中一定有implements对他实现&#xff0c;接口下面是抽象方法也就是函数的实现&#xff0c;具体的实现再类中&#xff0c; 就…

Spring的Bean的生命周期

Spring的Bean的生命周期 Spring的Bean的生命周期 Spring的Bean的生命周期 Spring的Bean的生命周期包括以下阶段&#xff1a; &#xff08;1&#xff09;实例化Instantiation&#xff08;2&#xff09;填充属性Populate properties&#xff08;3&#xff09;处理Aware接口的回调…

华为OD机试真题 Java 实现【查找充电设备组合】【2023Q1 100分】

一、题目描述 某个充电站&#xff0c;可提供n个充电设备&#xff0c;每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和&#xff0c;均构成功率集合P的1个元素。功率集合P的最优元素&#xff0c;表示最接近充电站最大输出功率p_max的元素。 二、输入描述 输…

( 链表) 203. 移除链表元素 ——【Leetcode每日一题】

❓203. 移除链表元素 难度&#xff1a;简单 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1…

探秘 | 如何分辨内网和外网?

目录 &#x1f4a1; 什么是外网IP、内网IP&#xff1f; &#x1f4a1; 对于自有路由器上网的用户&#xff0c;可以这样理解外网IP、内网IP &#x1f4a1; 几个大家经常会问的问题 什么是外网IP、内网IP&#xff1f;很多用户都有一个疑惑&#xff0c;如果不使用路由器拨号上网…

一则历史:为什么网络路径前加一个盘符还能正常工作

有一个比较知名的奇异特性&#xff1a;文件系统在解析 UNC(Universal Naming Convention) 路径时&#xff0c;会故意忽略掉最前面添加的盘符字母。 举个例子&#xff0c;假设服务器上有一个共享文件夹&#xff0c;其路径为&#xff1a;\\server\share\directory&#xff0c;如果…

【网络】HTTP

在上面的文章中&#xff0c;我们学习了网络的基础&#xff0c;和网络中一个伟大的标准 OSI 7层模型。通过上篇文章&#xff0c;我们可以知道网络模型最上层为应用层&#xff0c;那么这篇文章就让我们来一起看一下&#xff0c;我们开发过程中绕不开的一个非常著名的应用层协议&a…

FANUC机器人CC-Link总线通信相关配置的具体方法和步骤详解

FANUC机器人CC-Link总线通信相关配置的具体方法和步骤详解 1. 基本说明 2. 采用CC-Link通信的前提条件 机器人需要安装软件:CC-link Interface(Slave) A05B-*-J786 机器人需要安装硬件通信板卡:CC-Link Remote Device Station PCB A05B- * -J110 通信板卡的安装步骤:

第八章 模块

内容框架 8.1 模块介绍 引入模块 import 模块名 通过一句话&#xff0c;计算机就在指定的位置找到了模块文件&#xff0c;并准备好该文件拥有之后会用到的函数和属性。 引入模块本质上就是在一个python文件中引入另一个python文件 引入模块在文档中还可以设置别名&#xff1a;…

没有权限merge到源git仓库?一招教你如何解决。

在git上贡献项目的时候&#xff0c;一般步骤是&#xff0c;clone源项目到本地&#xff0c;切出一个新的分支&#xff0c;然后在新分支上开发&#xff0c;最后push到远程&#xff0c;然后提出mr。但是对于一些非开源的项目&#xff0c;可能会出现&#xff1a; 这就是说明没有权…

mp4是什么格式?如何录制mp4格式的视频?

案例&#xff1a;怎样录制mp4格式的视频&#xff1f; 【我发现网上大部分视频都是mp4格式&#xff0c;我也想在电脑上录制mp4格式的视频。有没有小伙伴知道录制的方法&#xff1f;】 日常生活中&#xff0c;mp4格式已经成为了我们最常用的视频格式之一。它具有高质量、高压缩…

chatgpt赋能python:Python主进程:一步步了解Python中最重要的进程

Python主进程: 一步步了解Python中最重要的进程 在Python编程中&#xff0c;进程是非常重要的一个概念。Python主进程是Python程序在启动的时候默认创建的一个进程&#xff0c;它是整个程序的核心。在使用Python进行开发的时候&#xff0c;了解Python主进程的概念和功能是非常…

gitlab搭建与认证登录

gitlab搭建与认证登录 gitlab的安装配置gitlab中Ldap认证配置 gitlab的安装配置 参考链接&#xff1a; Gitlab 仓库搭建&#xff08;详细版&#xff09; 以下4项注意点&#xff1a; gitlab安装包&#xff0c;直接访问在浏览器上下载速度很慢&#xff0c;可复制链接到迅雷中进…

淘宝店铺所有商品数据接口

淘宝店铺所有商品数据接口是淘宝提供的一种可以获取某个淘宝店铺所有商品信息的接口。通过该接口&#xff0c;可以获取到该店铺的所有商品信息&#xff0c;包括商品的标题、价格、销量、评分等。接口返回的数据格式为JSON格式&#xff0c;可以方便地处理数据。 我们可以通过调…

[论文评析]C-Mixup: Improving Generalization in Regression, NeurIPS,2022

C-Mixup: Improving Generalization in Regression 前言C-MixupReferences 前言 Mixup方法是针对分类任务的, 这篇方法相当于时提出了regression版本的Mixup, 实验证实能够大幅提升在regression task上的泛化能力. C-Mixup 是否可以把Mixup直接用于Regression task呢? 在原…

仓储服务-采购业务

1.合并采购需求 请求参数 {purchaseId: 1, //整单iditems:[1,2,3,4] //合并项集合 }(1) 合并时如果未选择合并的采购单&#xff0c;则先新建采购单然后合并到新建的采购单 新建的采购单&#xff0c;可以手动给采购单分配人员 &#xff08;2&#xff09;合并时选中了采购单…

linuxOPS基础_运维概述,及其泛概念

运维岗位定义 什么是运维&#xff1f; ​ 在技术人员&#xff08;写代码的&#xff09;之间&#xff0c;一致对运维有一个开玩笑的认知&#xff1a;运维就是修电脑的、装网线的、背锅的岗位。 ​ IT运维管理是指为了保障企业IT系统及网络的可用性、安全性、稳定性&#xff0…

学习go的操作(本人已有c的基础,请思考后再看)

建立一个文件&#xff08;我的第一个文件是hellow.go&#xff09;&#xff0c;后在终端执行一下几步&#xff1a;我用的是go build先编译成了可执行文件&#xff08;.exe&#xff09;【1.go build hellow.go 2.hellow.exe】。当然&#xff0c;你也可以用go run直接运行【…

【c语言习题】函数递归调用实现汉诺塔

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…