当前位置:主页 > 保定科技 > 文章内容

usdt接口开发(www.caibao.it):V神:分片是以太坊可扩展性的未来 揭开分片的神秘面纱

日期:2021-04-11 浏览:

USDT第三方支付

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

稀奇谢谢Dankrad Feist和Aditya Asgaonkar对本文内容的审核。

分片(sharding)是以太坊可扩展性的未来,它将是辅助以太坊生态系统每秒支持数千笔生意并允许天下上大部门区域以可遭受的成本经常使用该平台的要害。然则,分片也是以太坊生态系统和更普遍的区块链生态系统中很容易被误解的看法之一。分片指的是一组具有异常特定属性的异常特定的想法,然则它经常与具有异常差异且通常弱得多的平安属性的手艺混为一谈。这篇文章的目的是确切注释分片提供的特定属性,它与没有分片的其他手艺有何差异,以及为实现这些属性而必须做出的牺牲。

以太坊的分片版本的众多形貌之一。Hsiao-wei Wang提供原始图,由Quantstamp设计。

可扩展性三角

形貌分片的最佳方式就是从塑造和启发解决方案的问题陈述最先:可扩展性三角

可扩展性三角以为,区块链试图同时拥有三个属性,若是坚持手艺“简朴性”,那么你只能获得这三个属性中的两个,即区块链“不能能三角”。 这三个属性是:

要想获得可扩展性三角中的两个,我们现在来看一下三类“简朴的解决方案”:

  • 高TPS区块链——包罗DPoS系列,也包罗许多其他产物。这些依赖于少数几个节点(通常为10-100个)之间保持共识,而用户必须信托这些节点中的大多数。这是可扩展的和平安的(从上面的界说来讲),然则它不是去中央化的。

  • 多链生态系统——这是指“横向扩展”的一样平常看法,通过在差其余链上开发差其余应用,并使用跨链通讯协议在它们之间举行对话。这是去中央化的,也是可扩展的,然则不是平安的,由于攻击者仅需要在多个链中的一个(通常少于整个生态系统的1%节点)中获得共识节点的多数,即可打破该链并可能引起连锁反映,从而导致对其他链中的应用造成了极大的损害。

分片是一种可以让您同时拥有所有三个属性的手艺。 分片区块链具备:

  • 可扩展:与单个节点相比,它可以处置更多的生意

  • 去中央化:它可以完全在家用条记本电脑上使用,而不依赖于任何“超级节点”

  • 平安:攻击者无法使用少量资源来瞄准系统的一小部门举行攻击; 他们只能试图统治和攻击整个区块链系统

本文章的其余部门将形貌分片区块链若何做到这一点。

通过随机采样举行分片

分片最容易明白的版本是通过随机采样举行分片。与我们在以太坊生态系统中确立的分片形式相比,通过随机采样举行分片具有较弱的信托属性,但它使用的手艺更简朴。

焦颔首脑如下。假设您有一个具有大量(例如10000个)验证者的PoS链,而且您有大量(例如100个)需要验证的区块。在泛起下一组区块产出之前,单逐一台盘算机不具有足以验证所有这些区块的能力。

因此,我们要做的是随机分配举行验证的事情。我们随机地对验证者列表举行混洗,并在混洗后的列表中分配前100个验证者以验证第一个区块,在混洗后的列表中分配后100个验证者以验证第二个区块,依此类推。这些随机分配用于验证区块(或执行其他义务)的验证者们称为委员会(committee)

验证者验证区块时,他们会宣布署名,以证实他们已这样做。 差异于所有人都验证这100个区块,取而代之的是所有人验证10000个署名——这么做的事情量要小得多,尤其是使用BLS署名聚合‌时。 取代通过相同的P2P网络广播每个区块,而是在差其余子网(sub-network)上广播每个区块,而且节点仅需要加入它们认真(或出于其他缘故原由而感兴趣)的区块所在的子网。

请思量一下,若是每个节点的盘算能力增添2倍,会发生什么情形。 由于每个节点现在可以平安地验证2倍以上的署名,因此您可以削减最小的质押存款巨细以支持2倍的验证者,因此,您可以组成200个委员会而不是100个委员会。因此,您可以每个插槽验证200个区块而不是100个。 此外,每个单独的区块也可以扩大2倍。 因此,您有2倍数目的2倍巨细区块,换句话说区块链容量总共增添了4倍。

