人们越来越期望,或者至少是希望,区块链由于其去中心化的本质(即,没有单一实体控制其运营)而在众多领域具有颠覆性潜力。 然而,去中心化是有代价的:区块链无法扩展——它们无法及时处理大量甚至中等数量的交易。 例如,比特币每秒处理三笔交易。
问题的根源——也是区块链的限制因素——是一个无需信任的对等网络模型,其中信息必须以次优方式传播到网络中的每个跃点并在每个跃点进行验证。 毫无疑问,云交付网络(例如,Akamai 或 YouTube)解决了其他领域(例如,Web 和视频交付)中类似的性能挑战,也可以帮助扩展区块链。 问题在于,如此庞大的中心化基础设施会扰乱区块链的去中心化性质,从而消除其颠覆性潜力。 问题是,是否可以使用云交付网络来扩展区块链,而又不破坏其去中心化性质? 答案是肯定的,解决方案的关键在于现有概念的升级版本:网络中立性。
区块链和比特币在 2008 年8 发起的加密货币革命正在蓬勃发展。 主要加密货币的市值虽然波动性很大,但仍继续以数千亿美元计。 区块链的一个独特特征是缺乏中心化管理。 它们依赖于第三方中介(即,验证和认证所有交易的全球对等参与者网络)。 鉴于区块链的纯粹分布式和去中心化设计,许多人认为此类系统在加密货币以外的其他领域也具有颠覆性潜力,包括医疗保健、政府、制造业、零售业、保险业、物联网、共享经济等。 众多大型和小型高科技公司都在密切关注区块链领域,分析这项新技术可能对其现有或未来运营产生何种影响。
区块链的一个主要问题是可扩展性。 区块链系统吞吐量以系统可以支持的 TPS(每秒交易数)来衡量。 比特币当前平均每秒三笔交易的吞吐量,相比之下,Visa 的中心化系统平均吞吐量为每秒 2,000 笔交易,每日峰值为每秒 4,000 笔交易,最大容量为每秒 56,000 笔交易。 如果没有可扩展性,加密货币系统很难成为主流,区块链也不太可能在任何其他领域实现其颠覆性潜力。
区块链是一个公共分布式账本,用于存储所有过去的交易,从根本上来说是一种数据库,由连接在对等网络中的多个(数万个)节点创建和共享。 为了就数据库的正确副本达成共识,必须对数据库的写入施加某些规则。 虽然规则可能有所不同,但它们通常包括以下内容
• 交易必须有效。 交易通常是将一定数量的加密货币从一个用户转移到另一个用户,必须包含参与者的数字签名以进行身份验证。
• 交易必须按顺序添加。 交易不是单独添加到账本中的; 而是批量添加,称为区块。 例如,比特币区块链要求每个新区块都包含一个哈希“难题”的解决方案,该解决方案对于链上最后一个交易区块和当前正在添加的区块的组合来说是唯一的。
• 向区块链添加区块既昂贵又具有竞争性。 想要向区块链添加区块的各方必须投入加密货币或解决密码学难题所需的计算能力(例如,比特币要求的哈希难题)。 这样的参与方称为矿工,将新区块添加到区块链的过程称为挖矿。
• 可用的最长区块链是最新版本。 当与之前的规则结合使用时,这使得成功伪造区块链的成本非常高昂。 即使复制现有的区块链并尝试修改最后几个区块,也可能很快变得成本高昂。 一旦区块在网络上获得足够的确认,删除或修改区块在数学上就变得不可能。 实际上,交易只能添加到区块链中; 它们永远无法删除。
• 需要独立验证。 节点应该能够独立验证,当它检查区块链数据库的副本时,所有之前的规则都已得到遵守。 如果每个用户都可以独立验证区块链,这将允许所有用户就正确的区块链达成共识。
• 向区块链添加区块是有回报的。 因为向区块链写入区块很困难,所以并非所有节点都会参与此过程。 许多用户会创建交易,然后只是请求将它们写入网络,通常会提供费用作为奖励。 此外,矿工还会在赢得一轮挖矿过程并有机会向区块链添加区块时,获得向自己分配新加密货币的能力。
• 可能会发生分叉,但它们通过最长区块链规则来解决。 就区块链达成共识并非立竿见影,有时区块链中可能会出现分叉(数据库的不同副本),其中区块链公共账本的不同版本共存,并在共同历史之后出现分歧。 然而,通过选择网络上最长的区块链,节点可以努力解决这些分叉。
在解释区块链可扩展性问题之前,让我们首先看看它在现实中是如何表现出来的。 图 1 和图 2 显示了比特币和以太坊这两种领先加密货币的交易积压。 您可以看到,数以万计的交易经常等待区块链处理。 为了增加被矿工选中的可能性并“上链”,用户增加了他们在交易中(自愿)包含的费用的规模。 因此,费用远非微不足道,并且在高度拥堵时期可能会大幅增加。
为了了解瓶颈在哪里,让我们首先计算区块链吞吐量。 系统吞吐量直接取决于两个参数:区块大小 B(即,每个区块中可以包含交易的字节数)和区块间隔时间 T(即,系统挖掘新区块所需的平均时间)。 在比特币中,B = 1 MB,T ~ 600 秒,这允许大约每秒三笔交易。 可以通过以下选项来提高链上吞吐量:增加 B 以包含更多交易; 减少 T 以便以更高的速率挖掘区块; 或两者兼而有之。 问题在于,这些参数不能随意更改,稍后将详细介绍。
显然,正是区块链的分布式性质导致了这些问题。 事实上,如果区块和交易能够在节点之间即时传播,那么就可以以快速的速度挖掘巨大的区块,直到达到指定的处理单元和闪存存储阵列的限制。4 然而,在现实中,区块链节点——数万个或更多——分布在世界各地。 因此,网络是瓶颈。
区块链网络中的节点以对等方式进行通信。 不幸的是,这与实现高吞吐量、低延迟通信的目标背道而驰,原因如下
• 信息从一个节点传输到另一个节点; 因此,信息需要多个跃点才能传播到整个网络。 鉴于网络中的每个节点都不信任其他每个节点,因此必须在每个跃点独立验证正在传播的信息。 这通常涉及每个跃点的加密操作,这会增加延迟并损害吞吐量。
• 区块链网络中节点的性能差异很大,这意味着关键路径上的单个慢速节点可能会延长传播时间。
• 最后,对等网络中的节点是随机形成的; 因此,它们并非为了最佳传播而组织。 这意味着数据在网络中通过次优路径传输。
因此,将 1 MB 区块传播到比特币网络中 90% 的节点所需的平均时间为 11.6 秒,这是 2017 年 3 月观察到的平均传播时间。1 不幸的是,这只是问题的一部分。 理论7 和实践4,5 都表明,将区块大小 B 增加 X 倍也会使区块传播所需的时间增加相同的倍数 X。 同样,将区块间隔 T 减少 X 倍具有完全相同的效果。 这意味着区块传播时间与这两个参数中的每一个参数成比例地增加。
例如,将区块大小增加十倍也会使区块传播时间增加十倍,使其超过 100 秒。 同样,将区块大小增加 100 倍将导致区块传播时间超过 1,000 秒。 如此长的传播时间超过了区块之间的时间,导致每次挖掘新区块时都会发生分叉。 事实上,在这种情况下,分叉不会通过挖掘后续区块来解决,而是区块链将解开为分叉,以及分叉的分叉,以及分叉的分叉的分叉,直到节点和矿工不知道哪个分叉是“真正的”链——区块链崩溃。 这就是由网络瓶颈引起的区块链可扩展性问题。
云交付网络在解决互联网上的性能问题方面非常成功。 此类网络通过庞大的基础设施分发内容,该基础设施可能由全球数十万台服务器组成(例如,Akamai)。 此外,它们还执行广泛的网络和服务器测量,并使用它们将客户端重定向到附近的服务器。 这有助于互联网以其庞大的规模运行。6 例如,仅 YouTube 就拥有超过十亿的用户,在晚间高峰时段,北美互联网流量的惊人 70% 来自 Netflix 和 YouTube 等流媒体视频和音频网站。 如果没有云交付网络,这是不可能实现的。
这与区块链的现状形成鲜明对比。 事实上,正如前面解释的那样,通过区块链网络传播 1 MB 区块是一项耗时的任务,并且大幅增加区块大小可能会导致无法挽回的问题。 然而,云交付网络每秒设法发送数 TB 的数据,这被认为是司空见惯的事情。 此类网络是否可以用于扩展区块链?
毫无疑问,云网络可以提高区块链的性能。 问题在于信任。 在区块链生态系统中,节点不信任其直接对等方,那么它将如何信任云网络,云网络比任何单个节点都强大得多? 云交付网络是中心化系统,可以审查区块链网络的交易、区块或矿工。 例如,云交付网络管理员可以根据自己的政策、商业利益或法律要求,拒绝包含未经授权方之间的交易的区块,或未经授权的矿工挖掘的区块。
因此,关键问题是,是否有可能使云交付网络无需信任,以便可以使用它们来扩展区块链网络,而又不会行使此处先前提到的审查制度和其他权力。 这个概念称为可证明的网络中立性。 本文不深入探讨形式主义,而是概述了与此概念相关的关键属性。
首先,网络不应能够根据区块的内容审查信息。 其次,网络不应能够审查节点。 第三,节点应该能够持续审计这些属性,并且在网络行为不端的情况下,放弃并替换网络。 如何启用此类属性?
考虑一个云分发网络,其旨在使区块链系统(不一定仅是加密货币)扩展到每秒数千笔链上交易。 此外,它旨在使用全球基础设施以可证明中立的方式同时为众多加密货币和区块链提供可扩展性。 这被称为 BDN(区块链分发网络)。 本节概述了系统的信任模型,然后描述了履行中立性属性所需的关键机制。
BDN 的信任模型基于两个观察结果:首先,较长的区块传播时间永远不允许无需信任的对等区块链(例如,比特币)大幅扩展; 其次,小型中心化系统通过信任一小部分参与者并将对区块链中包含的交易的控制权传递给他们,从而很好地扩展(例如,Ripple 和 EOS)。
然而,这种中心化破坏了区块链最显着的方面:对交易的控制权的分发和去中心化。 将对区块链交易的控制权提供给有限数量的参与者,使参与者可以勾结、审查和歧视用户、节点和矿工。 有限的参与者集还减少了恶意行为者为控制系统而必须入侵的节点数量。
BDN 通过反转中心化系统中的信任方向来解决这种权衡。 虽然中心化系统信任一小部分节点以实现可扩展性,但 BDN 通过使用一小部分服务器来启用可扩展性,这些服务器信任整个网络。 由此产生的系统可以实现扩展,但节点无需信任 BDN。 相反,BDN 盲目地为节点提供服务,而不知道它传播的区块、它们的来源或它们的目的地。 此外,它的行为受到它服务的节点的持续审计,并且它无法歧视单个节点、区块和交易。 虽然这种设计使 BDN 与它服务的节点相比处于劣势,但它的稳健性使其能够承受不诚实和恶意行为。7
简而言之,BDN 只能公平地将所有区块传播到所有区块链节点,并且由于仍以对等方式连接的区块链节点执行的审计,它无法进行歧视。
为了防止 BDN 根据区块的内容停止传播任何区块,区块在加密后传播(图 3 中的步骤 1)。 BDN 的加密还会改变区块大小,隐藏交易数量及其总大小。 区块传播后,接收对等节点通过发送区块的哈希值来通知发送者(图 3 中的步骤 2)。 最后,区块的加密密钥被揭示并通过区块链对等网络直接传播(图 3 中的步骤 3)。 加密密钥的体积很小,只有几个字节,使其能够通过对等网络快速直接传播,而 BDN 无力阻止它。
为了确保 BDN 不阻止单个节点传播其区块,节点不必将区块直接传播到 BDN。 如果 BDN 未传播区块(图 4 中的步骤 1),则发送节点会将其传播到对等网络上的对等方(图 4 中的步骤 2),后者会将其转发到 BDN(图 4 中的步骤 3),从而模糊区块在 BDN 中的来源。 例如,在中国挖掘区块的节点可以将其转发到欧洲的节点,然后欧洲的节点通过 BDN 发送区块。 除了间接向 BDN 中继区块外,节点还可以请求其对等方将来自 BDN 的传入区块中继给它们。 这确保了 BDN 不能通过延迟交付区块来歧视节点,因为节点无需直接与 BDN 交互即可从其服务中受益。
虽然 BDN 不知道哪个节点发起每个区块,但它可能会尝试阻止或拖延来自某些节点子集的区块,从而影响它们中继的所有区块。 为了检测和防止此类行为,节点必须能够持续监控 BDN 的服务。 这种监控是通过允许节点将加密的无效区块(测试区块)直接发送到 BDN(图 5)并测量对等方报告测试区块到达所需的时间来实现的。 BDN 无法仅对有效区块采用歧视性策略并忠实地传播测试区块,因为在密钥发布之前,两者是无法区分的。
因此,通过使用流量加密和间接流量中继,并通过显式审计 BDN,区块链节点能够限制 BDN 的不当行为能力,从而有效地将 BDN 运营商的权限与 BDN 基础设施分离。 如果 BDN 完全停止交付区块,或者仅向一小部分节点交付区块,则区块链节点可以放弃 BDN。
由于节点不断使用测试区块来推断接收区块的最佳来源,因此任何受到 BDN 歧视的节点都将简单地从其对等方接收区块。 因此,如果 BDN 恶意歧视许多或所有对等方,则对等方将简单地形成自己的对等网络,直到不同的系统取代它。 此外,如果歧视是由大规模系统故障引起的,则对等方将在故障解决后返回使用 BDN。
本质上,BDN 部署了一个广播原语,这意味着它可以实现从单个源节点到区块链网络中所有其他节点的数据高效传输。 与对等网络(其中每个区块链节点都连接到许多其他节点,通常分布在世界各地)相比,区块链节点将这种一对多通信替换为一对一通信。 这是因为区块链节点连接到单个 BDN 服务器。
在 TPS 速率较高的情况下,使用单个连接而不是多个连接有助于扩展。 必要时,区块链节点仍然需要连接在对等网络中,以有效地审计 BDN。 然而,大部分数据都传输到 BDN 和从 BDN 传输。 以下是 BDN 帮助扩展区块链的几种方式。
在区块链系统(例如,比特币或以太坊)中,每个节点都会收到两次交易:第一次是作为原始交易在网络中初始传播时,第二次是当它们包含在区块中时。 BDN 可以有效地通过云分发交易,对其进行索引,然后在传输区块时利用索引(而不是原始交易)。 考虑到原始交易大约为 500 字节长,而索引可以是四个字节或更少,这有效地将区块大小压缩了 100 倍以上。
交易缓存是区块链生态系统中的一个现有想法,已被某些项目3 采用,但仅由端点部署,而不是由网络部署。 因此,鉴于纯区块链系统中的并非所有交易都到达所有端点,8 即使是轻微的去同步也可能导致区块大小显着增加(并非所有交易都被“压缩”); 因此,性能会受到影响。 相比之下,BDN 可以有效地传输区块链交易并对其进行索引。
与区块链节点相比,BDN 无法检查网络中流动的区块的有效性,因为它们是加密的。 这有助于通过网络快速传输区块。 特别是,在 BDN 节点接收到区块的所有位之前,BDN 已经可以开始将接收到的区块位传输到网络的其余部分。 这称为直通路由,并且在网络交换机中已广泛采用数十年。 尽管如此,它仍然可以显着加快数据传输速度,尤其是在区块很大时。
交易需要在区块链网络中广播。 在没有 BDN 的情况下,在更高的 TPS 速率下,这会产生所谓的内播问题:相同的交易以高速率从多个来源接收。 这会显着影响节点的资源并影响整体区块链性能。 鉴于包括交易在内的大部分数据都传输到单个 BDN 服务器和从单个 BDN 服务器传输,因此 BDN 消除了这个问题。
下面描述了扩展区块链的替代方法。
一种替代方法(例如,闪电网络)使用链下交易,旨在减少主区块链上的一些冗余。 一般来说,链下扩容解决方案将在两方之间开辟一个支付通道(即,让双方在跟踪中间余额的同时交换资金),然后在区块链上发布结算交易。
这种解决方案与 BDN 的提议无关。 事实上,链下扩容解决方案仍然从根本上需要链上能力。 此外,潜在的扩容优势是倍增的。 如果由于 BDN 的存在,底层区块链可以支持的交易数量是以前的 1,000 倍,并且如果链下交易将吞吐量再提高 1,000 倍,那么该区块链的吞吐量将提高六个数量级。
链上扩容解决方案通常涉及以某种方式修改共识协议以实现更高的吞吐量。 一种这样的方法,称为分片,将区块链分成几个较小的分片,这些分片被维护和交错,以便在仅需要完整节点来跟踪一个分片而不是完整区块链的情况下,保留区块链的原始安全属性。 在这个领域中还存在许多其他想法。2 虽然这些方法显示出潜力,但它们在实践中的稳健性、安全性和可用性仍有待观察。
尽管如此,所有链上扩容解决方案在更快的网络层上都将表现得更好,而这正是 BDN 提高其性能的地方。 事实上,在每个分布式共识协议中,每个符合协议的节点都必须达成相同的决定。 因此,每个这样的对等方都必须获得系统中每笔交易的信息,而与共识协议无关。 BDN 专注于这个特殊的问题,这从根本上来说是一个广播问题,因为每条有效的信息都必须传播到系统中的每个对等方。 因此,BDN 与原生共识协议无关,并且能够通常显着提高任何区块链的性能。
可证明中立的云无疑是区块链扩容的可行解决方案。 通过优化传输层,不仅可以从根本上扩大吞吐量,而且可以显着降低延迟。 事实上,对于大多数流,当今数据中心的延迟分布已经偏向于微秒级时间尺度,只有毫秒级时间尺度位于分布的尾部。 没有理由认为 BDN 存在点无法实现类似的性能。
在这些 BDN 存在点之间添加专用光纤基础设施将进一步缓解吞吐量并降低延迟,从而创建高级 BDN 的骨干网。 然而,这一愿景的关键在于区块链生态系统对底层网络基础设施建立信任。 反过来,这可以通过通过可证明中立的网络设计将权限与基础设施分离来实现。
1. Bitcoinstats.com。 数据传播; http://www.bitcoinstats.com/network/propagation/。
2. Cachin, C., Vukolic, M. 2017。 野生环境中的区块链共识协议。 arXiv; https://arxiv.org/pdf/1707.01873.pdf。
3. Clifford, A., Rizun, P. Suisani, A., Stone, A., Tschipper, P. 2016。 迈向大规模链上扩容:展示我们使用 Xthin 的区块传播结果; https://medium.com/@peter_r/towards-massive-on-chain-scaling-presenting-our-block-propagation-results-with-xthin-da54e55dc0e4。
4. Croman, K., Decker, C., Eyal, I., Gencer, A. E., Juels, A., Kosba, A., Miller, A., Saxena, P., Shi, E., Sirer, E. G., Song, D., Wattenhofer, R. 2016。 关于扩展去中心化区块链。 在金融密码学和数据安全国际会议中。 Springer。 106-125。
5. Decker, C., Wattenhofer, R. 2013。 比特币网络中的信息传播。 在第 13 届 IEEE 对等计算国际会议中; https://ieeexplore.ieee.org/document/6688704。
6. Internet Live Stats; http://www.internetlivestats.com/one-second/。
7. Klarman, U., Basu, S., Kuzmanovic, A., Sirer, E. G. 2018。 bloXroute:可扩展的无需信任的区块链分发网络; https://bloxroute.com/wp-content/uploads/2018/03/bloXroute-whitepaper.pdf。
8. Nakamoto. S. 2008。 比特币:一种点对点电子现金系统。 Bitcoin.org; https://bitcoin.org/bitcoin.pdf。
实践研究
加密货币、区块链和智能合约
Arvind Narayanan 和 Andrew Miller
https://queue.org.cn/detail.cfm?id=3043967
更好、更快、更安全
谁在掌控互联网的未来?
Brian Carpenter
https://queue.org.cn/detail.cfm?id=1189290
专用全球网络:谷歌转向 SDN
与 Amin Vahdat、David Clark 和 Jennifer Rexford 的讨论
https://queue.org.cn/detail.cfm?id=2856460
Aleksandar Kuzmanovic 是西北大学计算机科学教授。 他最近的研究包括内容交付网络、网络中立性和区块链。 他是区块链扩容初创公司 bloXroute Labs 的联合创始人,并在该公司担任首席架构师。
版权所有 © 2019,所有者/作者持有。 出版权已许可给 。
最初发表于 Queue 第 17 卷,第 1 期—
在 数字图书馆 中评论本文
Scott Ruoti, Ben Kaiser, Arkady Yerukhimovich, Jeremy Clark, Rob Cunningham - 区块链技术:它有什么用?
企业高管、政府领导人、投资者和研究人员经常提出以下三个问题:(1)区块链技术究竟是什么?(2)它提供哪些功能?(3)有哪些好的应用? 在这里,我们彻底回答这些问题,全面概述区块链技术,将炒作与现实区分开来,并为未来讨论区块链技术的具体细节提出有用的词汇表。
Jim Waldo - 区块链宇宙的搭便车指南
这些天很难避免听到关于区块链的消息。 尽管区块链具有巨大的潜力,但也很难找到关于它真正是什么的统一描述。 本文着眼于区块链的基础知识:各个组成部分、这些组成部分如何组合在一起,以及可以进行哪些更改来解决区块链技术的一些问题。