本人有多年的区块链服务经验,为用户提供专业的服务信息。在这里,我将介绍什么是区块链扩张,什么是区块链扩张。选择可以随时随地解决玩币遇到的各种问题,让你再也不用担心职称评定这种繁琐的业务。
比特币诞生之初,比特币的创始人中本聪并没有刻意限制块的大小,最大块可以达到32MB。当时,每个块的平均大小为1-2KB。有人认为区块链的上限太高,容易导致计算资源的浪费。也容易受到DDOS攻击。因此,为了保证比特币系统的安全性和稳定性,中本聪决定将区块大小暂时限制在1MB。当时比特币的用户数量较少,交易量没有那么大,不会造成区块拥堵。2013年至今比特币价格飙升,用户越来越多。比特币网络拥堵、交易成本上升等问题逐渐显现。比特币社区开始探索如何"展开"比特币,即通过修改比特币底层代码来提高交易处理能力。。2013年以来,随着用户的增加,以火币为代表的交易平台发挥着越来越重要的作用。
对于普通用户来说运行节点对于区块链的去中心化是非常重要的
想象一下在2o';早晨,你接到一个来自世界另一端的人打来的紧急电话,这个人帮你管理矿池(新人池)。从14分钟前开始。你池和其他几个人脱离了链条,网络依然保持着79%的计算能力。根据您的节点,大多数链块是无效的。这时出现了一个平衡错误:该块似乎错误地将450万个额外令牌分配给了一个未知地址。
一个小时后,你和另外两个小型矿池参与者、一些block浏览器和交流聚会在一个聊天室中,你看到有人发布了一个Twitter链接,其开头是单词"宣布新的在线可持续协议发展基金"。早上
相关讨论在Twitter和一个不审查内容的社区论坛上广泛传播。但在那个时候,450万代币中的很大一部分已经转化为链条中的其他资产,并且已经进行了数十亿美元的defi交易。79%的共识节点,所有主要的区块链浏览器和轻量级钱包终端都跟随了这个新的链条。也许是新的开发商';美国的基金将资助一些发展,或者也许所有这些都将被领先的矿池,交易所和他们的裙带关系所吞噬。但无论结果如何,该基金实际上已经成为既成事实。普通用户可以';不要抗拒。
也许有这样的主题电影。也许它会得到MolochDAO或其他组织的资助。
这种情况会发生在你的区块链吗?你们区块链社区的精英,包括矿池,块浏览器,托管节点,可能协调的很好,很可能都在同一个电报频道,同一个微信群。如果他们真的想为了利益突然修改协议的规则,那么他们可能有这个能力。。以太坊区块链在十个小时内彻底解决了共识失败的问题。如果是只由一个客户端实现的区块链,只需要将代码变更部署到几十个节点,就可以更快速地协调客户端代码的变更。。抵御这种社交协作攻击的唯一可靠方法是"被动防御",而这种力量来自于一个集中的群体:用户。
想象一下,如果用户运行区块链的验证节点(无论是直接验证还是其他间接技术)。并自动拒绝违反协议规则的区块,即使超过90%的矿工或认捐者支持这些区块,故事将如何发展?
如果每个用户运行一个验证节点,攻击很快就会失败:有些矿池和交易所会分叉。而且整个过程看起来很蠢。但即使只有部分用户运行验证节点,攻击者也可以';不要完全获胜。相反,攻击会导致混乱,不同的用户会看到不同的区块链版本。在最坏的情况下随之而来的市场恐慌和可能出现的连续链分叉,会大大降低攻击者的利润。应对这种旷日持久的冲突的想法本身就可以阻止大多数攻击。哈苏';对这一点的看法:
";我们必须明确一件事。我们之所以能够抵制恶意的协议变更,是因为我们有用户验证区块链的文化,而不是因为PoW或者PoS。
假设您的社区有37个节点操作符和80,000个被动侦听器。,检查签名和块头,然后攻击者获胜。如果每个人都运行节点,攻击者就会失败。我们不';我不知道针对合作攻击启动群体免疫的确切阈值,但有一点是绝对清楚的:好节点越多,恶意节点越少。而我们需要的数量绝对不止几十万。
那么整个节点工作的上限是多少呢?
为了让尽可能多的用户运行整个节点,我们将重点放在普通的消费级硬件上。。即使你很容易买到专用的硬件,可以降低一些节点的门槛,但其实扩展性的提升并没有我们想象的那么好。
整个节点处理大量事务的能力主要受到三个方面的限制:
计算能力:在保证安全的前提下,,我们可以划分多少个CPU来运行节点?
带宽:基于当前的网络连接,一个块可以包含多少字节?
存储:我们可以要求用户使用多少空间来存储?另外,它的阅读速度应该有多快?(即HDD够用吗?还是我们需要SSD?许多关于使用"简单"大大扩展区块链的技术源于对这些数字的过于乐观的估计。我们可以依次讨论这三个因素:
计算能力
错误答案:应该100%的CPU用于块验证
正确答案:大约5-10%的CPU可以用于块验证
限制这么低的四个主要原因如下:
。我们需要一个安全边界来覆盖DoS攻击的可能性(攻击者利用代码弱点进行的交易比常规交易需要更长的处理时间)
节点需要能够在离线后与区块链同步。如果我断线一分钟,然后我应该能在几秒钟内完成同步。
运行节点不应该很快耗尽电池,也不应该减慢其他应用程序的运行速度。
节点还有其他非数据块生产工作要做。,大多数是对p2p网络中输入的交易和请求的验证和响应
请注意,直到最近,大多数都是针对"为什么只需要5-10%?"对这一点的解释集中在另一个不同的问题上:因为PoW的时间是不确定的验证块需要很长时间,这将增加同时创建多个块的风险。有很多方法可以解决这个问题,比如比特币NG,或者使用PoS利息证明。但这些并没有解决其他四个问题。因此,他们并没有像很多人预期的那样在可扩展性上有很大的进步。
并行不是万能的。通常,即使看起来像单线程区块链的客户端也已经被并行化:签名可以由一个线程验证,执行由其他线程完成。并且有一个单独的线程在后台处理交易池逻辑。而且所有线程的利用率越接近100%,运行节点的能耗就越多,对于DoS的安全系数就越低。
带宽
错误答案:如果不是每2-3秒生成10MB块,那么大部分用户';网络大于10MB/秒,当然可以处理这些块
。正确答案:也许我们可以每12秒处理1-5MB的块,但现在还是很难
。我们经常听到广泛传播的关于互联网连接可以提供多少带宽的统计数据:100Mbps甚至1Gbps的数据很常见。但是,由于以下原因,申报的带宽和预期的实际带宽相差很大:
";Mbps"意味着"百万比特”;每秒";一个比特是一个字节的1/8,所以我们需要用声称的比特数除以8来得到字节数。
网络运营商和其他公司一样,经常编造谎言。
总是有多个应用程序使用同一个网络连接,因此节点无法独占整个带宽。
P2P网络不可避免地引入了开销:节点通常会多次下载和重新上传同一个块(更不用说事务在打包成块之前必须通过mempool广播)。
starkware在2019年进行实验时,他们在交易数据gas成本降低后首次释放了一个500kB的块,有些节点实际上无法处理这个大小的块。。处理大数据块的能力已经并将继续提高。但是不管我们做什么,我们仍然可以';我们无法获得以MB/s为单位的平均带宽,并说服自己可以接受1秒的延迟,并且有能力处理这样大小的数据块。
商店
错误答案:10tb
正确答案:512GB
你可能已经猜到了,这里的主要论点和别处一样:理论和实践的区别。理论上,我们可以在亚马逊上买到8TB固态硬盘(SSD或NVME是真的需要;硬盘对于区块链州立存储来说太慢了)。事实上,我用来写这篇博文的笔记本电脑有512GB。如果你让人们购买硬件,许多人会变得懒惰(或者他们可以';800美元买不起8TBSSD)并使用集中式服务。即使区块链可以安装在存储设备上,大量的活动也会很快耗尽磁盘,迫使您购买新磁盘。
一组区块链协议研究人员调查了每个人';的磁盘空间。我知道样本量小,但还是…
请点击进入图片说明
另外,存储大小决定了新节点上线并开始参与网络所需的时间。。现有节点必须存储的任何数据都是新节点必须下载的数据。这种初始同步时间(和带宽)也是用户运行节点的主要障碍。在写这篇博文的时候,我花了大约15个小时来同步一个新的geth节点。。如果以太坊的使用量增加10倍,同步一个新的geth节点至少需要一周时间,更有可能限制节点的互联网连接。这一点在攻击中更为重要。如果用户以前没有运行过该节点,要成功应对攻击,需要用户启用新节点。
交互效应
另外,这三类成本之间存在交互效应。因为数据库内部使用树形结构来存储和检索数据因此,从数据库获取数据的成本随着数据库大小的对数而增加。事实上,因为顶层(或前几层)可以缓存在RAM中,所以磁盘访问的成本与数据库的大小成正比,而数据库的大小是RAM中缓存数据大小的倍数。
唐';不要从字面上理解这张图表。不同的数据库以不同的方式工作。通常,内存中的部分只是一个单独的(但很大的)层(参见leveldb中使用的LSM树)。但基本原理是一样的。例如
如果缓存为4GB,并且我们假设数据库的每一层都比前一层大4倍,那么以太坊当前的~64GB状态将需要~2次访问。但是如果状态大小增加4倍,达到256GB,,那么这将增加到~3次访问。因此,gas上限增加4倍实际上可以转化为块验证时间增加6倍。这种影响可能更大:硬盘满了比空闲时读写的时间更长。
这对以太坊意味着什么?
现在在以太坊区块链中,运行一个节点已经成为许多用户的一个挑战,尽管仍然可以使用至少常规的硬件(当我写这篇文章时,我刚刚在我的笔记本电脑上同步了一个节点!)。因此,我们即将遇到一个瓶颈。核心开发者最关心的是存储大小。所以,目前下大力气解决计算和数据瓶颈,甚至共识算法的改变,都不太可能带来气限的大幅提升。。就算解决了以太坊最大的DoS弱点,气限也只能提高20%。
存储大小问题的唯一解决方案是无状态和状态过期。。无状态使节点组能够在不维护永久存储的情况下进行验证。过期状态会停用最近没有访问过的状态,用户需要手动提供证明才能更新。这两条路径已经研究了很长时间,无国籍的概念验证实现已经开始。。这两项改进的结合可以极大地缓解这些担忧,并为显著提高气体极限打开空间。然而,即使在实施无国籍和状态到期后,气体限制也可能只能安全地增加3倍左右,直到其他限制发挥作用。
另一个可能的中期解决方案是使用ZK-斯纳克法来验证交易。ZK-斯纳克可以确保普通用户不会';不需要亲自存储状态或验证块,即使他们仍然需要下载块中的所有数据来抵御数据不可用性攻击。。此外,即使攻击者不能强制提交无效块,如果运行共识节点太困难,仍然会有协同审查攻击的风险。因此,ZK-斯纳克可以';不要无限提高节点容量。但还是可以大幅提升的(或许1-2个数量级)。一些区块链在第1层探索这种形式,而以太坊受益于第2层协议(也称为ZK汇总)。,比如zksync,Loopring,Starknet。
切片后会发生什么?
碎片从根本上解决了上述限制,因为它将区块链中包含的数据与单个节点需要处理和存储的数据分离开来。。节点验证块不是亲自下载执行,而是利用高等数学和密码学技术间接验证。
因此,分段区块链可以安全地拥有非常高的吞吐量,这是非分段区块链无法实现的。。这确实需要大量的密码学技术来有效替代幼稚的完全验证来拒绝无效块,但这是可以做到的:理论已经有了基础,基于规范草案的概念验证也已经在进行中。
Ethereum计划采用二次分片,其中总的可扩展性受到以下事实的限制:节点必须能够同时处理单个分片和信标链,信标链必须为每个分片执行一些固定的管理工作。。如果片段太大,节点就不能再处理单个片段,如果片段太多,节点就不能再处理信标链。这两个约束的乘积构成了上限。
可以想象,我们可以通过立方切片甚至指数切片走得更远。在这样的设计中数据可用性抽样肯定会变得更加复杂,但这是可以实现的。但以太坊并没有超越二次函数,因为在其他风险水平可以接受的前提下,无法实现从事务碎片到事务碎片的额外可伸缩性增益。
那么这些风险是什么呢?
最小用户数
可以想象,只要有一个用户愿意参与,非分段的区块链就能跑起来。然而,支离破碎的区块链并非如此:单个节点无法处理整个链条。因此,需要足够的节点来共同处理区块链。如果每个节点可以处理50个TPS,链可以处理10000个TPS,那么链至少需要200个节点才能生存。如果链在任何时候都少于200个节点,可能会发生节点无法再保持同步,或者节点停止检测无效块,或者可能会发生许多其他不好的事情,这取决于节点软件的设置。
实际上,由于需要冗余(包括数据可用性采样)安全的最低数量比简单的"链TPS除以节点TPS"。对于上面的例子,我们将其设置为1000个节点。
如果分段区块链的容量增加10倍,则最小用户数也增加10倍。。现在你可能会问:为什么不?t我们从较低的容量开始,在用户多的时候增加容量,因为这是我们的实际需求,然后在用户数回落的时候再减少容量?这里有几个问题区块链本身无法可靠地检测有多少独立用户,因此需要一些治理来检测和设置碎片的数量。能力限制的治理很容易成为分裂和冲突的根源。
很多用户突然意外同时断线怎么办?
增加启动fork所需的最小用户数量会使防御恶意控制变得更加困难。最小用户数1000,几乎没问题。另一方面,最低用户数设置为100万,肯定是不行的。。即使最低用户数是1万,也可以说一开始就变得有风险了。因此,似乎很难证明拥有数百个以上碎片的支离破碎的区块链是合理的。
历史可检索性
用户真正珍视的区块链的重要属性是永久性。。当公司破产或生态系统的维护不再产生效益时,存储在服务器上的数字资产将在10年内不复存在。以太坊上的NFT是永久的。
是的,到2372年,人们仍然可以下载和查阅你的加密猫。
但是一旦区块链的容量过高,存储所有这些数据会变得更加困难,直到某个时候出现极大的风险,一些历史数据最终会.没有人会储存。这种风险很容易量化。。将区块链的数据容量(MB/秒)乘以30,得到每年存储的数据量(TB)。目前分片方案的数据容量约为1.3MB/s,因此约为40TB/年。如果增加十倍,,是400TB/年。如果我们不仅希望能够访问数据,而且是以一种方便的方式,我们需要元数据(比如解压汇总事务),那么每年会达到4PB,或者十年后达到40PB。。互联网存档使用50PB。所以这可以说是分段区块链安全尺寸的上限。
因此,似乎在这两个维度中。其实以太坊的碎片化设计已经非常接近合理的最大安全值了。常数可以增加一点,但不要太多。
结论
尝试扩展区块链有两种方法:基本的技术改进和简单地升级参数。第一升级参数听起来很吸引人:如果你在纸上做数学运算,它';你很容易说服自己,消费类笔记本电脑可以每秒处理数千笔交易,而不会出现ZK-斯纳克、汇总或碎片。不幸地这种方法从根本上存在缺陷,有许多微妙的原因。
运行区块链节点的计算机无法使用100%的CPU来验证区块链;他们需要很大的安全裕度来抵御意外的DoS攻击。他们需要空闲容量来执行任务,例如在内存池中处理事务,而用户不需要';我不想在计算机上运行节点而同时不被任何其他应用程序使用。带宽也是有限的:10MB/s的连接并不意味着每秒可以处理10MB的数据块。!也许每12秒只能处理1-5MB的数据块。存储也是如此。提高运行节点的硬件要求,限制专业化的节点运营商,不是解决办法。对于去中心化的区块链,普通用户可以经营节点,形成文化。也就是运行节点是一种常见的行为,这一点很重要。
每个块的大小是一万亿,大概可以容纳一千多笔交易的信息。如果你在比特币区块链浏览器上观看,你会发现现在每个区块大约是一万亿。,已经达到了区块容量上限,如果比特币网络转账越来越多,很多交易都不会在交易后的第一个区块打包确认。可能需要几个街区或者更长的时间,比特币历史上也发生过几次沙尘袭击。其中,许多交易者在交易所(货币交易所)进行大量小额转账。尘埃攻击是指有人进行大量小额转账,使得网络中大量交易需要确认,导致无法确认正常转账,延迟确认时间,影响网络正常运行。
许多交易者等待两天或更长时间来确认他们的交易。虽然尘埃攻击是一个非常极端的例子,但是目前比特币网络的正常转账量已经远远超过了他所能承受的最大容量,现在每个块的大小都是一万亿。所以,扩大比特币区块的容量,突破现有的一兆的限制,就叫扩容。
相信在介绍了区块链展开和区块链展开的含义后,你对区块链展开的含义有了更透彻的理解。