此处特别感谢 Dankrad Feist 和 Aditya Asgaonkar 的校正作业。

分片是以太坊可扩展性的未来,是让以太坊生态体系完成每秒数千笔买卖的要害,这样大部分人才能以担负得起运用本钱,成为该以太坊的用户。可是,在以太坊生态体系中,分片是简略遭到误解的概念之一,在更广泛的区块链生态体系中也是如此。它指的是一组十分特定的概念,这些概念都具有自己的特质,但人们常常将前者与一些技能混为一谈,后者的安全特性更弱,且与前者不同。本篇文章的意图是介绍分片的特定特点,并与其他非分片技能加以区分,且为了完成这些特点,分片体系需求做出哪些献身。

Vitalik:从技术角度揭秘“分片”的优势

图注:以太坊分片体系,原图来自Hsiao-wei Wang,由Quantstamp规划

扩展性不或许三角

要介绍分片,最佳办法是从描述一个问题开端,即扩展性不或许三角,这个问题促成了该处理计划的诞生。

Vitalik:从技术角度揭秘“分片”的优势

依据扩展性不或许三角,一个区块链想要完成三个特性,若运用简略技能手段,只能完成三个特性中的两个。这三个特性如下:

可扩展性:该区块链可以处理和验证的买卖比单个一般节点更多,例如一台消费级笔记本电脑。

去中心化该区块链的运转可以不依赖于由大型中心化参加者组成的小群体。这一般理解为即便是大多数节点都是诚笃的,也不应该信赖不能用消费级笔记本电脑接入的节点群。

安全性:

该区块链可以抵挡很多试图进犯的节点,抱负状况下,要抵挡50%的节点,一般状况下,要抵挡超越25%的节点,但只是抵挡5%的节点不可以确保安全性。

以下是三种不同类型的“简略处理计划”,可是这些处理计划只能完成三个特性中的两个。

传统区块链包括比特币、完成PoS/分片之前的以太坊、莱特币及其他相似区块链。这些区块链依赖于每个参加者运转全节点来验证每笔买卖,因而确保了去中心化和安全性,但没有完成扩展性。

高TPS区块链包括DPoS链,但也包括许多其他区块链。这种区块链依赖于少量节点坚持一致,数量一般介于10-100个,用户必须信赖大多数节点。依据上文的界说,该处理计划完成了扩展性和安全性,但没有完成去中心化。

多链生态体系一般指让区块链“向外扩展”,即让各种运用程序在不同的链上部署,并运用跨链通信协议进行通信。这完成了去中心化和扩展性,但并不安全,由于进犯者只需求操控其间一个链的大多数一致节点 (一般数量小于整个生态体系1%的节点数) 就可以形成损坏,还或许引起连锁反应,对在其他链中的运用程序形成巨大危害。

分片技能可以一起完成上文提及的三个特性。一个分片型区块链具有以下特征:

可拓展性:其处理的买卖量远高于单一节点。

去中心化:可以彻底根据消费级笔记本电脑运转,无需依赖超级节点等。

安全性:进犯者无法经过少量资源对体系发动部分进犯,只能测验操控整个体系,以进行进犯。

本文接下来的部分将评论分片型区块链怎么完成这些优势。

随机抽样分片

最简略理解的分片版本是经过随机抽样进行分片。与以太坊生态体系中构建的分片办法比较,随机抽样分片的信赖特点更弱,但以太坊分片运用的技能更简略。

下文论述了分片的中心思维。假定有一个PoS区块链,其验证者数量十分多,例如10000位验证者,而且需求验证区块的数量十分巨大,比如100个区块。鄙人一组区块产生之前,没有一台核算机可以验证这100个区块。

为了处理这个问题,咱们需求以随机的办法,分配验证作业。咱们对验证者名单进行随机混洗,然后选取名单中前100个验证者来验证第一个区块,第二组100位验证者来验证第二个区块,以此类推。随机抽样分片经过这种办法来验证区块或履行其他任务,这些随机选出的验证者称为委员会 (committee)

