查看原文
其他

它可以将 Polkadot 吞吐量提高 8 倍,为波卡 2.0 打好基础?“异步支持” 是什么

PolkaWorld PolkaWorld 2023-10-30

加入 PolkaWorld 社区,共建 Web 3.0!

Polkadot 的一项重大优化 —— 异步支持(Asynchronous Backing)已经上线至 Rococo 测试链,预计年底上线至 Kusama。它通过优化平行链区块的验证过程,有望将 Polkadot 的吞吐量提高 8 倍,并为波卡 2.0 的敏捷核心时间打下基础。

 

那么 Polkadot 的异步支持的原理是什么?为什么它对 Polkadot 的性能和扩展性有重要的影响?它什么时候可以上线?本文将尝试回答这些问题。



什么是 Polkadot 的异步支持?

 


平行链区块验证机制

 

我们都知道 Polkadot 是一个跨链网络,由中继链负责平行链的共享安全性。为了实现这一目标,Polkadot 需要一种高效和可靠的共识协议,来确保平行链的状态和交易能够被中继链验证。

 

在 Polkadot 中,平行链区块由收集人(Collator)在平行链上生成,然后发送给中继链上的验证人(Validator)来进行支持(backing)。

 

“支持” 指的是平行链区块由一组验证人(支持组)进行验证的过程,平行链区块只需要被一个验证人支持即可,但支持并不能保证平行链区块的有效性。

 

经过支持后的平行链区块会被发送到其他验证人那里,然后被包含到中继链上。每个平行链区块在生成时,必须锚定到一个叫 “中继链父块” 的中继链区块上。而中继父块又是生成下一个平行链区块的必备上下文。要注意的是,一个平行链区块的中继父块,和将它包含到中继链上的中继链区块不是同一个。

 


同步支持

 

在正式理解异步支持之前,我们先来看看原来的运行模式,也就是同步支持(Synchronous Backing)。

 

在同步支持中,平行链区块的生成和中继链的进程紧密相关:

 

  • 只有在上一个平行链区块被中继链包含后,才能生成一个新的平行链区块。

  • 构建下一个平行链区块的上下文,是从最新包含的平行链区块的祖先提取的。

  • 中继父块必须是最新的中继链区块。

 

在这些条件的约束下,每个平行链区块要花 6 秒(一个中继链区块)来获得支持,再花另外 6 秒来被包含。因此一个平行链区块从出块到被包含到中继链上,需要 12 秒的时间。

 


而且,虽然整个过程需要 12 秒,但留给收集人生成区块的时间却最多只有 0.5 秒,因为平行链区块需要在剩下的 5.5 秒内完成支持和散布消息(gossip)。



异步支持

 

在异步支持中,支持和包含可以发生在同一个中继链区块内。而且可以使用较旧的中继父块来创建新的平行链区块。


同步支持 vs 异步支持,来源:Polkadot Wiki


从上图可以清楚地看异步支持带来的优势。


在左边的同步支持模式下,一个平行链区块先需要 6 秒来支持,另外 6 秒来包含,这一套全部完成后才能开始生成下一个平行链区块,因此每 12 秒才能包含 1 个平行链区块。


在右边的异步支持模式下,在 6 秒内既可以包含上一个区块,又可以为下一个区块做支持,因此每 6 秒就能包含 1 个平行链区块。



另外,由于异步支持允许使用较旧的中继父块来创建新的平行链区块,这让收集人有了更多时间去生成平行链区块,平行链区块的生成时间从原来的 0.5 秒增加到 2 秒。



一个比喻 —— 厨艺比赛

 

如果你觉得上面这些解释还是有点抽象,那么可以看看 Web3 基金会的 Filippo Franchini 给出的一个形象化的比喻。

 

我们可以把平行链出块过程比喻成一场厨艺比赛,平行链是厨师,中继链是评委。

 