我们可以通过一些数学术语来示意。 使用Big O示意法‌,我们使用“ O(C)”来指代单个节点的盘算能力。 传统的区块链可以处置O(C)个区块。 如上所述的分片区块链可以并行处置O(C)个区块(请记着,每个节点间接验证每个区块的成本为O(1),由于每个节点只需要验证牢靠数目的署名即可),每个区块具有O(C)容量,因此分片区块链的总容量为O(C2)。 这就是为什么我们将这种分片称为“二次分片”,而且这种影响是我们以为从久远来看分片是扩展区块链的最佳方式的要害缘故原由。

常见问题:拆分为100个委员会与拆分为100个自力的链有何差异?

有两点差异:

  1. 随机采样可防止攻击者将气力集中在一个分片上。在一个拥有100条链的多链生态系统中,攻击者只需要约0.5%的质押就可造成严重损坏:他们可以专注于对一条链睁开51%攻击。在分片的区块链中,攻击者必须拥有所有质押的约30-40%才气做同样的事情(换句话说,整个链具有共享的平安性)。固然,攻击者可以守候,只管其持有的质押少于所有质押的50%,但可以通过获得随机时机获得单个分片举行51%攻击的时机,然则对于少于51%的攻击者,这将攻击难度成倍增添。若是攻击者的资产少于〜30%,则险些是不能能的攻击乐成的。

  2. 慎密耦合:纵然一个分片遇到坏块,整个链也会重组以阻止这个区块。这里有一个社齐集约(在本文档的后续部门中,我们形貌了一些从手艺上实行这种合约的方式),纵然一条链在一个分片中只有一个坏块,这也是不能接受的,一旦发现,就应该废弃。这样可以确保从链上应用的角度来看,它具有完善的平安性:合约A可以依赖合约B,由于若是合约B由于对链的攻击而行为欠妥,那么整个历史纪录都将还原,包罗其由于合约B的故障而行为欠妥的合约A生意。

这两种差异确保分片为应用确立了一个环境,该环境保留了单链环境的要害平安属性,而多链生态系统则基本没有这种方式。

通过更好的平安模子改善分片

比特币社区的一种普遍看法是我完全赞成的,那就是像比特币(或以太坊)这样的区块链并不完全依赖一种忠实多数假设。若是对这样的区块链睁开51%攻击,则攻击者可以做一些令人憎恶的事情,例如还原或审查生意,但他们不能插入无效的生意。而且纵然举行还原或审查生意,运行通例节点的用户也可以轻松检测到该行为,因此,若是社区希望通太过叉来消除攻击者的气力来协调整决该攻击,他们可以迅速接纳行动。

缺乏这种分外的平安性是更中央化的高TPS链所面临的主要弱点。这样的链没有,也不能能具有运行节点的通例用户文化,因此主要节点和生态系统介入者可以更轻松地聚在一起,并实行社区异常不喜欢的协议更改。更糟糕的是,用户的节点默认情形下会接受它。一段时间后,用户会察觉,然则到那时,这个强制协议更改已经成为既成事实:这个协调肩负将由用户肩负来拒绝更改,他们将不得不做出痛苦的决议来逆转这一天在区块链上发生的价值,或取消更多每小我私人都以为已经完成的流动。

理想情形下,我们希望接纳一种分片形式,阻止51%信托假设,并保留传统区块链从周全验证中获得的壮大平安碉堡。而这正是我们已往几年的大部门研究功效。

可扩展的盘算验证

我们可以将抗51%攻击的可扩展验证问题分为两种情形:

  • 验证盘算:检查某些盘算是否准确完成,假设您拥有该盘算的所有输入

  • 验证数据可用性:检查盘算自己的输入是否以某种形式存储,若是确实需要,可以下载它们;执行此检查时,请不要现实下载所有输入自己(由于数据可能太大,无法每个区块都下载)

验证区块链中的区块涉及盘算和数据可用性检查:您需要确信区块中的生意有用,而且区块中声明的新状态根哈希是执行这些生意的准确效果,然则您还需要需要确信来自该区块的足够数据现实上已经宣布,以便下载该数据的用户可以盘算状态并继续处置区块链。第二部门是一个异常玄妙但主要的看法,称为数据可用性问题‌。稍后再讨论。

扩展验证盘算相对容易;有两种手艺:诓骗证实(fraud proofs)ZK-SNARK

诓骗证实是一种可扩展地验证盘算的方式。

