【论文阅读】Information Propagation in the Bitcoin Network
创始人
2024-04-01 20:36:41
0

文章目录

  • 摘要
  • 1 介绍
  • 2 比特币
    • A 交易
    • B 区块
    • c 区块链
    • d 区块链叉
  • 3 信息传播
    • A 网络拓扑结构
    • B 传播方法
    • c规模很重要
    • D. Information Eclipsing
  • IV. BLOCKCHAIN FORKS
    • A. Observing Blockchain forks
    • B. Model
    • C. Measurements
  • V. SPEEDING UP THE PROPAGATION
    • A. Minimize verification
    • B. Pipelining block propagation
    • C. Connectivity increase
    • D. Measurements
  • VII. CONCLUSION

摘要

比特币是一种数字货币,与传统货币不同,它不依赖于中央集权。相反,比特币依赖于一个志愿者网络,他们共同实现一个复制的账本,并验证交易。在本文中,我们分析了比特币如何使用多跳广播通过网络传播交易和区块,以更新账本副本。然后,我们使用收集到的信息来验证网络中的传播延迟是区块链分叉的主要原因的猜想。应该避免使用区块链分叉,因为它们是网络中副本之间不一致的症状。然后,我们将展示通过对客户机行为的单方面更改将当前协议推到极限可以实现什么。

1 介绍

比特币是第一个真正去中心化的全球货币体系。和其他货币一样,它的主要目的是通过提供一种普遍接受的商品来促进商品和服务的交换。然而,与传统货币不同的是,它不是由一个国家或甚至不是一个单一的当局发行的。

自2008年底问世以来,比特币在价值和交易数量上都获得了快速增长。它的成功主要是由于创新地使用了点对点网络来实现货币生命周期的所有方面,从创建到用户之间的转移。这是与之前研究的根本不同之处,之前的研究集中于构建依赖于集中式发行人[5]、[16]、[18]或创建用户间信用[9]的系统。这些系统要求用户信任最初的发行者,这仍然被用于最终清算交易。

比特币经常被比作现金,因为交易几乎是即时的,而且不可退款。然而,比特币超出了现金的范围,允许真正的全球交易,以与本地交易相同的速度处理。它提供了公开的交易历史,并介绍了许多新的和创新的用途,如智能物业、小额支付、合同和代管交易,以调解纠纷。随着越来越多的企业开始在其产品和服务中接受比特币,比特币正在慢慢成为美元或欧元的可能替代品。比特币仍然存在的事实表明,其基本原则是健全的。尽管如此,仍有改进的空间。

比特币要解决的主要问题是对交易进行分布式跟踪和验证。为此,网络需要就其追踪的账户余额和哪些交易是有效的达成共识。比特币通过保证实现这一目标,最好的描述是最终一致性:各种副本可能暂时不一致,但最终会同步反映共同的交易历史。

在根据副本状态验证事务时,任何不一致都会导致给定事务有效性的不确定性。此外,不一致可能危及共识本身的安全。这可能为试图重写事务历史的攻击者提供便利。

在这项工作中,我们从网络的角度分析比特币,即信息是如何在比特币网络中传播或传播的,我们确定了关键的弱点以及由此产生的问题。特别地,我们分析了无法以不可忽略的概率同步存储在分类帐中的信息的同步机制。这个问题不仅会导致大量节点不注意到的长时间不一致,而且还会削弱系统对攻击者的防御。然后,我们建议对当前协议进行一些更改,虽然不能解决比特币使用的通信模型的内在问题,但可能会减轻这些问题。

2 比特币

在本节中,我们将对比特币进行总体概述,并添加本文后面需要的细节。

根据上下文,比特币这个名字可能指比特币生态系统的以下三个部分中的任何一个:•比特币,系统:中本聪在最初的出版物[14]中首次介绍的抽象协议;•比特币或BTC,货币单位;•比特币,参考实现。由中本聪编写的概念验证实现,bitcoind仍然是使用最多的比特币客户端。

在这项工作中,我们专注于系统及其协议,特别是信息如何在网络上传播。

在比特币中传播两种不同类型的信息:交易和区块。事务是允许值传输的原语,而块则用于在网络中所有节点之间同步状态。

与传统货币,如美元或欧元不同,比特币不依靠中央机构来控制交易的供应、分配和有效性的验证。比特币依靠的是一个志愿者网络,共同实现一个复制的分类账。该账本跟踪系统中所有账户的余额。每个节点都保存着一个完整的账本副本。账本的副本在所有节点上始终处于一致的状态是至关重要的,因为交易的有效性是根据它们来验证的。

