SAMA:平行链研究员和开发者谈平行链实现过程、技术难点与发展方向

波卡联合创始人RobertHabermeier表示,当前目标是80至100条平行链,长期目标是3000条平行链。

原文标题:《解析平行链:实现过程、技术难点、未来发展方向等》

在2021PolkadotDecoded的圆桌讨论「解析平行链:谁做了平行链?平行链是什么?为什么要有平行链?」中,研究员Jeff、代码实现者Rob和主持人Joe一起讨论了一些对于平行链发展很重要的问题。PolkaWorld在本文中总结了该圆桌主要内容。

Jeff:JeffBurdges,W3F密码学研究员,做了很多平行链开发方面的研究

Rob:RobertHabermeier,波卡联合创始人/Parity核心开发者,带领实现团队让平行链能够在实际中运行起来

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

平行链是如何从研究论文,变成代码实现的?

Joe:大约一年半以前,Jeff带领着一个团队发表了一篇关于可用性和有效性的论文。在实现时,这个方案已经改变了很多。Jeff,你可以简单谈一谈这篇论文的想法是如何产生的吗?

日本博报堂与波卡平行链Astar开发商成立Web3合资公司:12月5日消息,日本大型广告与传播集团博报堂宣布,将与波卡平行链Astar Network开发公司Stake Technologies成立Web3合资公司“博报堂キースリー”。新公司将通过Web3黑客马拉松的策划和管理来促进新服务的开发。在开展以Web3相关服务开发为主题的黑客马拉松过程中,キースリー将利用博报堂的网络招募赞助商。

此前3月份消息,日本博报堂发布应用区块链和NFT的新项目“博报堂 DY Play Asset”。(Coinpost)[2022/12/5 21:22:49]

Jeff:我们从以太坊生态那里获得了一些想法,比如使用纠删码的想法。但是围绕这些想法的一些具体的东西,比如如何优化分片,都没有正式确定下来。

在2019年末,我们决定要把这些想法正式化,提出更精确的方法。一般来说,我们设计复杂协议的方式是,我会写下所有可能的设计选项,然后用排除法。

在2020年初,我写下了这个设计,并且和大家讨论,我们注意到了一些问题,我想出了一个叫「Two-phaseinclusion」的技巧。也就是说在真正开始之前,平行链中继链必须知道一个区块,验证人必须说这个区块是有效的。

之后我们开始做纠删码,然后开始做真正的检查它的工作。这样做的好处之一是,因为有人在这个过程中投入了很多切身利益,从而会限制其可以尝试的次数。从而做到如果你要攻击它,那么你也会毁掉你自己。它不是加密学安全性,而是分布式系统安全性,但是是合理的。

Web3基金会与Zondax合作将Ledger应用程序引入波卡平行链:5月3日消息,Zondax和Web3基金会将为Polkadot(波卡)生态系统带来更多原生Ledger应用。所有Polkadot平行链拍卖插槽的获胜者将收到一个特有的分类账应用程序,以扩大其吸引力和便利。

据悉,Zondax已经为各种项目构建了几十个原生Ledger应用程序。此外,该公司开发了用于多个交易所、硬件钱包、隐私币和DeFi协议的创新端到端软件解决方案。(Bitcoinist)[2022/5/3 2:47:54]

Joe:对于不熟悉分片的人来说刚刚说的可能有点抽象。其实就是,我们有一千个验证人,当你想要包含这些平行链区块中的一个时,你其实需要把数据块发给所有验证人,涉及到费用、复杂性、网络、存储等,让所有人都得处理这个消息,所以你想要真正确保这些消息是有效消息,而且是有理由的。

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

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

Sakura Finance赢得第18次Kusama平行链插槽拍卖:12月22日,官方消息,Kusama第18次竞拍已结束,Sakura Finance以锁定17,416个KSM成功赢得Kusama的第20个插槽接入Kusama中继链,以平行链的方式出块。[2021/12/22 7:55:30]

这是一种很古老的数学方法,实际上是让我们的速度更快。根据我们目前的验证人数量,我们必须找到一些比较新的论文,来进行优化。这就是我们今年做的事——去大大优化纠删码。我们让它的运行速度快了400倍,渐进地看其实更快。从O(N2)算法到了O(logn)算法。这让计算变得没有那么的有负担。之后我们可能还会做得更好。这是我们最近的一个突破,当然了如果我们能在更早就解决的话就好了哈哈哈。

Joe:把这些研究变成代码,其实也是很大的挑战。我们去年年中上线了Rococo测试网,Rob可以谈谈这个协议的实现早期遇到的一些挑战吗?

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

从2019年中后期到2020年初左右,事情有了很大的进展,就像刚刚Jeff提到的,研究团队开始真正把协议确定下来了,像是可用性确保了平行链区块仍然存在,以便其他人可以检查它们,来进行额外的检查,从而确保安全性。