Vitalik:从技术角度揭秘“分片”的优势

验证者验证一个区块后,会经过发布一个签名来证明。其他一切节点都只需求验证10000个签名,而不是验证100个完好区块,这样会减少很多作业量,特别是运用了BLS签名聚合技能之后。每个区块的广播无需经过同一个P2P网络,而是经过不同子网,节点只需加入自己担任或其他想要验证的区块相对应的子网。

想象一下,假如每个节点的算力添加2倍,会产生什么作用。关于每个节点,现在可以安全验证签名的数量添加了2倍,那么可以减低最小质押数量,让验证者的数量添加2倍,这样就可以产生200个委员会,而不是100个。所以,每个时隙的区块验证数量可以到达200个,而不是100个。此外,每个区块容量可以扩展2倍。因而,总体区块链容量会添加4倍。

咱们可以经过数学术语来解释其背面的原理。依据大O符号 (Big O notation),咱们用 “O(C)” 表明单个节点的算力。O(C) 代表传统区块链可以处理的区块巨细。如上所述,分片链可以并行处理巨细为 O(C) 的区块 (请记住,每个节点来验证每个区块的间接本钱为O(1),由于每个节点只需求验证固定数量的签名)。因而,每个区块容量为 O(C),分片链总容量是 O(C^2)。这便是为什么这种类型的分片称为二次方分片 (quadratic sharding),根据二次方分片的要害作用,咱们以为从长远来看,分片是扩展区块链的最佳办法。

人们常常会问这样一个问题:“随机组成100个委员会与分裂为100条独立区块链有什么不同?”

其不同之处首要在于以下两个方面:

1. 随机抽样能防止进犯者将算力集中于某个分片中。在一个100条区块链组成的多链生态体系中,进犯者只需具有总质押量的0.5%就可以形成损坏,意味着可以针对其间一个区块链建议51%进犯。在一个分片链中,进犯者必须具有总质押量的30-40%,才能到达相同方针,换言之,该链的安全性能同享给分片。当然,进犯者可以等到命运好的时分,偶尔在单个分片中获得51%的算力,尽管具有的质押量不到50%,但关于质押量远远低于51%的进犯者来说,建议进犯的难度呈指数型上升。假如质押量少于30%,几乎不或许建议进犯。

2. 若有一个分片呈现了坏块,整个链会重组,以防止承受该区块,这称为严密耦合性。依据社会契约,即便单个分片中呈现了一个坏块,也不能被主链承受,一旦发现坏块,分片会被回绝,本文后边章节将介绍一些从技能上强制履行社会契约的办法。有了这一机制,从运用程序的角度来看,分片链享有完美安全性,合约A可以信赖合约B,即便由于区块链遭到进犯,合约B呈现毛病,而且回滚了整个历史,其间也包括合约A中由于合约B呈现问题而遭到影响的买卖。

这两种差异确保分片为运用创立了一个环境,该环境保留了单链条件下的要害安全特点,而多链生态体系则无法完成这一点。

经过更好的安全模型改善分片

我彻底同意比特币社区中的一种遍及看法,那便是像比特币(或以太坊)等区块链并不彻底依赖“诚笃的大多数”假定。假如对这些区块链展开51%进犯,则进犯者可以做一些具有损坏力的坏事,例如回滚或查看买卖,但不能刺进无效的买卖。而且即便他这么做了,运转常规节点的用户也可以轻松检测到这种行为,因而,社区若希望经过分叉来剥夺进犯者的力气,以协调的办法抵挡进犯,可以敏捷采纳举动。

关于更为中心化的高TPS链,它们的首要缺陷是缺少这种额外安全性。这种区块链没有,也不或许具有让一般用户运转节点的文化,因而首要节点和生态体系参加者可以更轻松地聚在一起,强制实行一项协议更改,即便社区十分不喜欢这个改动。更糟糕的是,在默许状况下,用户的节点会承受这项改动。一段时刻后,用户会察觉到,但等到那时,这个更改现已成为既成事实,意味着其间首要的协调担负,即回绝更改,将由用户承当,而且不得不做出苦楚的决议,回滚一天或更多的买卖记录,而其他用户都以为这些记录现已得到了终究确认。

