波卡联合开创者Robert:平行链的将来规划和 Rococo 的重构

时间:2021-10-25 06:09       来源: 未知

我今天其实就是要讲讲平行链,包括:如何达成、现在到什么阶段了、将来有哪些计划。

我是 DOT波卡 的开创者之一,从 2021 年就开始和 Gav 一块在做 DOT波卡,我也是平行链代码库和达成的主技术员和团队负责人。所以我今天推荐的内容是来自第一线的。

第一大家来看看时间线,看看平行链是如何进步至今的。

在 DOT波卡 的开发周期初期大家花了很多的时间,去构建 Substrate、BABE 和 GRANDPA 共识算法、lib p2p。其实平行链的开发,需要提前完成这里面的不少基础组件。所以大家在 5 月发表了《达成者指南》的第一版草案,这个指南其实就是一个巨大的达成文档,它描述了大家的动机,大家在写如此很多的代码时的想法。由于当你深入到一个非常大的软件开发项目时,你真的需要去考虑所有些部分要如何组合在一块。这部分部分不会自然地融合到一块,你不可以今天写点这块,明天写点那块,你需要去考虑每一块要如何放在正确的地方。所以说,假如你要做某件事情,就像大家在做的事 —— 上线平行链一样,那样类似《达成者指南》如此的东西就至关要紧,它可以确保代码是经得起推敲的,它是一个基本的基础设施组件。

所以《达成者指南》是在 2021 年 5 月发表的,这个时候大家就郑重地开始开始去构建。它所做的一件事是,把平行链代码分为了四个主要部分:

1、支持和可用性:验证人从采集人那里找到区块,然后说我感觉这个区块很好,把它包含到链上,然后保证检查区块所需的数据存在。

2、批准检查:安全性的一大多数就源于这里,它是一种方法,一旦平行链区块上链了,验证人通过一种安全的方法随机自我选择,这种方法就会检查是不是他们应该恢复这部分数据,然后自己检查区块。

3、争议处置:也就是假如一个验证人测试到了某个东西是恶意的,那样它就需要去联系其他的验证人,让他们可以参与和检查。这样的情况发生的概率极低,譬如是 20 个小数点左右的概率,在批准检查阶段无人发现这个区块是恶意的,此时局势就会飞速升级。所以说这部分组件其实都是一环扣一环的,来保证平行链的安全性和可扩展性。假如你去攻击这条链的话,你不会失去几百万美金的概率只有十万亿分之一,而且在每一次你去攻击时都是一样的。

4、审计:在过去的几个月中,大家雇了 SR Labs 去做代码审计,去检查达成,试图找出 Bug。他们进行了独立的评审,检查了平行链的不同部分。目前大家也请他们做了其他一些部分代码的审计。他们提出了几个 Bug,不算太多,现在大家修复了 50% 左右,剩下的也有知道决策略。

这就引出了技术敏捷性的定义,也就是在 Rococo 和 Kusama 上进行审计和重大部署之后,平行链已经筹备好初始商品版本发布了,应该注意的是,大家要修复显著的审计问题,安排在 12 月之前完成。真实环境下的部署也尤为重要,大家有一个 Rococo 测试网,是一个多区域测试网,Parity 运行着它所有些节点,这个互联网也没经济价值,所以它只不过用来尝试一下技术是不是可行,大家可以看到在几百个节点的状况下这项技术有哪些表现。

大家还会看到在 Kusama 上的真实环境测试,由于在进入到真实环境之前,你永远不知晓事实上会发生什么。大家可以试着在 Rococo 上尽量地去中心化,但直到进入真实世界前,你其实也不知晓真实的状况会怎么样。Kusama 上有 900 个验证人,分布在全球,你根本不知晓这部分节点是哪个在运行,他们只不过在自己买来或租来的电脑上运行了一个程序而已。

那样,敏捷和成熟相比,意味着什么呢?

敏捷的意思就是,它可以用,但它还没到达最后形态。代码的功能都完整了,该有些功能都有。也用高标准测试过了,在各种边缘状况下都测试了,和各种模块都结合地非常不错。还有安全专业机构进行了独立的评审,大家还模拟了可能的攻击,看看该系统是不是靠谱。事实上假如你目前去看 Rococo 测试网的话,你会发现有敌对的节点正在试图去破坏互联网,但没成功。但,假如说某个东西是敏捷的,它可能还是存在 Bug,可能还需要重大优化。

相对的就是成熟的这些代码,当某件事已经演化到一个阶段,经过了几年的用后,它已经是一个基础性的、大负载的、靠谱性非常高的基础设施,大家就会说它是成熟的。所以有不少优化可以去做,它是经过了实战考验的。譬如说ETH在 2021 年经历的上海攻击,那时大伙真的在努力地试着去摧毁ETH互联网。当现实世界中的某些东西被证明可以承受经济攻击时,这是朝着成熟迈出的一大步。