波卡周报:Polkadot 0.9.2已发布 等待平行链Shell升级为Statemine:据波卡周报,Polkadot 0.9.2 已发布,等待平行链Shell升级为Statemine。1.Polkadot 国库今天刚刚销毁掉了147,042个DOT,目前还有1461万个DOT等待大家去申请。2.Shell 平行链正在 Kusama 网络上运行。3.Kusama 第 108 号公投(强制恢复一个账户)没有被通过。4.Encounter 是一个独特的身份系统,正在申请成为 Kusama 的公益链。5.Kusama 理事会已经通过并执行了 Motion 295,它消除了由于 CPU 峰值导致不允许在 9010 Runtime 升级期间发送 imOnline 消息而导致的 115 个验证器的 slash 惩罚。6.Kusama 理事正投票 297 motion,以资助将 Kusama 集成到 Klever 钱包中。7.Kusama 国库目前有 345,211 KSM,有 690.42 KSM 会在一天后销毁掉。[2021/5/23 22:35:12]

我觉得实现所有的这些研究其实非常困难。如果你在构建任何类型的系统,那么你每向系统添加一点额外的复杂性,那么创建该系统所需的时间就会指数级增加。这个规则也同样适用于代码,因为一旦你达到了一定的代码量,其实真的很难再添加更多的东西,因为新的东西一定会扰乱、破坏之前做好的一些东西。

波卡发布新版本Polkadot v0.9.0,将平行链部署到 Kusama 上:5月6日消息,今天凌晨,波卡代码发布了一个新版本 Polkadot v0.9.0。该版本包含了能够让平行链正确运行的客户端更改。这意味着,当所有节点成功升级至该版本后,平行链功能就将正式部署到 Kusama 链上了。同时,该版本还集成了 Beefy 和 MMR(Merkle Mountain Range),为波卡 - 以太坊桥、还有 Gavin 之前提到的波卡 - Kusama 桥(一旦连接,就可以将 1% 的 DOT 转移到 Kusama 网络中)和其他跨链桥作准备。[2021/5/6 21:30:04]

所以说有一个好的设计和规划是很重要的,在我们迭代协议的时候,我们肯定会来来回回做一些研究。但是2020年的时候,我们把精力放在了《实现者指南》上,在那里面进行迭代,而不是在代码里。我可以和Jeff和Al通话,来讨论论文草案里的内容,然后写一个页面来说明「我们会这样写代码」,而不是直接就去写代码,我们用这种方法节省了几周的时间,之后我可以把这些写代码的工作分配给很多个开发者。

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

平行线程、嵌套中继链等,未来将如何发展?

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:我们说过会把一些核心功能从中继链中释放出来,下放到平行链中,来进一步实现可扩展性,和实现嵌套中继链的想法。你们想谈谈为什么要这样做吗?

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

从某种意义上说,中继链的分片比我们现在已经做到的还要简单一些。不过我觉得可能会在超过3000个验证人的时候来做这个事,我想告诉大家现在还不用急着去实现它。在这之前,我们希望能先让中继链的功能尽可能简单,我觉得这样对于开发者来说工作量是最小的。

Rob:目前来看,Staking和选举模块和一些治理功能其实是比较重的,会给中继链带来较大的负载。所有中继链上发生的事,中继链验证人都需要去执行。而根据设计,发生在平行链上的事情只需要验证人的子集来处理。所以这就是可扩展性的来源,把每个验证人机器都需要执行的事变得尽可能少。

我觉得安全地去提炼出Staking和治理之类的东西其实挺难的。因为波卡有一些故障模式,比如一个机制是在进行争议分析的时候的时候,链可能会被阻止出块。你可能无法进行Slash交易,验证人集无法更新交易等。这些都是很棘手的挑战。

不过这个其实也不是很紧急。在这之前,我们应该会优化节点那边,比如如何处理平行链和网络消息,来获得更高的扩展性,和运行更多的平行链。

Jeff:我觉得我们的目标应该是,虽然这个目标可能无法达到,但是目标应该是达到同等水平,让每条平行链有一个验证人。这个可能无法实现,但是当我们到达这个情况的时候,我们应该知道这个极限的存在,然后朝其他的方向努力。

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

Joe:刚刚你说3000个验证人,意味着3000条平行链。Rob你作为实现者,怎么评价这个目标?

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

Jeff:是的。最终我们可能会到达一个点,用户耗尽了,我们得开始说服更多的人来使用,所以我猜可能会有很多次这样的爆发。

Rob:我想是的,我觉得这有点像波卡治理遇到的挑战——拍卖计划的长尾效应是什么?因为在某些时候,如果所有的技术进展顺利,那么我们可能有能力运行更多的平行链,甚至可能超出市场对平行链的需求。但是我们也不希望平行链的资源被一些垃圾项目填满,占用个两年,当然之后社区的发展赶上来了,肯定会有这种来来回回的发展过程。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:0ms0-3:673ms