在这里插入图片描述

A 交易

在抽象层面上,交易将比特币从一个或多个源账户转移到一个或多个目标账户。

帐户本质上是一个公共/私有密码对。2从公钥派生的地址用于识别帐户。要将比特币转移到一个帐户,需要创建以帐户地址为目的地的交易。要从一个账户发送比特币,交易必须与发送账户关联的私钥进行签名。分类账不是汇总每个账户的余额,而是跟踪将比特币转移到该账户的输出。输出是用比特币表示的数值元组,以及声明或使用该输出的条件。因此,一个帐户的余额是该帐户所有未使用的输出的数值之和。

事务由其序列化表示(tx消息)的散列标识。事务通过提供所有权证明来声明一些输出。对声明的输出的引用以及所有权的证明形成了所谓的事务输入。然后,事务可以指定一个或多个新输出作为目标。

输出是账本中跟踪的基本信息单位,它们的状态必须在所有副本中保持一致。对于一个有效的事务,他们声明和创建的输出必须满足以下标准:•新输出仅作为一个事务的结果创建;•要求输出的值的总和必须大于或等于新分配输出的值的总和。

当交易通过网络广播时,账本副本的状态会发生变化。当一个节点接收到一个新的事务时,它将被验证并提交到本地副本。

随着时间的推移,在不同节点上的分类帐的不同副本可能会变得不一致:

•一个节点可能会收到一个从一个账户转移硬币的交易,但它还没有收到让这些硬币对该账户可用的交易;
•两个或多个交易可能试图多次转移相同的硬币。这被称为双重支出攻击。

重复支出攻击对账本副本的一致性有直接影响。在双重消费期间,无论是有意的还是错误的,两个或多个事务都试图同时请求相同的输出。在现实世界中,与双重消费攻击类似的情况是,用户向银行提交多个交易,多次消费可用余额。虽然在这种情况下,双重消费的尝试会被银行识别,不会导致转账,但在比特币中,这一矛盾更难解决。接收第一个事务的节点将对其进行验证,并将其提交到其分类帐副本。当节点稍后接收到其他事务时,验证失败,因为输出已经被使用了。由于不能保证所有节点都以相同的顺序接收冲突事务,因此节点将不同意冲突事务的有效性以及通过声明其输出构建在它们之上的任何事务的有效性。

B 区块

为了使账本副本保持一致,必须在节点之间就交易的公共顺序达成一致。在分布式系统中商定事务的公共顺序并非小事。比特币解决这个问题的方法是暂时提交交易,然后通过广播一个节点创建的块,定期进行同步。块b包含创建该块的节点自上一个块以来提交的事务集Tb。然后将该块分布到网络中的所有节点,每个接收它的节点将回滚自上一个块以来初步提交的事务,并应用来自当前块的事务。

此时,所有节点已经就块中所有事务的有效性达成一致。作为块的一部分提交的事务被确认,不需要重新应用。回滚的事务将被再次验证,并在新的基状态之上重新应用。由于与作为块的一部分提交的事务发生冲突而无效的事务将被丢弃。

创建块的节点有效地施加了它对自上一个块以来的更改的视图。然而,块创建者的决策是有限的。只要底层公钥/私钥加密系统是安全的,节点就不能伪造任何交易。块创建者只能决定事务的到达顺序以及是否在其块中包含事务。

为了确定哪个节点可以强加其观点,各节点试图找到一个具有一定成功概率的工作证明[7]的解决方案。工作证明包括找到一个字节字符串,称为nonce,与区块头相结合,形成一个具有给定数量的前导零位或目标的哈希值Hb。由于加密哈希是单向函数,找到这样的nonce只能通过对所有可能的nonce计算区块的哈希值来完成,直到找到一个有效的解决方案。因此,很难找到一个能产生解决方案的输入,但要验证它却很容易。nonce是区块的一部分,所以收到它的节点可以验证创建者解决了工作证明。哈希值Hb也被用来作为区块的身份。目标通过所有节点的共识来确定,以便在整个网络中实现平均每10分钟一个结果,并且每2016个区块调整一次,预期应该每14天发生一次。

试图找到工作证明的解决方案的节点通常被称为矿工。为了激励矿工,找到区块的节点会收到以新铸造的比特币为形式的奖励,也就是说,它可以包括一个没有输入但可以指定输出的预定数量的硬币进入区块的交易。这个奖励交易只有出现在区块中才有效,而且是交易的输出之和必须小于或等于交易的输入之和这一规则的唯一例外。