这两种手艺可以简朴地形貌,如下:

  • 诓骗证实是一个接受盘算效果的系统,您需要有举行过质押的人签署以下形式的新闻:“我证实,若是使用输入X举行盘算C,则会获得输出Y”。您默认情形下会信托这些新闻,然则会给举行过质押的其他人提供挑战效果的时机(他们可以署名新闻,说“我差异意,输出效果应该为Z,而不是Y”)。仅当有人挑战效果时,所有节点才运行盘算。这两方中的任何一方失足都市失去其质押,而且将重新盘算所有依赖于该盘算效果的盘算。

  • ZK-SNARK是一种加密证实形式,可以直接证实“在输入X上执行盘算C会给出输出Y”的主张。该证实在密码上是“合理的”:若是C(x)不即是Y,则在盘算上不能能做出有用的证实。纵然运行C自己破费大量时间,该证实也可以很快地举行验证。有关ZK-SNARK的更多数学详细信息,请参见此文章。

基于诓骗证实的盘算是可扩展的,由于在“通常情形下”,您将通过验证单个署名来取代运行庞大的盘算。在特殊情形下,由于存在挑战,您必须在链上验证盘算,然则在特殊情形下却很少见,由于触发它的价值异常昂贵(最初的声明者或挑战者都市可能失去大量保证金)。 ZK-SNARK在看法上更简朴——它们只是用廉价得多的证实验证来取代盘算——但其事情原理背后的数学却要庞大得多。

有一种半可扩展系统,它只能扩展地验证盘算,同时仍然需要每个节点验证所有数据。通过使用一组压缩技巧将大部门数据替换为盘算,可以使此方式异常有用。这是Rollup‌的领域。

数据可用性的可扩展验证加倍难题

诓骗证实不能用于验证数据的可用性。盘算的诓骗证实依赖于这样的事实,即盘算的输入在最初声明者提交后即在链上宣布,因此,若是有人挑战,则挑战执行将在与原始执行完全相同的“环境”中举行。在检查数据可用性的情形下,您不能执行此操作,由于问题恰恰是存在太多数据需要检查才气在链上宣布的事实。因此,用于数据可用性的防诓骗方案遇到了一个要害问题:有人可以声称“数据X可用”但并不宣布它,守候受到挑战,然后只有在挑战者泛起在网络的其余部门而且错误的时刻才宣布数据X。

这在“fisherman逆境‌”中获得了扩展:

焦颔首脑是,这两个“天下”,一个是V1是一个邪恶的宣布者,V2是一个忠实的挑战者,而另一个“天下”是V1是一个忠实的宣布者,V2是一个邪恶的挑战者。两种情形对于那时未实验下载该特定数据的任何人来说都没有区别。 固然,在可扩展的去中央化区块链中,每个单独的节点只能希望下载一小部门数据,因此只有一小部门节点会看到发生了什么事情,除了存在分歧的事实。

分清谁对谁错是不能能的,这个事实使得不能能有一个有用的诓骗证实机制来保证数据的可用性。

,

USDT跑分网