抱负状况下,咱们希望采用一种分片办法,其验证办法能防止上文提到的51%信赖假定,并保留传统区块链的高安全性,这种安全性只要在经过彻底验证的状况下才能完成。而这正是咱们曩昔几年的大部分研究成果。

可扩展核算验证

咱们可以将可以抵挡51%进犯的可扩展验证问题分为两种状况:

验证核算:查看某些核算是否正确完成,并假定你具有完成该核算的一切输入数据

验证数据的可用性:查看核算自身输入的数据是否以某种办法存储,在必要状况下以供下载;履行此查看时,无需实践下载一切输入数据,由于数据或许太大,无法每个区块都进行下载。

区块链中的区块验证一起触及核算和数据可用性查看,即你需求坚信区块中的买卖有用,而且区块中的新状态根哈希是履行这些买卖的正确履行成果,可是你还需求坚信该区块中有满足多的数据实践得到发布,这样下载数据的用户可以核算状态,持续处理区块。第二点关系到一个十分奇妙但重要的概念,即数据可用性问题 (data availability problem)。下文会对这个问题进行讨论。

可扩展核算验证相对简略完成,其间会运用两类技能:诈骗证明及ZK-SNARKs

Vitalik:从技术角度揭秘“分片”的优势

诈骗证明可以验证核算的一起,确保扩展性

以下是对两类技能的简略介绍:

诈骗证明 (fraud proof) 是一个承受核算成果的体系,你可以要求有质押存款的人签署以下办法的音讯:“我证明,假如运用输入X进行核算C,则会得到输出Y”。你会默许信赖该音讯,但其他有质押存款的人会有应战核算成果的机会,他们可以签名一条音讯,称“我不同意,输出成果应该为Z,而不是Y。”仅建议应战后,一切节点才会进行运算。这两方中任何一方出错都会失掉确保金,而且一切根据错误核算的运算都会从头进行。

ZK-SNARKs 是一种密码学证明办法,可以直接验证“输入X后,履行核算C,会输出Y”。在密码学层面,该验证机制是“牢靠”的,由于假如输入X后,进行核算C,成果不等于Y,则无法经过核算生成有用性证明。即便运转核算C自身花费很多时刻,该证明也可以很快得到验证。有关ZK-SNARK的更多数理解释,请参阅此文章。

根据诈骗证明的核算之所以具有扩展性,是由于在“一般状况下”,你不用运转杂乱核算,只需验证单个签名。在特殊状况下,应战呈现后,你必须在链上验证核算,可是特殊状况很少产生,由于触发这种状况的本钱十分贵重,由于最初的声明者或应战者之一会失掉很多确保金。ZK-SNARKs概念更简略,它们只是经过本钱更低的证明进行验证,然后代替核算,但其背面的数学原理却要杂乱得多。

有一种半可扩展体系,它能以可扩展的办法验证核算,但需求每个节点验证一切数据。该体系若能经过一系列紧缩技能,经过运算替换大部分数据,效率便可大大提高。这便是Rollup所做的事。

对数据可用性进行可扩展性验证难度更高

诈骗证明不能用于验证数据可用性。运算的诈骗证明根据这样一种条件,即原始声明一旦提交,运算的输入数据要在链上发布,因而,假如有人建议应战,该应战的履行与原始履行的“环境”彻底一致。关于数据可用性查看,上述操作无法完成,由于假如要在链上发布,需求查看的数据量太多。因而,针对数据可用性,怎么生成诈骗证明计划变成了一个要害问题,有人可以声称“数据X可用”,但不在链上发布,等候应战者呈现,建议应战后,再向整个网络发布该数据,使得网络中的其他参加者以为应战者是不正确的

下图的“渔夫窘境”可以很好阐释其间道理:

Vitalik:从技术角度揭秘“分片”的优势