在同步支持中,每 12 秒揭晓一本新菜谱(中继父块),厨师(平行链)需要在 0.5 秒内火速收集食材(数据)并且做好菜(填充区块)。

 

在异步支持中,厨师们可以从更多的菜谱(中继父块)中挑选,一些菜谱比较旧了,但是也很有价值。这样一来,厨师就有更多时间(2 秒)来选择最合适的食材(数据)并且做好菜(填充区块)。


 

也就是说,同步支持看重的是做菜速度和使用最新的菜谱。而异步支持看重的是精心准备,和充分利用资源。

 

在这两种情况下,厨师都需要按照特定的菜谱来做菜,也就是平行链需要锚定父块来生产平行链区块。但是在同步支持中,厨师只能选择最新菜谱,而在异步支持中,厨师也可以从更旧的菜谱中做选择。

 

另外,在同步支持中,一次只能端上来一盘菜,每 12 秒才能展示(支持)和评价(包含)完一盘菜(平行链区块)。

 

而在异步支持中,可以一边评价一盘菜,一边展示下一盘菜,这样每 6 秒就能评价完一盘菜。

 


异步支持能将 Polkadot 的性能提高多少?

 

总结一下,异步支持带来的最显著的好处是:

 

  • 执行时间提升了 4 倍:执行时间从 0.5 秒增加到 2 秒

  • 平行链出块时间缩减一半:平行链区块出块时间从 12 秒缩短到 6 秒。


 

两项叠加,就让平行链的吞吐量提升到了原来的 8 倍,同时不影响网络的安全性。

 

在早些发布的 Polkadot 路线图中估计,异步支持可以让 Polkadot 的总体 TPS 达到 10 万 - 100 万。

 

短期来看,异步支持上线后,Polkadot 本身以及平行链的性能都会显著提升,让区块空间的利用得到优化。

 

长期来看,异步支持作为一项重要的基础能力,将为 Polkadot 2.0 升级打下基础。有了异步支持,才能实现 “敏捷核心时间 (agile coretime)” ,从而以更灵活、更高性价比的方式来分配和管理区块空间,让 Polkadot 2.0 能够成为 Web3 中的 “云计算” 服务基础设施。

 


当前进展

 

目前异步支持功能已经部署到了 Rococo 测试网上,可供测试,预计在今年年底上线 Kusama,之后在通过审计、测试和治理的批准后将上线至 Polkadot。详情见《Parity:已在 Rococo 上部署异步支持并启动 Coretime 功能!》。

 


总结

 

异步支持是自平行链共识协议推出以来,Polkadot 共识的首次重大优化,它可以将 Polkadot 的吞吐量提高 8 倍左右,让 Polkadot 的性能和可扩展性达到新的高度,从而为 Web3 的各种使用场景提供更好的支持。

 

另外,异步支持还支持创建平行链区块队列,让区块空间可以更灵活地调度,为 Polkadot 朝 2.0 迭代打下基础。


参考资料:


  • https://wiki.polkadot.network/docs/learn-async-backing

  • https://www.polkadot.network/blog/elevating-polkadots-performance-and-scale-with-asynchronous-backing

  • https://www.polkadot.network/blog/polkadot-roadmap-roundup

  • https://polkadot-blockchain-academy.github.io/pba-book/polkadot/async-backing-deep/page.html


  • PolkaWorld Telegram 群:

    https://t.me/+z7BUktDraU1mNWE1

  • PolkaWorld Youtube 频道:

    https://www.youtube.com/c/PolkaWorld

  • PolkaWorld Twitter:

    @polkaworld_org


更多内容


Parity:已在 Rococo 上部署异步支持并启动 Coretime 功能!

Polkadot 国库支出报告出炉,2023 截止目前共花费 2100 万美元,开发占比最高

波卡周报|部署 Coretime 到 Rococo 的 PR 已提交,预计年底上线 Rococo 测试网!

关注 PolkaWorld

发现 Web 3.0 时代新机遇


点个 “在看” 再走吧!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存