c 区块链

到目前为止,块没有在单个事务之上提供任何附加的同步。当区块被链接在一起时,这种情况就会发生变化,从而在区块上创建一个时间顺序,从而关于其中包含的事务。

这些块被组织在一个有向树中。每个块都包含对先前找到的块的引用。块b0引用的块b称为它的父块。这个关系的传递闭包给出了它的祖先。树中的根块是生成块,它被硬编码到客户机中。根据定义,这个块是所有块的祖先。

区块链被定义为从任何块到起源块的最长路径。地块b到创世点的距离称为地块高度hb。因此,起源块g的高度hg = 0。高度最大的块,即距离起源块最远的块称为区块链头,高度为hhead。我们用符号Bh来表示高度为h的块集合。

因为要包含对父块的引用,必须知道父块的标识(它的散列),所以必须在父块之后找到子块。链接用于为事务分配时间顺序:在较低高度块中的事务在较高高度块中的事务之前被验证。

由于只有出现在区块链的区块才会被其他用户接受的新铸造的硬币奖励,矿工将总是试图找到建立在当前区块链头像上的区块。在较早的区块上建造将需要最终分支变得比当前最长的分支(即区块链)更长才能获得奖励。

d 区块链叉

从区块链的定义可以直接得出,一次可以有多个正面,即当|Bh| > 1, h = hhead。这种情况称为区块链分叉。在区块链分叉期间,网络中的节点不同意Bh中的哪个块是当前区块链头。

两个区块b, b0,∈Bh肯定会对账本的当前状态产生分歧,因为它们都引入了一个奖励交易。因此,区块链分叉意味着系统不再一致。

当一个节点,其区块链头bh的高度为h,接收高度为h0 > h的块bh0时,它将区块链头切换到该块。新的块bh0可能在与bh相同的分支上,即bh是bh0的祖先,也可能在另一个分支上。

如果块bh位于与新发现的区块链头bh0相同的分支上,它将检索分支上的所有中间块并增量地应用它们的更改。另一方面,如果bh0是另一个分支的一部分,即bh不是bh0的祖先,那么它们共享一个共同的祖先。由于bh0在比bh更长的链上,它成为新的区块链头,因此节点必须将所有更改还原到公共祖先,并在bh0的分支中应用更改。

一个区块链分叉可能被网络的分区发现更多的块Bh+1, Bh+2,…建立在他们各自的区块链头上。最终,一个分支将比其他分支长,没有采用这个分支的分区将切换到这个分支。此时区块链分叉被解析,账本副本直到区块链头都是一致的。被区块链解析丢弃的块称为孤儿块。

比特币从来不会最终提交交易。如果在包含该事务的区块下面创建了一个较长的链,则每个事务都可能无效。如果单个实体能够控制网络上的大部分计算能力,从而能够比网络其他部分加起来更快地找到区块,那么它就可以恢复任何交易。如果攻击者试图恢复包含在区块bh中的一个交易,它将创建一个与原始交易冲突的新交易,并将其包含到一个h0 < h的区块bh0中。然后攻击者将继续在bh0之上创建区块,直到新的链超过原来的区块链,从而成为新的区块链。

有人可能会说,区块链分叉的存在正是事务从未最终提交的原因。

区块与交易有效性的紧密耦合不仅减缓了交易的确认时间,而且将确认限制为一种关于有效性的概率声明。

3 信息传播

比特币网络是一个同构节点网络。没有协调的角色,每个节点保留验证传入事务有效性所需的所有信息的完整副本。每个节点都独立验证从其他节点接收到的信息,节点之间只有最小的信任。

A 网络拓扑结构

通过构造,网络中的节点形成一个随机图。当一个节点加入网络时,它会查询许多DNS服务器。这些DNS服务器由志愿者运行,并返回当前参与网络的一组随机引导节点。一旦连接,连接节点通过向其他节点的邻居询问已知地址和侦听自发的新地址广告来了解其他节点。没有明确的方法可以离开网络。离开网络的节点的地址在其他节点从其已知地址集中清除它们之前会存留数小时。在撰写本文时,发布了大约16000个唯一地址,其中大约3500个可以同时访问。

每个节点都试图保持与其他节点的最小连接数p在任何时候都是打开的。如果打开的连接数低于p,节点将从其已知地址集中随机选择一个地址并尝试建立连接。另一方面,如果传入连接导致打开的连接数超过池大小p,则不会关闭。因此,对于也接受传入连接的节点,打开的连接总数可能更高。