“渔夫窘境”的中心理念触及到两种状况,一种状况是V1是歹意发布者,但V2是一个诚笃应战者,而另一种状况是V1是诚笃发布者,而V2是歹意应战者。两种状况关于当时未测验下载该特定数据的任何人来说都没有区别。当然,在可扩展的去中心化区块链中,每个个人节点只希望下载一小部分数据,因而只要一小部分节点可以了解不合之外的一切状况。

由于不或许辨识出哪一方是正确的,所以也无法为数据可用性生成有用的诈骗证明处理计划。

人们常常问道:“假如某些数据不可用怎么办?ZK-SNARK可以确保一切数据的有用性,但这还不够吗?”

不幸的是,只是确保数据有用性还不足以坚持区块链正常运转。原因是假如区块链能经过验证,但一切数据均不可用,则用户将无法更新数据,生成证明验证未来的区块。进犯者假如能生成一个区块,该区块尽管可以经过验证,但数据不可用,可以有用阻止区块链运转。有的进犯者还可以不上传特定用户的帐户数据,直到该用户支付赎金停止,因而这不只是是一个活性问题。

有一些强有力的信息论观念以为这个问题是根本性问题,没有优良处理计划 (例如密码学累加器的运用)。有关详细信息,请拜见本文。

那么,怎么在不下载的状况下,查看1 MB数据是否可用?这听起来无法完成!

要害的处理计划是一种称为数据可用性采样 (data availability sampling) 的技能。该技能的作业办法如下:

1. 经过纠删码东西,将具有N段的数据分成为2N段的数据,因而只需任意N个数据段都可以康复整个数据。

2.用户假如要查看可用性,无需下载悉数数据,而是随机挑选区块中的方位 (常数,例如30),而且仅当在区块中找到一切选定方位的数据时,才承受这个区块。

Vitalik:从技术角度揭秘“分片”的优势

经过纠删码,咱们可以将问题从“查看100%数据可用性” (即确保每条数据均可用) 转变为“查看50%数据可用性” (即至少一半数据可用)。随机抽样则处理了50%可用性问题。假如可用数据量少于50%,那么这两种查看手段中至少一个不可行,而且假如至少50%的数据可用,那么,尽管某些节点或许无法得知一个区块的可用性,但只需求一个诚笃节点运转纠删码重构程序,就能康复剩下50%的区块数据。因而,为了查看1 MB区块的可用性,你无需下载1 MB数据,只需下载几KB。这样每个区块都能承受数据可用性查看。有关怎么运用P2P子网有用进行数据查看,请拜见这篇文章

经过ZK-SNARK证明,数据纠删码的正确性也可以得到验证,然后使用默克尔树的分支来验证各个数据块。另一种验证办法是运用多项式承诺 (polynomial commitment),例如 Kate commitments (KZG承诺),本质上,该承诺经过一个简略组件进行纠删编码,证明每个要素和正确性验证,这便是以太坊分片所运用的技能。

总结:怎么确保一切数据的正确性?

假定有100个区块,而且你不想依赖委员会有用地验证一切区块的正确性。为了完成这个方针,咱们需求进行以下办法:

每个客户端在每个区块上进行数据可用性采样,以验证每个区块中的数据是否可用,一起需求下载每个区块几KB的数据,即便区块的整体巨细为MB或更大。仅在一切数据可用性应战得到正确回应后,客户点才会承受区块。

数据可用性得到验证后,那么验证其正确性将变得愈加简略。验证正确性要经过以下两种技能:

  • 咱们可以运用诈骗证明,一些质押了确保金的参加者可以供给签名,证明每个区块的正确性。其他应战者或许是渔夫节点会进行随机查看,并测验完好处理整个区块。由于数据可用性现已经过查看,所以其他节点始终可以下载数据,并对任何特定区块进彻底处理。假如发现无效区块,节点会发布一个一切人都可以验证的应战。假如该区块被证明是坏块,则根据这一区块的一切区块都需求从头经过运算。

  • 咱们可以运用 ZK-SNARK 技能。这样每个区块的正确性都能得到这种技能的验证。

