前段时间,特斯拉创始人马斯克在推特上表示,理想情况下,狗币可以将区块确认时间缩短10倍,区块大小增加10倍,手续费减少100倍,然后就可以轻松获胜。
这一说法引起了加密行业KOL的诸多批评,以太坊创始人维塔利克今天就此撰文称,仅仅改进区块链网络的参数就会带来更多麻烦,阐述了区块链网络为提高其性能所面临的问题和限制。因此,链捕手翻译了这篇文章,并在不影响原意的情况下进行了删减。
你能把区块链的可伸缩性提升到什么程度?正如马斯克所希望的那样,你真的能“将区块确认时间减少10倍,将区块大小增加10倍,并将处理费用减少100倍”,而不会造成极度中心化,破坏区块链的基本属性吗?如果没有,你能走多远?如果你改变共识算法呢?更重要的是,如果您更改技术来引入zk snark或切片之类的特性,会发生什么?
事实证明,无论区块链是否支离破碎,都有一些重要且相当微妙的技术因素限制了区块链的可伸缩性。在许多情况下,这些限制是有解决办法的,但即使有解决办法,也有限制。本文将探讨这些问题。
节点需要足够去中心化
凌晨2点35分,你接到一个来自世界另一边的合伙人的紧急电话,他帮助你管理矿井(或者可能是抵押池)。从大约14分钟前开始,你的合作伙伴就告诉你,你的矿和其他几个矿已经从仍然占据79%网络的区块链中分离出来。根据您的节点,大多数链块是无效的。存在一个平衡错误:密钥块似乎错误地将450万个额外代币分配给了一个未知地址。
一个小时后,你正在和另外两个小矿场进行电报聊天。你最终会看到有人将链接粘贴到包含已发布消息的tweet。这条微博以“宣布新的连锁可持续发展基金”开头。
早上,Twitter和社区论坛上的辩论随处可见。但到那时,450万枚代币中的很大一部分已经转化为链上的其他资产,并进行了数十亿美元的DeFi交易。79%的共识节点,以及所有主要的区块链探索者和轻钱包节点,都遵循这条新链。也许一个新的开发基金将资助一些开发项目,或者所有这些项目都将被主要交易所吞并。然而,不管结果如何,基金的所有意图和目的都是既成事实,而普通用户却无法反击。
这会发生在你的区块链上吗?区块链社区中的精英们可能会很好地协调,包括矿池、区块浏览器和托管节点。他们可能都在同一个电报频道和微信群里。如果他们真的想突然改变协议的规则,以促进自己的利益,他们可以。使这种协作式社交攻击无效的唯一可靠方法是通过被动防御,而这个群体实际上是去中心化的:用户。
想象一下,如果用户运行以验证区块链的节点,然后自动拒绝违反协议的规则(即使超过90%的矿工或利益相关者支持协议),故事会如何发展。如果每个用户都运行一个身份验证节点,那么攻击很快就会失败:在这个过程中,会出现一些地雷和交换,这看起来相当愚蠢。
但是,即使部分用户运行认证节点,攻击也不会使攻击者获得完全的胜利;相反,它会导致混乱,不同的用户会看到不同的区块链视图。至少,随之而来的市场恐慌和可能的持续分裂将大大减少攻击者的利润。管理这样一场旷日持久的冲突的想法本身就能防止大多数袭击。
paradigms研究合作伙伴Hasu的Twitter
如果您有一个由37个节点运行器和80000个被动侦听器组成的社区来检查签名和阻止标头,则攻击者获胜。如果社区中的每个人都运行一个节点,攻击者将失败。我们不知道对抗协作攻击的组免疫的确切阈值,但有一点是**清楚的:节点越多越好,节点越少越好,我们肯定需要几十个或几百个节点。
节点工作的局限性是什么?
为了**限度地增加可以运行节点的用户数量,我们将重点关注传统的消费类硬件。完整节点处理大量事务的能力有三个关键限制
算力:安全运行一个节点需要多少百分比的CPU?
带宽:考虑到当前互联网连接的实际情况,一个块可以包含多少字节?
存储:我们可以要求用户存储多少GB磁盘?另外,它的读取速度必须有多快(是可以使用硬盘,还是需要固态磁盘
许多人错误地认为,使用“简单”技术可以将区块链扩展多远,是因为对这些数字过于乐观。我们可以逐一考察以下三个因素:
1) 算力
错误答案:*的CPU能量可以用于块验证。
正确答案:大约5-10%的CPU功率可用于块验证。
限购比例如此之低,主要有四个原因
我们需要一个安全边际来覆盖DoS攻击的可能性(攻击者利用代码的弱点进行的事务需要比常规事务更长的处理时间);
当节点离线时,它需要能够同步区块链。如果我切断网络一分钟,我应该能在几秒钟内赶上;
正在运行的节点不应该很快耗尽电池电量并减慢所有其他应用程序的速度;
节点还需要执行其他非阻塞生产任务,主要围绕P2P网络来验证和响应传入的事务和请求。
请注意,直到最近,大多数受访者都在回答“为什么只有5-10%的解释中心化在一个不同的问题上:由于POW块是随机出现的,验证块需要很长时间,这增加了同时创建多个块的风险。
有很多方法可以解决这个问题(例如,比特币ng或仅仅使用兴趣证明机制)。但这些补丁并不能解决其他四个问题,因此它们并没有像许多人最初认为的那样带来可伸缩性方面的好处。
平行性不是一切。通常,即使看起来像单线程的区块链客户端也被并行化了:签名可以由一个线程验证,而执行则由其他线程完成,另外一个线程在后台处理事务池逻辑。而且,所有线程的利用率越接近*,运行节点消耗的能量就越多,针对DoS的安全边际就越低。
2) 带宽
错误答案:如果我们每2-3秒有10 MB的数据块,大多数用户的网络速度是gt;10 Mb/s,所以他们当然可以处理。
正确答案:也许我们可以每12秒处理1-5 MB的数据块,尽管这很难。
现在,我们经常听到关于互联网连接能提供多少带宽的广告统计:通常是100 Mbps甚至1 Gbps。但是,由于以下原因,公布的带宽数据与实际带宽存在较大差异:
“Mbps”是指“每秒数百万位”。位是字节的1/8。因此,需要将广告位的数目除以8来获得广告字节的数目;
像所有公司一样,互联网供应商经常撒谎;
总是有多个应用程序使用同一个Internet连接,因此节点不能占用整个带宽;
P2P网络不可避免地带来了自身的开销:节点经常多次下载和上传同一个块(更不用说在包含在块中之前通过MemPool广播的事务)。
starkware在2019年进行实验时,**发布了500KB的数据块。这是因为交易气体成本的降低**使这种可能性成为可能。事实上,有几个节点无法处理这种大小的块。
此后,区块链处理大数据块的能力得到了提高,并将继续提高。但是无论我们做什么,我们仍然远远没有天真地得到平均带宽(MB/s),让我们自己相信我们可以接受1s的延迟并拥有如此大的数据块。
3) 储存
错误答案:10TB。
正确答案:512g。
正如你可能猜到的,这里的主要论点和其他地方一样:理论和实践的区别。理论上,您可以在Amazon上购买8 TB SSD。事实上,用来写这篇博客文章的笔记本电脑是512GB。如果你要求人们购买他们自己的硬件,他们中的许多人会变得懒惰(或者他们买不起800美元的8tb SSD),而使用中心化的供应商。
此外,即使可以在某些存储磁盘上安装并运行chunk节点,**别的活动也很容易快速烧掉磁盘,迫使您不断购买新磁盘。
此外,存储大小决定了新节点联机并开始参与网络所需的时间。现有节点必须存储的任何数据都是新节点必须下载的数据。初始同步时间(和带宽)也是用户运行节点的主要障碍。在写这个博客时,我花了大约15个小时来同步一个新的gETH节点。
区块链风险
如今,在以太坊区块链中运行一个节点给许多用户带来了挑战。所以我们有一个瓶颈。核心开发人员最关心的是存储大小。因此,目前努力解决计算和数据瓶颈问题,甚至对一致性算法进行修改,都不太可能导致气限的大量提高。即使解决了以太坊最突出的DOS漏洞,气体极限也只能提高20%。
解决存储容量问题的唯一方法是无状态和有状态过期。无状态允许一类节点在不维护**存储的情况下验证区块链。当状态过期时,用户将知道最近未访问的状态,从而强制用户手动提供续订证明。
这两种途径已经使用了很长一段时间,无国籍状态的概念验证实施已经开始。这两项改进的结合可以大大缓解这些担忧,并为天然气限值的大幅提高开辟了空间。然而,即使在实施无国籍和国家到期之后,气体限制也只能安全地增加大约三倍,直到其他限制开始占主导地位。
碎片化从根本上绕过了上述限制,因为它将区块链中包含的数据与单个节点要处理和存储的数据解耦。它们使用先进的数学和密码技术来间接验证块,而不是节点自己下载并执行来验证块。
因此,分区块链可以安全地达到非分区块链无法达到的事务吞吐量水平。创建一种高效简单的完全验证方法并成功地拒绝无效块确实需要大量的密码学智慧,但这是可以做到的:理论非常成熟,基于规范草案的概念验证正在进行中。
以太坊计划使用二次分区,因为节点必须能够处理单个分区和信标链(必须为每个分区执行一定量的管理工作),所以总体可扩展性是有限的。如果片段大小太大,节点将无法再处理单个片段。如果片段太大,节点将无法再处理信标链。这两个约束的乘积构成上界。
我们可以想象,我们可以通过三次甚至指数分割来更进一步。在这样的设计中,数据可用性采样必然要复杂得多,但它是可以做到的。然而,以太坊不会比圆锥更进一步。原因是,除非其他风险变得非常高,否则事务碎片化实际上无法获得额外的可伸缩性收益。
那么风险是什么呢?
1) 最小用户数
可以想象,只要用户愿意参与,非区块链就可以运行。分区区块链不是这样的:没有节点可以单独处理整个区块链,因此需要足够的节点一起处理。如果每个节点可以处理50个TPS,区块链需要处理10000个TPS,那么链上至少可以运行200个节点。
如果区块链在任何时候都少于200个节点,要么节点跟不上区块链,要么节点检测不到无效块,要么根据节点软件的安装方式,可能会出现很多其他的不良情况。
如果分区块链的容量增加10倍,则最小节点数也将增加10倍。好吧,你可能会问:为什么我们不从一点点容量开始,当我们看到大量用户涌入时再增加它;如果用户数量减少,容量会减少吗?因此,我们可以抓住真正需要它的部分;
以下是一些问题:
区块链本身无法准确检测出有多少个独特的节点,因此需要某种治理来检测和设置分区的数量。超越能力极限,很容易成为分裂和冲突的根源。
如果许多用户突然意外地退出呢?
增加fork启动所需的最小节点数将使抵御恶意接管变得更加困难。
几乎可以肯定的是,最小节点数不应超过1000个,因此,似乎很难证明一个拥有数百个以上节点的区块链是合理的。
2) 历史可检索性
区块链用户真正看重的重要属性是持久性。当公司破产或失去维持生态系统的能力时,存储在服务器上的数字资产将在10年内被移除。另一方面,以太坊的NFT是**的。
是的,人们仍然会下载和检索你的加密猫在2371。
但一旦区块链的容量太大,存储所有这些数据就会更加困难。如果在某个时刻有很大的风险,就不会有人来存储历史的某些部分。
很容易量化这种风险。以区块链的数据容量(MB/s)为单位,乘以30得到每年以TB存储的数据量。当前碎片计划的数据容量约为1.3 MB/s,因此约为40 TB/年。如果增加10倍,每年将达到400 TB。
如果我们不仅希望数据可访问,而且希望数据易于访问,那么我们还需要元数据(例如,解压缩汇总内容),因此我们每年需要4 Pb,或者10年需要40 Pb。这是大多数区块链可以安全获得的合理上限。
因此,在这两个维度上,以太坊碎片化设计基本上都是以合理的**安全值为目标。参数可以增加一点,但不能太多。
总结
区块链的扩展有两种方式:基础技术的改进和简单的参数添加。首先,添加参数听起来很有吸引力:如果你在餐巾纸上做数学运算,很容易说服自己一台家用笔记本电脑每秒可以处理数千个事务,而不会出现zk snark、rollups或碎片。不幸的是,由于许多微妙的原因,这种方法存在根本性的缺陷。
运行区块链节点的计算机不能消耗*的CPU容量来验证区块链;它们需要很大的安全空间来抵御意外的DoS攻击,并且需要备用容量来执行事务,例如在内存池中进行处理。并且用户不希望在计算机上运行节点,因此计算机不能同时用于任何其他应用程序。
带宽也有开销:10 Mb/s的连接并不意味着每秒可以有10 Mb的块。每12秒最多可能有1-5 MB的块,与存储相同。增加正在运行的节点的硬件配置并将节点的运行限制为特定的参与者,这不是一个解决方案。对于一个去中心化的区块链来说,普通用户能够运行节点并拥有运行节点的共同活动文化是非常重要的。
基本的技术改进肯定会奏效。目前,以太坊的主要瓶颈是存储容量。无状态和状态过期可以解决这个问题,并允许它增加大约三倍(但不超过300倍),因为我们希望使运行节点比现在更容易。分区区块链可以进一步扩展,因为分区区块链中没有单个节点要处理的事务。
但即便如此,容量还是有限的:随着容量的增加,最小节点数会增加,归档链的成本(如果没有人费心管理归档链,数据丢失的风险也会增加)也会增加。
但我们不必太担心:这些限制足够高,在区块链完全安全的情况下,我们每秒可以处理100多万笔交易。但要在不牺牲区块链去中心化的前提下实现这一点,需要做出努力。
文章标题:Vitalik回应musk:提高区块链的可伸缩性并不容易
文章链接:https://www.btchangqing.cn/265697.html
更新时间:2021年05月25日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。