我们观察到,一个运行比特币的节点接受传入连接,平均有32个打开连接。

这大大超过了默认的连接池大小p = 8。

在由于位于网络地址转换或防火墙后面而不可达的节点上,同时打开的连接数从未超过p。

连接图中的分区不会被主动检测到,如果出现了这些分区,这些分区将继续独立运行。虽然从活动的角度来看,这当然是可取的,但是分区中跟踪的状态会随着时间的推移而分散,从而创建两个并行的、可能不兼容的事务历史。因此,检测网络分区是至关重要的。这种检测可以通过跟踪网络中观察到的聚合计算能力来完成。块发现率的快速下降可能表明发生了分区。

B 传播方法

为了更新和同步分类账副本,只有交易(tx)和区块(block)消息是相关的。这些消息比网络上发送的任何其他消息都要常见得多,并可能增长到相当大的规模。为了避免向已经收到其他节点的交易和区块信息的节点发送这些信息,它们不会被直接转发。相反,一旦交易或区块被完全验证,它们的可用性将通过向邻居发送Inv消息来宣布。inv消息包含一组交易哈希值和区块哈希值,这些哈希值已经被发送者收到,现在可以被请求。一个节点在收到它本地还没有的交易或区块的inv消息时,将向inv消息的发送者发出getdata消息,其中包含它需要的信息的哈希值。区块或交易的实际转移是通过单个区块或tx消息完成的。图2可视化了广播中单跳的协议流程。节点A收到一个区块,对其进行验证,并将其公布给邻居。节点B收到inv消息,由于它不知道这个区块,它将发出一个getdata消息。收到getdata消息后,节点A将把区块交付给节点B。

在这里插入图片描述
每个块或事务被引入到网络中的一个节点(它的原点),然后使用上述广播机制在整个网络中传播。

在广播中的每一跳处,消息都会引起传播延迟。传播延迟是传输时间和块或事务的本地验证的组合。传输时间包括inv消息形式的公告、接收方的请求和交付。虽然inv和getdata消息的大小相对较小(在大多数情况下是61B,因为即时广播只包含单个要宣布的块或事务),但块消息可能非常大——在编写时高达500kB。在块被通告给节点的邻居之前,它被验证。块的验证包括块中每个事务的验证。

反过来,事务验证要求随机访问存储在磁盘上的数据。

设ti,j为原点向网络发出的第一次通知与节点j接收到数据项i的时间之间的时间差。如果节点o是数据项i的原点,即,要么是块的发现者,要么是创建交易的节点,那么ti,o = 0。

节点了解到数据项存在的次数ti,j遵循双指数行为。与随机谣言传播[12]类似,数据项的传播可以分为两个阶段:初始指数增长阶段,大多数接收inv消息的节点将请求相应的数据项,因为它们还没有,和指数收缩阶段,大多数接收公告的节点已经拥有相应的数据项。

为了测量传播延迟,我们实现了比特币网络协议,并连接到网络中的大量节点样本。我们的实现与普通节点的行为完全一样,但有一点需要注意:它不转发入侵信息、交易或区块。它通过监听以inv消息形式宣布的交易和区块的可用性来跟踪交易和区块在网络中的传播情况。一旦测量节点收到包含区块参考的inv消息,我们就知道发送公告的节点已经收到并验证了该区块。

在这里插入图片描述
测量节点从区块链高度180 ’ 000为10000块收集时间信息。计时信息包含块的散列、公告节点IP和接收公告时的本地时间戳。ti,j的估计值是通过从该数据项的所有声明中减去块的第一个声明的时间戳得到的。

图3是测量区间内所有块b的tb,j归一化直方图。归一化允许我们使用它作为节点学习块速率的概率密度函数的近似值。注意,我们没有区分块的大小,而是聚合所有块。节点接收到块的中值时间是6.5秒,而平均值是12.6秒。分布的长尾意味着,即使在40秒之后,仍然有5%的节点没有接收到块。

c规模很重要

信息的大小与网络中的传播延迟之间有很强的关联性。延迟成本被定义为每千字节对交易或区块的传播造成的时间延迟。请注意,该成本是验证和传输时间的组合。

图4描绘了不同大小的50、75和90百分位数的成本。对于大于20kB的大小,成本可以说是恒定的,而对于小的大小,有一个相当大的开销。小尺寸的开销是由往返延迟造成的,也就是说,即使是小的消息也要通过inv消息宣布,然后通过getdata消息检索。对于交易来说,往返延迟是主要的,因为96%的交易都小于1kB。