在以上两种状况中,无论区块有多大,每个客户端仅需求对区块进行少量验证作业。关于诈骗证明,区块偶尔需求在链上得到充分验证,但这种状况很少产生,由于就算建议一个应战,本钱也十分高昂。

以上便是全文的总结!就以太坊分片而言,短期计划是让分片中的区块只包括数据。也便是说,这些分片的作用纯粹是“数据可用性引擎”,Layer2 rollup 的作业则是运用安全的数据空间,另外还会使用诈骗证明或 ZK-SNARK 技能,完成高买卖吞吐量,一起坚持安全性。可是,咱们还可以创立一个内部体系,“原地”完成高吞吐履行,这是彻底有或许完成的。

分片体系的要害特性是什么?有哪些权衡?

分片的首要方针是尽或许地承继传统非分片区块链最重要的安全特点,一起无需每个节点验证每笔买卖。

分片基本可以满意这些要求。以下是传统区块链的特征:

无效区块无法添加到区块链中,由于验证节点会检测到该区块是无效的,并疏忽该区块。

数据不可用的区块无法添加到区块链中,由于验证节点无法下载数据,并挑选疏忽。

以下是强安全性的分片区块链特征:

无效区块无法添加到区块链中,原因如下:

  • 诈骗证明会敏捷检测到该区块,并告知整个网络其为不正确区块,并重罚创立者。

  • 或许经过ZK-SNARK验证其正确性,由于无法为无效区块生成有用ZK-SNARK证明。

数据不可用的区块无法添加到区块链中,原因如下:

  • 假如区块可用数据量只要不到50%,几乎可以必定的是,每个客户端至少有一次数据可用性抽样查看会失利,导致客户端回绝该区块,

  • 假如至少有50%的区块数据可用,那么实践上整个区块数据都是可用的,由于仅需一个诚笃节点即可康复其他数据。

传统高TPS链由于没有分片,无法完成上述特征。而多链体系面临的问题在于,进犯者假如挑选一条链进行进犯,就可以轻易获得操控,体系中的链也可以同享安全性,可是假如安全性低,那将与传统高TPS链没有区别,还会承继传统区块链的一切缺陷,若安全性较高,同享安全性只是上述分片技能的一种更杂乱的完成。

侧链 (sidechain) 高度依赖于完成办法,假如它们同享矿工或验证者,一般它们简略面临传统高TPS链的缺陷;假如它们不同享矿工或验证者,也会面临多链生态体系的缺陷。分片链防止了这些问题。

可是,分片体系也有一些隐患。尤其是在以下几个方面:

若遭遇适应性敌手进犯,仅依赖于委员会的分片链难以敷衍,而且较难追责。也便是说,假如进犯者可以实时侵略或挑选关闭任何节点调集,那么只需求进犯少量节点即可损坏一个委员会。此外,进犯者无论是应变能力强,仍是具有质押总数的50%,假如损坏了一个委员会,整个网络只能确认少量参加进犯的节点,即该委员会中的节点,成果处罚金额只占少量质押。这又是另一个要害原因,解释为什么数据可用性采样要与诈骗证明或ZK-SNARK结合,成为随机采样技能的重要补充。

仅在线客户端数量满足多,能生成满足多数据可用性采样请求时,这些重复响应总是构成至少50%的区块数据。在实践中,这意味着必须有几百个客户端在线,而且此数量越大,体系容量与单个节点容量的比率就越高。这是一个few-of-N信赖模型——一般十分值得信赖,当然,它不如非分片链节点在数据可用性方面的0-of-N信赖形式那么稳健。

假如分片链依赖于诈骗证明,那么它要根据时序假定,即假如网络太慢,则在诈骗证明显示数据有误之前,节点或许现已敲定了某一个区块。走运的是,假如你严格遵从规矩,一旦发现了无效区块,就会回滚一切无效区块,该时段参数由用户设置,每个用户都能设置确认区块前的等候时刻,假如他们不想等候太久或许会遭受损失,但更谨慎的用户也愈加安全。即便如此,这一机制会削弱用户体验。运用ZK-SNARK验证有用性可以处理此问题。