代码是稳定的,更多地在维护代码,而不是开发代码。这意味着在这这个时候革新并没那样多了,由于它的基础设施和增长更多地都是一些边缘革新。

走向成熟的道路

那样,大家走向成熟的道路是什么?沿着这条道路前进的一些步骤是什么?我将介绍一些主要的步骤。

我觉得其中的一些尤为重要的马上发生的事情是上下文实行、平行线程和普通的互联网优化。所以我将深入聊聊这三件事。

假如你察看过 Kusama 或 Rococo 互联网,你会看到每 12 秒包含一个区块。这不是出于协议的限制,而是达成的限制。所以上下文实行就是为了从 12 秒出块加速到 6 秒出块。在大家现在 Rococo 和 Kusama 上的非常短的区块实行时间中,又只有极少的时间是真的用于区块的实行的。

上下文实行的想法是显著增加区块实行时间,它基本上是关于提前筹备区块,有点像是在链下进一步构建平行链,然后慢慢地把这部分东西放到主中继链上。而不是在平行链区块立刻就要被包含到中继链上时再去构建这部分区块。这是大家已经拟定好的优化策略,大家已经为它拟定了设计,它是下面的优先事情之一。

另一件马上发生的有趣事情是平行线程,它是打造在一个区块又一个区块的基础上的平行链插槽的动态调度。这的意思是呢?现在平行链是有专用的实行时间的,这部分时间通过拍卖来购买,可能是 6 个月、12 个月或 24 个月的时间专用于我,我可以在任何我想用系统的时候去实行一个区块。而平行线程更像是一种即用即付的模型,它和平行链很相似,其实代码事实上并没特别不同,它事实上只影响大家所说的支持和采集阶段。对于我之前说到的一些阶段,譬如可用性、批准检查和争议等,平行线程和平行链是完全相同的。

互联网优化是一个比较大的部分。这是P2P互联网,正如 Gav 在之前的演讲中提到的一样,P2P互联网是一个挑战,它很不简单,由于在推广客户端服务器模型中,你需要标记一些服务器,就能迅速回复。但当你在做P2P互联网的时候,挑战就是尽量有效和迅速地分发数据,并且具备低冗余和高出货保证,其实非常难做到这一点。我觉得在互联网优化方面有不少立刻就要够得到的成就,这将很大地提升达成的性能。

所以我感觉这部分都是平行链方面在不久的以后可以关注的一些点。

下面我想聊聊 Rococo 测试网,包括这对社区意味着什么,大伙可以如何参与进去。

之前我提到了 Parity 在运行所有些 Rococo 节点,它有哪些用途主要集中在内部测试上,大家会运行前沿代码,迅速修改,部署对抗性节点之类的。但这确实意味着当大家在开发过程中发现了错误,大家偶尔会破坏这条链,这使得对于想在上面部署我们的平行链的团队来讲,这条链变成了一个很不简单的部署环境。Substrate 开发者需要有一个地方来部署和测试跨链解决方法。伴随现在版本的 XCM 愈加稳定,大伙已经可以真的用那些跨链革新了,那样一个测试环境就变得尤为重要。

所以在这里我要向你隆重介绍Rococo 改造计划。

大家的想法是,Parity 会在 Rococo 测试网上维持向后兼容性,以确保它不会重新启动。所以当你注册平行链的时候,不需要像在 Kusama 和 Westend 里那样再去更新你的节点或 runtime,这意味着你可以计划在更长的时间内用 Rococo,并真的将其用作与其他团队合作的地方。

另一点是自动平行链插槽。大家构建了一种调度程序,将 Rococo 上的时间分配给注册用它的团队,如此他们就可以获得长度为一周插槽。这部分插槽会在可用性的基础上自动且公平地分配给团队。不过大家特别会优先考虑已在实时互联网上部署链的团队,也会优先考虑加入了 Substrate Builder Program 的团队。

当然大家也会很重视社区。大家鼓励在 Rococo 上进行跨链通信和实验,特别是在更高层次上,不止是部署平行链,还包括在平行链链之上部署一些东西,譬如大家期望可以看到用户界面或DApps程序开发者,可以去借助多条平行链,并且享受在这个测试网中进行创造。而不止是那些超级硬核的特别底层的开发者。

我在这列出了一个时间表,说明一些 Rococo 改造的计划是哪种。

今天我宣布了大家计划改造 Rococo,大家还将非常快发表一篇更长的博客文章来详细描述。

然后就是技术方面的跟进,包括拟定新的链规范,拟定一些参数,譬如 Session 是多长期,更换验证人的频率怎么样等,大家会把这部分都智能化。

最后就是朝着 Rococo 的最后重启进发,大家将不再把这条链用于内部测试。目的是在 11 月底完成这一步。