对于大小超过20kB的区块来说,每增加一KB的大小就会增加80ms的延迟,直到大多数人知道这个区块。因此,直接转发交易是明智的,从而避免了额外的往返开销。然而,对于那些开销对整个传播时间贡献不大的区块来说,情况就不一样了。

在这里插入图片描述

D. Information Eclipsing

到目前为止,我们已经讨论了在信息不矛盾的情况下信息是如何传播的。比特币网络中信息传播的另一个重要部分是信息的可见性。当一个节点接收到一个新的块或事务,它认为它是无效的,可能是因为它与之前接收到的信息相矛盾,它将忽略它,不转发它。

让我们考虑一个块在网络中传播的情况,以及它如何可能导致只有少数节点检测到的区块链分叉。

设G = (V, E)是网络的底层连接图,V是所有节点的集合,E是节点之间的连接集合。从单个分区Ph⊂V开始,包含所有节点,其区块链头位于高度h,即,它们不知道下一个高度h + 1的任何块。找到一个新的块bh+1引入了一个新的分区Ph+1,b包含了认为这个块是头的节点,也就是说,它是它们接收到的高度为h+1的第一个块。如果没有找到其他块,则在Ph和Ph+1,b之间的连接点附近的节点离开Ph,并加入Ph+1,b,直到Ph为空,整个网络以新的区块链高度h+1继续运行。

另一方面,如果Ph中的一个节点发现了另一个高度为h+1的块b0h+1,它又会引入一个新的分区Ph+1,b0。在这种情况下,来自Ph的节点将同时加入Ph+1,b和Ph+1,b0,直到Ph为空,并且所有节点都在高度为h+1的分区中。

只有在Ph+1,b和Ph+1,b0之间的切口附近的节点才会知道b和b0,因此能够检测到产生的区块链分叉。在分区Ph+1,b中,且与Ph+1,b0不相邻的节点,将只知道b,并且完全不知道冲突块的存在。一个分区Ph+1,b可能只包含一个节点,在这种情况下,节点的邻居已经知道一个冲突的块,并立即停止b的传播。

上述内容也适用于正在传播的事务。如果试图使用相同输出的两个事务在网络中传播,则节点接收到的第一个事务将被视为有效,根据该节点的状态,第二个事务将是无效的,因此不会向其邻居宣布。

这种行为的好处是,恶意节点可能不会通过发出数百个相互矛盾的交易而使网络泛滥,而不会向恶意节点支付额外的费用。缺点是,这种行为使得商家无法察觉的双重消费攻击成为可能。

在事务的情况下,停止传播是一种合理的权衡,它保护网络不受事务垃圾邮件的影响,以牺牲个人用户的利益为代价。然而,在块的情况下,停止传播是不合理的。

区块链分叉(通过这样做对大多数节点隐藏)是正在进行的未解决的不一致的重要指示器。由于有效但有潜在冲突的块不能像事务一样以任意速率创建,因此转发它们不会产生攻击的可能性。

IV. BLOCKCHAIN FORKS

在本节中,我们关注网络中出现的块传播和区块链分叉。通过提出一个与观测到的区块链分叉速率相匹配的模型,我们表明区块链分叉是由较长的传播时间引起的。

A. Observing Blockchain forks

一些区块链分叉可以通过参与网络和接收两个冲突块观察到。

然而,观察所有区块链分叉是困难的。如果一个节点检测到一个传入的块与它认为是链头的块冲突,那么它将不会进一步传播该块。

回想一下,区块链fork中的分区大小可能为1。直接的结果是,忠实地报告所有区块链分叉将需要连接到网络中的每个节点。

由于有些节点不可达,要么是因为它们位于防火墙后面,要么是因为网络地址转换,所以只能给出区块链分叉的实际数量的近似值。

使用第三节的实现,我们收集了高度为180’000和高度为190’000之间的网络中被传播的区块。我们相信,由于我们的大样本,包括所有可到达的节点,几乎所有发现的区块都被传播给我们,使我们能够识别在测量区间内发生的接近所有的区块链分叉。

在这里插入图片描述
图5显示了收集块中区块链分叉的直方图。在观察到的10000块间隔中有169个区块链分叉,因此观察到区块链分叉率r = 1.69%。

B. Model