需求传输的原始数据量大得多,添加了极端网络条件下产生毛病的危险。与很多数据比较,少量数据更简略传输,假如强壮的政府试图查看区块链,也更简略安全躲藏。若区块链浏览器想要坚持整个链的信息,则需求存储更多数据。

分片链依赖于分片式的P2P网络,而且每个单独P2P“子网”由于节点较少,更简略遭到进犯。由于子网之间存在一些冗余,数据可用性采样的子网模型可以缓解这种状况,但其间仍然存在危险。

这些是数据验证需求关注的问题,尽管在咱们看来,让更多运用程序在链上运转,而不是经过中心化layer 2服务,减少用户层的中心化,会比上述方面更值得注意。也便是说,实践上这些问题,特别是最终两个问题,会对添加分片链吞吐量形成真实限制,使其无法超越特定规划。二次方分片 (quadratic sharding) 只能完成有限二次方性。

顺便说一句,假如吞吐量过高,分片链的安全危险将日益增大,很大程度上,这也是放弃扩展至超二次分片的首要原因。使二次方分片坚持其有限二次方性似乎是合适的中间值。

区块出产中心化,而验证分片化是否可行?

人们常常提出一种替代分片的办法,那便是运用相似于中心化高TPS链的结构,除此之外,使用数据可用性采样和分片以验证数据有用性和可用性。

这种计划可以改善既有的中心化高tps区块链,但仍远没有分片体系强壮。其间一些原因如下:

1. 在高TPS链中,更难监测到区块出产者的查看行为。

监测查看行为需求满意以下任一:(i) 可以看到每笔买卖,而且验证没有合理买卖不可思议未进入,或许(ii)在区块出产者中运用1-of-N信赖模型,并验证没有区块无法上链。在中心化高TPS链中,第一点不或许完成,而完成第二点更困难,由于节点数少,乃至1-of-N信赖模型都更简略被损坏,而且 假如该链的区块时刻关于DAS (数据可用性采样) 来说太快 (就像大多数中心化高TPS链那样),则很难证明节点的区块不会只是由于它们的发布速度太慢而被回绝。

2. 假如大多数区块出产者和生态体系成员试图强制履行一项协议更改,尽管这项更改不受欢迎,用户的客户端必定会检测到更改,可是关于社区,回绝更改、进行分叉的难度要大得多,由于需求运转本钱高昂的新的高吞吐量节点,坚持根据旧规矩的区块链。

3. 在中心化根底设施中,外部进犯者更简略施行查看。区块出产节点买卖吞吐量高,十分易被检测到,关停这些节点也很简略。查看专用的高性能核算在政治上和后勤上比在单个用户的笔记本电脑上进行查看要简略得多。改:与追寻个人用户的笔记本电脑比较,对专用的高性能核算进行查看在逻辑和实践中都愈加简略。

4. 高性能核算向中心化云服务搬运会面临更大压力,添加了危险,由于整个链将在1-3家公司的云服务中运转,假如许多区块出产者一起呈现毛病,会增大区块链崩溃的危险。验证节点都在个人硬件上运转的分片链不会那么简略遭到这种进犯。

体系恰当分片化后,能愈加合适作为根底层。根据一个分片化的根底层,你始终可以经过构建Rollup的办法创立一个中心化的产品体系 (例如用于DeFi的具有同步可组合性的高吞吐量领域)。可是,假如根底层依赖于中心化区块出产,则无法根据此构建一个愈加去中心化的Layer2。

视野开拓

……工联作为抵抗资本进攻的中心,行动得颇有成效。它们遭到失败,部分是由于不正确地使用自己的力量。然而一般说来,它们遭到失败则是因为它们只限于进行游击式的斗争以反对现存制度所产生的结果,而不同时力求改变这个制度,不运用自己有组织的力量作为杠杆来最终解放工人阶级,也就是最终消灭雇佣劳动制度。-《工资、价格和利润》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注