解析平行链:实现过程、技术难点、未来发展方向等

  • 平行链是怎样从研评论文,变成代码完成的?

  • 平行线程、嵌套中继链等,未来将怎样开展?

  • 平行链可扩展性的极限在哪里?

在 2021 Polkadot Decoded 的圆桌评论 “解析平行链:谁做了平行链?平行链是什么?为什么要有平行链?” 中,研讨员 Jeff、代码完成者 Rob 和主持人 Joe 一同评论了一些关于平行链开展很重要的问题。PolkaWorld 在本文中总结了该圆桌主要内容。

Jeff:Jeff Burdges,W3F 密码学研讨员,做了许多平行链开发方面的研讨

Rob:Robert Habermeier,波卡联合创始人/Parity 中心开发者,带领完成团队让平行链能够在实践中运转起来

Joe:Joe Petrowski,W3F 技能集成负责人,本场圆桌主持人

解析平行链:实现过程、技术难点、未来发展方向等

Joe:大约一年半曾经,Jeff 带领着一个团队宣布了一篇关于可用性和有效性的论文。在完成时,这个方案现已改动了许多。Jeff,你能够简略谈一谈这篇论文的主意是怎样发生的吗?

Jeff:咱们从以太坊生态那里获得了一些主意,比方运用纠删码的主意。可是围绕这些主意的一些具体的东西,比方怎样优化分片,都没有正式确定下来。

在 2019 年底,咱们决议要把这些主意正式化,提出更精确的办法。一般来说,咱们规划复杂协议的方法是,我会写下一切或许的规划选项,然后用排除法。

在 2020 年头,我写下了这个规划,并且和大家评论,咱们注意到了一些问题,我想出了一个叫 “Two-phase inclusion” 的技巧。也便是说在真实开端之前,平行链中继链有必要知道一个区块,验证人有必要说这个区块是有效的。

之后咱们开端做纠删码,然后开端做真实的查看它的作业。这样做的好处之一是,由于有人在这个进程中投入了许多切身利益,然后会限制其能够尝试的次数。然后做到假如你要进犯它,那么你也会毁掉你自己。它不是加密学安全性,而是分布式体系安全性,可是是合理的。

Joe:关于不熟悉分片的人来说刚刚说的或许有点笼统。其实便是,咱们有一千个验证人,当你想要包含这些平行链区块中的一个时,你其实需要把数据块发给一切验证人,涉及到费用、复杂性、网络、存储等,让一切人都得处理这个音讯,所以你想要真实确保这些音讯是有效音讯,并且是有理由的。

Jeff:是的。纠删码其实挺老了,有不同类型的纠删码。不过一般来说当假如你用密码学的话,一般是运用一些依据拉格朗日插值法或许里德-所罗门码之类的。原因是它的阈值很陡峭,所以咱们能够从任何三分之一的碎片,来恢复全貌。

那咱们怎样做呢?咱们有平行链区块,叫做候选区块,咱们有 3f+1 个验证人。那么咱们把这些东西纠删码为 3f+1 个碎片,你只要有了任何的 f+1 个碎片,就能够重构原始区块。也便是说只要比 1/3 多一点点的碎片,你就能够重构原始区块。

这是一种很陈旧的数学办法,实践上是让咱们的速度更快。依据咱们现在的验证人数量,咱们有必要找到一些比较新的论文,来进行优化。这便是咱们今年做的事 —— 去大大优化纠删码。咱们让它的运转速度快了 400 倍,渐进地看其实更快。从 O(N²) 算法到了 O(log n) 算法。这让核算变得没有那么的有负担。之后咱们或许还会做得更好。这是咱们最近的一个突破,当然了假如咱们能在更早就处理的话就好了哈哈哈。

Joe:把这些研讨变成代码,其实也是很大的应战。咱们去年年中上线了 Rococo 测验网,Rob 能够谈谈这个协议的完成前期遇到的一些应战吗?

Rob:我记住第一次跟平行链相关的代码提交是在 2018 年下半年,2019 年中有了咱们所说的 V0 协议的初稿,在最初的几年中,咱们更多地投入在 BABE、GRANDPA 一致上,也便是出块和区块确认方面,那时分其实还没有真的深入研讨平行链的东西,由于平行链的部分更复杂,需要更多的开发时刻。

从 2019 年中后期到 2020 年头左右,工作有了很大的开展,就像刚刚 Jeff 提到的,研讨团队开端真实把协议确定下来了,像是可用性确保了平行链区块仍然存在,以便其他人能够查看它们,来进行额外的查看,然后确保安全性。