功的证明导致有效块被独立地随机找到。由于区块是由网络中的参与者独立随机地发现的,所以当一个冲突的区块在网络中传播时,可能会发现一个区块。我们声称区块链分叉是由网络中的块传播延迟引起的。

1)找到一个区块的概率:比特币协议调整了找到一个区块所需的工作量证明的难度,以便在预期中每10分钟找到一个区块。

如果Xb是一个被找到的块和它的前一个被找到的块之间的秒差的随机变量,那么在任何给定的秒内,一个块被网络作为一个整体找到的概率为

在这里插入图片描述
2)可以找到冲突块的网络部分:如果在一个块b的传播过程中,发现一个冲突块b0,就会发生区块链分叉。这样的块b0可能只会被网络中还不知道b的那部分发现。

设tj为节点j在发现b后得知其存在的时间,单位为秒。让Ij(t)为节点j在时间t是否知道b的指标函数。让I(t)为统计时间t的知情节点数量的指标函数,即已经收到并验证了块b的节点。

在这里插入图片描述
注意,f(t)等价于对等点被告知率的累积分布函数(CDF)。因此,我们可以使用从图3中得知对等点的速率的PDF作为测量期间的估计。

只有未通知的节点可能产生冲突块。

结合找到一个块的概率和未被告知的节点的比例,我们推导出区块链分叉的概率。设F是一个离散随机变量,它计算在传播另一个块时发现的冲突块的数量,则区块链分叉的概率为:

在这里插入图片描述
注意,最后一步需要简化假设,即节点找到块的概率在所有节点中均匀随机分布。

因此,知道整个网络找到一个块Pb的概率和节点如何了解块的存在的分布,就可以推导出区块链分叉的概率。Pb和Ij的分布取决于当前网络的计算能力和网络的拓扑结构和规模。

C. Measurements

为了验证该模型,我们将区块链分叉的结果概率与区块链分叉的观测速率进行了比较。

1)找到一个块的概率:每个块都包含找到该块的时间戳。由于节点不同步时钟,而是对其邻居的当前时间进行采样,所以时间戳中存在非平凡的时钟偏差。

在某些情况下,时钟的偏移非常明显,甚至会产生不可能的星座。例如,区块链中高度为209873的块的时间戳为22:10:13,而下面高度为209874的块的时间戳为22:08:44。因为后者包含前者的散列,所以块是按照正确的顺序找到的。因此,冲突的时间戳可能只由不同步的时钟引起。

作为替代方案,由于我们参与了网络并拥有大量的节点样本,我们也可以使用我们第一次看到区块被宣布到网络的时间作为区块被发现的时间。虽然这不会受到时钟偏移的影响,但在发现区块和第一次宣布到达测量节点之间可能会有小的延迟,而且我们只有在积极测量网络时发现的区块的时间戳。

在这里插入图片描述
功的证明是泊松过程,因此时间差服从指数分布。随机时钟偏差和在块的时间戳中发现的块之间的时间的卷积导致最大值的右移。这可以通过左移来修正,直到t = 0处达到最大值。测量时观察到的公告时间不受时钟倾斜的影响,直接产生正确的直方图。

在这里插入图片描述
通过提取高度从18’000到19’000的块的时间戳,我们得到了如图6所示的分布。通过将观测到的分布拟合到指数分布,我们发现λ = 0.001578的值,因此两个块之间的预期时间为1/λ = 633.68秒。通过拟合测量结果中首次公告之间时间的概率密度,我们发现一个值λ = 0.001576,导致两个块之间的预期时间为1/λ = 634.17。λ的两个近似值是一致的,但都略高于600秒的目标值。这种差异很可能是由于网络计算能力的下降。4 2)网络中的块传播:由于归一化,图3中的直方图也代表了测量区间内所有块b的随机变量tb,j的概率密度函数(PDF)。因此,已知节点的比例f(t)是到时间t的直方图下的面积。

结合上述寻找区块的概率和知情率的函数,得出区块链分叉的概率如下。

在这里插入图片描述
在这里插入图片描述
根据我们的模型,区块链分叉的概率为1.78%。将这一结果与第四节中观测到的区块链分叉率1.69%进行比较,我们发现我们只高估了观测到的分叉率5%。

略高的预测概率可能是由于假设计算能力均匀分布在网络中的所有节点上。然而,良好的拟合质量表明模型与现实是很好的匹配。

因为随着比特币作为支付方式的采用,交易的数量和网络的规模可能会增长,区块链分叉的速度必然会增加。一个更大的网络,具有随机拓扑和固定连接池大小,会增加直径和节点与块原点之间的平均距离。