U交所(www.payusdt.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

,

常见问题:若是某些数据不能用怎么办?使用ZK-SNARK,您可以确保一切都有用,这还不够吗?

不幸的是,仅仅有用性还不足以确保区块链准确运行。这是由于,若是区块链有用,但所有数据均不能用,则用户将无法更新其天生任何未来区块有用的证实所需的数据。天生有用但不能用的区块然后消逝的攻击者可以有用地让区块链陷入阻滞。有人还可以保留特定用户的帐户数据,直到该用户支付赎金为止,因此问题不仅仅在于生计问题。

有一些强有力的信息理论论点以为这个问题是基本的,而且没有可以解决的伶俐技巧(例如,涉及密码累加器‌)。有关详细信息,请参见本文(https://eprint.iacr.org/2009/612.pdf‌)。

那么,若何在不现实下载的情形下检查1 MB数据是否可用?听起来是不能能的!

这里的要害是一项称为数据可用性采样‌的手艺。数据可用性采样的事情方式如下:

  1. 使用称为擦除编码(erasure coding)的工具将具有N个区块的数据扩展为具有2N个区块的数据,以使这些区块中的任何N个都可以恢复整个数据。

  2. 为了检查可用性,用户无需实验下载所有数据,而只是随机地选择区块中恒定数目的位置(例如30个位置),而且仅当他们在所有选定位置的块中乐成找到块时,才接受这个区块。

擦除编码将“检查100%可用性”(每条数据可用)问题转换为“检查50%可用性”(至少一半数据可用)问题。随机抽样解决了50%可用性问题。若是少于50%的数据可用,那么至少有一项检查险些可以一定会失败,而且若是至少50%的数据可用,那么,只管某些节点可能无法将某个区块识别为可用,但这只需要一个忠实节点就能运行擦除编码重修程序,以带回剩余的50%区块。因此,您无需下载1 MB来检查1 MB区块的可用性,而只需下载几KB。这使得在每个区块上运行数据可用性检查变得可行。有关若何使用点对点子网有用地执行此检查的信息,请参见这篇文章(https://hackmd.io/@vbuterin/sharding_proposal#Blob-publication-process‌)。

可以使用ZK-SNARK来验证对一条数据的擦除编码是否准确完成,然后可以使用Merkle分支来验证各个区块。或者,您可以使用多项式答应(例如Kate(又名KZG)答应‌),该答应本质上是在一个简朴的组件中举行擦除编码并证实单个元素和准确性验证——这就是以太坊分片所使用的。

回首:我们若何确保一切都准确?

假设您有100个区块,而且您想不依赖委员会就有用地验证所有区块的准确性。我们需要执行以下操作:

  • 每个客户端在每个区块上执行数据可用性采样,以验证每个区块中的数据是否可用,同时每个区块仅下载几KB,纵然区块的整体巨细为MB或更大。客户端仅在准确响应了其可用性挑战的所有数据后才接受区块。

  • 既然我们已履历证了数据的可用性,那么验证准确性将变得加倍容易。有两种手艺:

  1. 我们可以使用诓骗证实:一些质押存款的介入者可以对每个区块的准确性举行署名。其他称为挑战者(或fisherman)的节点随机检查并实验完全处置区块。由于我们已经检查了数据可用性,以是始终可以下载数据并完全处置任何特定的块。若是他们发现一个无效的区块,他们将宣布一个所有人都可以验证的挑战。若是该块被证实是坏的,则需要重新盘算该块以及所有依赖于该块的未来区块。

  2. 我们可以使用ZK-SNARK。每个区块都带有一个ZK-SNARK证实准确性。

  • 在以上两种情形下,每个客户端仅需要对每个区块举行少量验证事情,无论区块有多大。就诓骗证据而言,偶然需要在链上对区块举行充实验证,但这应该异常少见,由于纵然仅触发一个挑战也是异常昂贵的。

这就是所有! 在以太坊分片中,短期设计是使分片的区块仅成为数据(data only)。 也就是说,这些分片纯粹是一个“数据可用性引擎”,使用该平安数据空间以及诓骗证实或ZK-SNARK来实现高吞吐量平安生意处置功效是Layer Rollup的事情。 然则,完全有可能确立这样一个内置系统来添加“本机”高吞吐量执行。

分片系统的要害特征是什么?权衡是什么?

分片的主要目的是尽可能地复制传统(非分片)区块链最主要的平安属性,而无需每个节点亲自验证每笔生意。

分片正在异常靠近到来。 在传统的区块链中:

  • 无效的区块无法通过,由于验证节点会注重到它们无效并忽略它们。

  • 不能用的区块无法通过,由于验证节点无法下载它们并忽略它们。

在具有高级平安功效的分片区块链中:

  • 无效的区块无法通过,由于:

  1. 诓骗证实会迅速将其捕捉,并见告整个网络该区块的不准确性,并严重责罚确立者,或者

  2. ZK-SNARK证实是准确性,而且您不能为无效区块制作有用的ZK-SNARK。

  • 不能用的区块无法通过,由于:

  1. 若是只有不到50%的数据区块可用,则险些可以一定每个客户端都市举行至少一次数据可用性样本检查,从而导致客户端拒绝该数据块,

  2. 若是至少有50%的区块数据可用,那么现实上整个区块都是可用的,由于仅需一个忠实节点即可重修其余区块。

没有分片的传统高TPS链无法提供这些保证。 多链生态系统无法阻止攻击者选择一条链举行攻击并容易接受的问题(这些链可以共享平安性,然则若是做得欠好,它将酿成事实上的传统高TPS链 ,这些都是瑕玷,而且若是做得好,将只是上述分片手艺的一种更庞大的实现)。

侧链高度依赖于实现,然则它们通常容易面临传统高TPS链的弱点(这是若是它们共享矿工/验证者)或多链生态系统的弱点(即,若是它们不共享矿工/验证者) )。 分片链阻止了这些问题。

然则,分片系统中有一些隐患。尤其:

  • 仅依赖于委员会的分片链很容易受到顺应性对手的攻击,而且问责制也较弱。也就是说,若是对手能够实时入侵(或关闭)他们选择的任何节点聚集,那么他们只需要攻击少量节点即可损坏一个委员会。此外,若是对手(无论是顺应性对手照样占质押总数的50%的攻击者)确实损坏了一个委员会,则只能公然确认他们的少数节点(该委员会中的节点)介入这个攻击,因此只有少量质押会受四处罚。这是为什么数据可用性采样与诓骗证实或ZK-SNARK一起成为随机采样手艺的主要弥补的另一个要害缘故原由。

  • 仅当有足够数目的在线客户端整体网络足够的数据可用性采样请求时,数据可用性采样才是平安的,这些响应险些总是重叠以组成至少50%区块。在实践中,这意味着必须有几百个客户端在线(而且此数目越大,系统容量与单个节点容量的比率就越高)。这是一个few-to-N信托模子‌——通常异常值得信托,固然,它不如非分片链中的节点具有可用性的N-of-N信托那么壮大。

  • 若是分片链依赖于诓骗证实,那么它依赖于时序假设;若是网络太慢,则在诓骗证显著示它是错误的之前,节点可能会接受某一个区块具有最终性。幸运的是,若是您遵照严酷的规则,一旦发现了无效性,就会还原所有无效块,此阈值是用户设置的参数:每个用户都选择守候到达最终状态所需的时间,若是他们不想守候足够长的时间,则会遭受损失,但更郑重的用户是平安的。纵然云云,这仍在削弱用户体验。使用ZK-SNARK验证有用性可以解决此问题。

  • 需要转达大量的原始数据,从而增添了极端网络条件下发生故障的风险。与大量数据相比,少量数据更容易发送(若是壮大的政府试图审查链,也更容易平安隐藏)。若是区块链浏览器想要保留整个链,则需要存储更多数据。

  • 分片的区块链依赖于分片的点对点网络,而且每个单独的p2p“子网”由于具有较少的节点而更容易受到攻击。用于数据可用性采样的子网模子‌可以缓解这种情形,由于子网之间存在一些冗余,但仍然存在风险。

这些是有用的关注点,只管在我们看来,通过允许更多应用程序在链上运行而不是通过集中式第2层服务来实现的用户级别集中化的削减,远远跨越了它们。也就是说,这些问题,稀奇是最后两个问题,现实上是对增添分片链的吞吐量跨越特定点的真正限制。二次分片的二次性是有限度的。

顺便说一句,若是吞吐量过高,则分片区块链的平安风险将日益增大,这也是很洪水平上放弃了扩展至超二次分片的起劲的主要缘故原由。似乎保持二次分片只是二次真的是快乐的前言。

为什么中央化生产和分片验证?

经常提出的一种替换分片的方式是,使用类似于中央化高TPS链的结构,除了它在顶部使用数据可用性采样和分片以验证有用性和可用性之外。

现在,中央化高TPS链在这方面有所改善,但仍比分片系统弱得多。 这是出于以下几个缘故原由:

  1. 在高TPS链中,要检测区块生产者的审查要困忧伤多。 审查检查需要(i)能够查看每笔生意并验证没有显著值得加入的生意,而该生意莫名其妙地无法进入,或者(ii)在区块生产者中具有N分之一的信托模子,而且在中央化高TPS链中,(i)是不能能的,而(ii)则更难题,由于节点数少,甚至1of N信托模子都更容易被损坏,而且 若是该链的区块时间对于DAS来说太快(就像大多数中央化高TPS链那样),则很难证实节点的区块不会仅仅由于它们的宣布速率太慢而被拒绝。

  2. 若是大多数区块生产者和生态系统成员试图强制执行不受迎接的协议更改,则用户的客户一定会检测到它,然则社区反抗和分叉的难度要大得多,由于他们需要旋转一套新的昂贵的高吞吐量节点,以维持遵守旧规则的链条。

  3. 中央化基础架构更容易受到外部介入者的审查。区块生产节点的高吞吐量使其异常易于检测,而且更易于关闭。审查专用的高性能盘算在政治上和后勤上比在单个用户的条记本电脑上举行审查要容易得多。

  4. 高性能盘算向中央化云服务转移的压力更大,增添了整个链将在1-3家公司的云服务中运行的风险,因此,由于许多区块生产者同时失败,导致链溃逃的风险更大。那些在自己的硬件上运行的验证者的分片链不会那么容易受到这种攻击。

适当分片的系统最好作为基础层。对于一个分片的基础层,您可以将其构建为Rollup,始终能够确立一其中央化生产系统(例如,您想要一个用于DeFi的具有同步可组合性的高吞吐量域名‌)。然则,若是您有一个依赖于中央化区块生产的基础层,则不能在上面构建一个加倍去中央化的Layer2。

本文作者:以太坊首创人Vitalik Buterin