我觉得完成一切的这些研讨其实非常困难。假如你在构建任何类型的体系,那么你每向体系添加一点额外的复杂性,那么创立该体系所需的时刻就会指数级添加。这个规则也同样适用于代码,由于一旦你抵达了一定的代码量,其实真的很难再添加更多的东西,由于新的东西一定会扰乱、损坏之前做好的一些东西。

所以说有一个好的规划和规划是很重要的,在咱们迭代协议的时分,咱们肯定会来来回回做一些研讨。可是 2020 年的时分,咱们把精力放在了《完成者指南》上,在那里面进行迭代,而不是在代码里。我能够和 Jeff 和 Al(Alistair) 通话,来评论论文草案里的内容,然后写一个页面来阐明 “咱们会这样写代码”,而不是直接就去写代码,咱们用这种办法节省了几周的时刻,之后我能够把这些写代码的作业分配给许多个开发者。

所以我觉得在建设这样的体系的时分,有一个很好的计划很重要。还有便是有一个模块化的体系,这样的话你能够添加一个独立部分的代码,你能够把这些代码整理成小的包,而不是一整个体系,由于一个人很难搞定一整个庞杂的体系。

Joe:提到现在的阶段。现在 Kusama 现已上线了 Shell 空白链,Rococo 上现已有了 12 条平行链,可是 Kusama 的出块时刻在 12 秒左右,咱们正在处理这个问题。为了将出块时刻提高到 6 秒,并且在 Kusama 上上线更多的链,短期内咱们面对的应战是什么?

Rob:我觉得这一切本质上说都归结到网络。Kusama 有 900 个验证人,这些验证人都是一些拥有 KSM 的人,在全球部署了节点来同步链。这件事很酷,这或许是全球最大的验证人集之一。

可是当你向这个网络添加一些复杂性,比方添加平行链的时分,肯定就会添加许多负载。其实咱们之前也在 Rococo 上用相同的参数测验过,可是在 Kusama 上的作用却完全不同,由于在 Kusama 上验证人节点在全球各地运转,所以最主要的应战便是让网络代码尽或许平稳地运转。咱们写网络代码的时分,做了许多反作弊的机制,这种东西便是,假如没人捣乱的时分你都注意不到它的存在,可是假如有人作恶,你就会发现这些防御机制非常重要。

Jeff:没错。当咱们添加越来越多的平行链的时分,会呈现更多的核算负载,咱们会看看到时分会怎样开展,咱们会怎样在这个进程中生长。其实调查这些操作会怎样影响网络,也是一个渐进的学习进程。

Joe:这便是 Kusama 存在的含义,不是吗?

Rob:没错。随着平行链变多,验证人的负载肯定会变多的。由于验证人要验证一个区块,并且要把自己的币抵押在区块背后,其他的一些验证人就会自我选择去做查看。平行链越多,你要做的核算就会越多,虽然核算量应该比平行链添加的数量慢,这也是为什么这个网络是可扩展的,而不是像其他一些区块链相同不可扩展。可是作为验证人,你或许还是需要在每秒内验证几十个区块。

Joe:咱们聊点更实践的吧,聊下接下来一年波卡和 Kusama 的计划吧。咱们有一个平行线程的规划,其完成在在 UI 里面现已能看到了,由于链在晋级为平行链之前,都是以平行线程的方法注册的。可是之后咱们会让平行线程更加的实用,你们能够谈谈平行线程的规划、完成,为了完成它还剩下哪些作业待完成吗?

Rob:平行线程跟平行链差不多,主要差异在于它被调度的方法不同。咱们有一个调度程序,假如你是平行链,那么每个区块都会被安排到;假如你是平行线程,那么你需要进行拍卖,平行线程收集人能够相互竞争,来获得写入区块的的权利。这会带来收集方面的网络改动,当你是平行线程出块人的时分,你需要让验证人知道你有区块要提交。

所以总的来说应战有三点:调度程序、拍卖、网络方面的改动。

Jeff:其实当时做平行线程有种规划,可是最后咱们选择了有拍卖的这个。由于这个规划能够更好地避免作弊,可是关于平行线程来说,假如它们出于某些原因无法提交区块的话,它们或许会丢失资源。所以咱们还得再看看一些经济方面的问题。

Joe:咱们说过会把一些中心功用从中继链中释放出来,下放到平行链中,来进一步完成可扩展性,和完成嵌套中继链(Nested relaychain)的主意。你们想谈谈为什么要这样做吗?

Jeff:其实相比 “嵌套中继链” 的说法,我更愿意称其为 “中继链分片”,由于嵌套中继链听起来像是某一条链是主导地位。