事务数量的增加导致块大小的增长,这反过来增加了传播中每一跳的验证延迟和传输延迟。

对eq.(3)中结果的另一种解释是,每次找到一个块,就会浪费相当于整个网络11.37秒的计算能力。

构建备选区块链头的工作,即试图找到工作量证明解决方案,并不有助于扩展区块链,这可能使攻击者更容易用自己的备选链超越当前区块链头。Nakamoto[14]已经预测到,一个拥有网络中50%以上计算能力的攻击者将能够比网络的其他部分更快地找到工作量证明解决方案。因此,攻击者最终能够从任意时间点替换事务历史。正如我们的结果所示,这个条件虽然是充分的,但却不是严格的。在现实中,网络作为一个整体的效率,包括传播延迟,不是最优的。这种低效率可能会给能够减少延迟的潜在攻击者带来相当大的优势。

当前网络的有效计算能力为1−11.37/633.68 = 98.20%。因此,网络中49.1%的计算能力份额足以让攻击者在当前条件下最终恢复任何事务。

尽管这很难实现,但是增加传播延迟可能会进一步削弱整个网络。

V. SPEEDING UP THE PROPAGATION

在前一节中,我们展示了信息在网络中传播的方式导致了区块链分叉。在本节中,我们将探讨现有协议的限制是什么,以及节点行为的单方面更改是否会改变区块链分叉速率。
•最小化验证
•流水线块传播
•连接性增加
将更改限制在可以以单方面方式实施的更改上,这样我们就可以在不需要对协议进行重大更改的情况下评估其有效性,而协议必须经过比特币社区的审查和接受。

A. Minimize verification

传播延迟的一个主要原因是节点在向网络宣布块之前验证块所花的时间。块的大小和验证它的时间之间有很强的相关性。由于传播中的每个跳必须在将块转发给它的邻居之前对其进行验证,因此延迟乘以传播路径的长度。

目前,比特币对每个区块的块大小限制为500kB,但随着平均块大小的增长,这一限制可能会越来越放松,从而可能包括更多的交易。

首先,验证可以分为两个阶段:•初始难度检查;•事务验证。

难度检查包括通过哈希接收块并将哈希与当前目标难度进行比较来验证工作量证明。此外,它检查该块不是最近块的副本,并引用最近块作为其前身,以验证该块不是旧块的重新提交。大部分验证是在事务验证中完成的,它检查块中每个事务的有效性。只要检查了难度,并且在必须验证事务之前,就可以将块转发给邻居。

因此,可以将节点的行为更改为在难度检查完成后立即发送inv消息,而不是等待相当长的事务验证完成。

在这里插入图片描述
对网络中节点行为的任何更改都必须经过审查,以防止攻击者滥用其来破坏网络。特别是,中继未经验证的信息可能允许攻击者发送任意数量的数据,然后再进行中继,使网络中的一些节点无法应对,从而导致分布式拒绝服务攻击。

此更改不会增加拒绝服务攻击的风险,因为生成通过难度检查的无效块与生成具有相同难度的有效块一样困难。缺点是,如果仅由连接不良好的单个节点实现此更改,则不太可能对整体传播延迟产生很大影响。

它加快了从原点到节点的单跳路径。

B. Pipelining block propagation

更进一步的改进可以通过立即将传入的inv消息转发给邻居实现。这样做的目的是通过提前宣布块的可用性来摊销节点与其相邻节点之间的往返时间。然后,该块的传入getdata消息被排队,直到该块被接收并执行了上述的难度检查,然后该块被发送给请求它的邻居。与第一个更改不同的是,这可能会导致从块的散列发送一些额外的消息,因为无法进行验证。攻击者可以宣布任意数量的块,而不能够在请求时提供它们。接收到这些垃圾邮件的节点将把它们转发给它们的邻居。如果一个节点检测到它的一个邻居正在宣布它不能提供的块,它可以切换回最初的行为,在宣布它们之前首先验证块。

即使节点可以被欺骗转发它不能提供块的inv消息,但影响可能很小,因为inv消息有一个小的恒定大小61B。请注意,同样的攻击已经可以通过创建任意数量的交易并向网络公布来实现。由于攻击节点可以提供相匹配的交易,它不会被识别为攻击。

图2和图8显示了行为的变化。

节点A是其行为已被改变的节点。注意到验证被分为两个阶段(差异和验证),并且inv消息被更早地发送。

这再次加快了单跳的速度,如果仅由网络中的单个节点实施,不太可能带来很大的改进。

在这里插入图片描述

C. Connectivity increase

最具影响力的问题是事务或块的原点与节点之间的绝对距离。为了最小化任何两个节点之间的距离,我们尝试连接到网络中的每个节点,创建一个星形子图,用作中央通信枢纽,加速inv消息、块和事务的传播。

我们指示实现保持打开的连接池为4000个连接。这导致它连接到每一个发布的地址,因为在任何时候只有不到4000个节点可访问。

结果是集线器连接的任何两个节点之间的距离都接近于2。

D. Measurements

在我们的客户端中实现了上述更改,并从区块链高度20 ’ 000到21 ’ 000进行了测试。在此期间,客户端连接到网络中的平均3048个节点,上传了2050万条块消息。对于每个块,节点平均收到2048个请求。

图9显示了使用修改后的客户端参与网络时区块链分叉的直方图。与图5中未修改的情况相比,可以看到明显的改进。更改的总体效果是区块链分叉率从1.69%下降到0.78%,即比未修改的情况提高了53.41%。

如前所述,流水线和验证最小化只有很小的效果,它乘以最后的更改。然而,最后一个更改有很高的带宽要求,因为块导致带宽峰值高达约100 MB/s,并导致在测量期间总上传2.31TB的原始块数据。

VI. RELATED WORK

尽管作为一个相对年轻的系统,比特币已经在许多研究领域引发了很多兴趣。正在研究的主题包括比特币的法律[1]、经济[4]和技术方面。

中本聪在最初的论文中提到了双重消费的问题,但只是理论上的。Karame等人[11]深入分析了在几种情况下双重消费攻击成功的概率。虽然他们确实提到了双重消费的可能性,而这种可能性不能简单地通过较长的检测周期来检测到,但我们引入了信息遮蔽的概念,这导致了这个问题。

Bamert等[3]对快速支付场景中的双重消费问题提出了一些缓解措施。

Babaioff等[2]分析了网络中所有节点转发信息的动机,发现这些动机是不够的。当前系统中的一个主要策略是,矿商持有包含费用的交易,并通过最终创建包含交易的区块来索赔。

比特币挖矿通常需要专门的设备,消耗大量的能源。Becker等人[4]分析了比特币作为一种货币系统与传统货币相比的生态影响。他们的结论是,虽然发送比特币交易的费用很小,但实际上维护和保护网络不被接管是昂贵的。正如我们所展示的,网络中的计算能力很可能被低估了。

另一个备受争议的话题是比特币交易的匿名性。所有的交易都在一个复制的分类账中被跟踪,因此交易的细节可以被网络中的任何参与者访问,这表明隐私是不可能的。然而,中本聪声称,由于账户所有者的身份和账户的身份是分开的,所以这种隐私可以说是匿名的。Reid等人[15]分析了这一说法,并指出,通过串通参与交易的多个账户的信息,实际上可以恢复有关所有者的详细信息。Shamir等人[17]分析了交易图,得出了一些全球统计数据,包括估计78%的已发行比特币不流通,以及对交易图中一个高度活跃区域的深入分析。Elias[8]讨论了比特币中匿名或缺乏匿名的一些法律和道德方面的问题。

比特币的匿名性问题后来由ZeroCoin[13]解决,它允许实现基于ZeroKnowledge的去中心化硬币混合服务。早些时候,Hanke等人[10]提出了一种基于比特币的支付合约协议(Pay-to-Contract Protocol),它保护了商家和客户之间的交易。[6]是另一个建立在区块链到碳日承诺基础上的系统。

VII. CONCLUSION

在本文中,我们分析了比特币网络中的信息是如何传播的,以便同步账本副本。对区块的依赖不仅延迟了交易的清算,而且对网络本身也构成了威胁。

大的区块在网络中传播缓慢,给攻击者一个优势。

我们引入了一个解释区块链分叉存在的模型,并通过将其与我们的观测相匹配来证实该模型。由于区块链分叉是分类帐副本中不一致的症状,因此网络中的节点知道它们是很重要的。然而,由于信息重叠,大多数节点无法检测到它们。

最后,我们实现并测量了比特币协议的一些更改,以降低区块链分叉的风险。

我们的测量表明,实现这些变化的单个节点减少了网络中区块链分叉的数量超过50%。然而,问题的根本原因在于信息在网络中传播的方式。

这些改变可能在短期内缓解问题,直到找到一个可扩展的长期解决方案。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...