从某种含义上说,中继链的分片比咱们现在现已做到的(平行链分片)还要简略一些。不过我觉得或许会在超过 3000 个验证人的时分来做这个事,我想告诉大家现在还不用急着去完成它。在这之前,咱们期望能先让中继链的功用尽或许简略,我觉得这样关于开发者来说作业量是最小的。

Rob:现在来看,Staking 和推举模块和一些管理功用其实是比较重的,会给中继链带来较大的负载。一切中继链上发生的事,中继链验证人都需要去履行。而依据规划,发生在平行链上的工作只需要验证人的子集来处理。所以这便是可扩展性的来源,把每个验证人机器都需要履行的事变得尽或许少。

我觉得安全地去提炼出 Staking 和管理之类的东西其实挺难的。由于波卡有一些毛病模式,比方一个机制是在进行争议剖析的时分的时分,链或许会被阻止出块。你或许无法进行 Slash 交易,验证人集无法更新交易等。这些都是很扎手的应战。

不过这个其实也不是很紧急。在这之前,咱们应该会优化节点那儿,比方怎样处理平行链和网络音讯,来获得更高的扩展性,和运转更多的平行链。

Jeff:我觉得咱们的方针应该是,虽然这个方针或许无法抵达,可是方针应该是抵达同等水平,让每条平行链有一个验证人。这个或许无法完成,可是当咱们抵达这个情况的时分,咱们应该知道这个极限的存在,然后朝其他的方向尽力。

Joe:刚刚你说 3000 个验证人,意味着 3000 条平行链。Rob 你作为完成者,怎样评价这个方针?

Rob:(笑)暂时还做不到,这是肯定的。我觉得代码通过一轮优化之后能运转 80-100 条平行链,我就很开心了,并且这对社区来说也绰绰有余了。

Jeff:是的。最终咱们或许会抵达一个点,用户耗尽了,咱们得开端压服更多的人来运用,所以我猜或许会有许多次这样的爆发。

Rob:我想是的,我觉得这有点像波卡管理遇到的应战 —— 拍卖计划的长尾效应是什么?由于在某些时分,假如一切的技能开展顺畅,那么咱们或许有能力运转更多的平行链,乃至或许超出商场对平行链的需求。可是咱们也不期望平行链的资源被一些垃圾项目填满,占用个两年,当然之后社区的开展赶上来了(平行链的位子又会不够用),肯定会有这种来来回回的开展进程。

  • 欢迎学习 Substrate: 
    https://substrate.dev/

  • 重视 Substrate 开展:
    https://github.com/paritytech/substrate

  • 重视 Polkadot 开展:
    https://github.com/paritytech/polkadot

视野开拓

这场失败在经济领域产生了最直接的影响。它使政治生活的一切制度都失去意义,或是令人怀疑。但它最深刻的影响反映在所有社会据以建立的基本概念上:社会中的人所具有的本质、功能及地位。个人的经济自由不会自动造就平等,这个事实已经毁了资本主义和社会主义据以建立的有关人类本质的概念:经济人( Ecoomic Ma) 每一个有组织的社会,都立基于一种概念,一种涵盖人的本质社会功能与地位的概念。不论这个概念是不是人类本质的真实写照,都一定会真实反映出社会的本质,而社会也依此概念来识鉴别自己。这个概念呈现出它认为社会中具決定性且最重要的人类活动范畴,并以之作为社会基本原则和基本信仰的象征。例如把人视为“经济人”的观念,是资产阶级资本主义社会和马克思社会主义社会的真实;这两种社会都认为,人类自由从事经济活动是实现社会目标的方法。似乎只有经济上的满足,才是对社会重要且有意义的事。人们工作是为了经济地位、经济特权和经济权利。为此,人们发动战争,不惜牺牲生命其他所有的似乎都只是伪善、势利或浪漫却没意义的东西罢了。 经济人的概念,在亚当·斯密( Adam Smith)及其学派的“经济人( homo ecoomic)中首度化为文字出现。经济人是他们虚构的角色,好较猾、不择手段,永远都以最大经济利益作为他的行动依据,也总是知道该怎么做。这样的观念虽然可以用在教科书里,但若用来描写人类的真实本质,就太粗、太夸张且滑稽了。连资产阶级资本主义也采马克思改良订正过的经济人版本:在此最后的分析中,经济人会倾向于依据“阶级利益”而行动,即使他无意这样做,或不知道自己已经这样做了。-《经济人的末日:极权主义的起源》

发表回复

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