Substrate 技术及生态 8 月大事记|了解精简区块生产以优化吞吐量和去中心化

2024/8第 47期

本期月报由 Substrate Evangelist

@时光 创作

Hi,所有关注Substrate技术的开发者们:

「Substrate 生态项目技术月报」

由 OneBlock+ 出品,每月汇总整理 Substrate 生态各领域项目的技术进展,本篇为 Substrate 生态项目 8 月技术月报,Enjoy!

01 重要提交和发布

1.Polkadot 稳定版 2407 发布

2.恢复 Polkadot 和 Kusama 中损坏的 staking 账本 此 PR 在 Polkadot 和 Kusama 运行时中添加了迁移,以恢复 Polkadot 和 Kusama 中当前损坏的分类账。迁移包括:

  • 调用 pallet_staking::Pallet::::restore_ledger 每个 “白名单” 存储作为Root起源。

  • 执行检查以确保恢复的账本的质押不会溢出当前存储的可用余额。如果是这种情况,则强制取消质押账本。此检查目前在 polkadot-sdk/pallet-staking 中缺失。

或者为 Fellowship 运行时添加临时 pallet,以修复 Staking 损坏的账本,这会显示一个外部组件来恢复本并执行额外的检查。请参阅此 PR 作为示例

3.Elastic Scaling MVP 发布 此 MVP 版本使平行链能够每个中继链块使用最多 3 个核心,从而实现 3 倍的吞吐量和 2 秒的块时间。

4.添加 Polkadot Coretime chain-spec 将 Polkadot Coretime 链规范与其他系统链规范一起添加到目录中。这是在创世时使用的链规范,并为其生成了创世头数据。它也包含在 Fellowship 版本 v1.3.0 的资产中。

5.添加初始版本pallet_revive 这是经过大量修改和精简的版本 pallet_contracts明显的变化是它使用 PolkaVM 而不是 wasmi 来执行合约。但它还将包括许多其他更改,使执行交叉编译的 YUL 变得更加容易。例如,它将使用 AccountID20 而不是运行时本机地址类型,包括所有必要的到 AccountID32 的映射以支持 AssetHub。区块编号和余额等类型也将固定为 uint256。链扩展将被声明自定义预编译的能力所取代。就像 pallet_evm 上的情况一样。

6.添加 pallet_proxy 到 People Chain 和 Coretime Chain 测试网 Runtime Kusama 和 Polkadot 在运行时可以使用代理,但此功能以前在测试网上不可用。coretime-rococo 现在可以在 coretime-westend 和使用代理 people-rococopeople-westend 方式在 Kusama 和 Polkadot 上相同。

7.Elastic scaling: 将声明队列偏移量添加到 Cumulus 此 PR 实现了不需要新原语的部分,因此可以合并Elastic scaling: 引入新的候选回执原语。剩余需要实现的内容:

  • 将核心选择的 UMP 信号添加到平行链系统模块中

  • 在将整理提交给整理生成时,利用新的 UMP 信号承诺来确定核心索引

查看 RFC 了解更多背景信息:polkadot-fellows/RFCs#103

8.元数据 V16 更新(不稳定):通过相关类型的配置特征丰富元数据

  • Config 此功能是即将推出的元数据 V16 的一部分。需要 TypeInfo 或边界的特征的关联类型 Parameter 包含在托盘的元数据中。元数据尚未向最终用户公开,但元数据中间表示 (IR) 包含这些类型。

  • without_metadata 开发人员可以通过为 指定可选属性来选择退出相关类型的元数据收集 #[pallet::config]。

  • 此外,该 without_metadata 参数可以与新添加的属性结合使用 #[pallet::include_metadata],以有选择地仅包含元数据集合中的某些关联类型。

9.支持通过 Bridge 在 Asset Hub 上注册资产 允许一侧的一个资产中心通过桥梁在另一个资产中心上注册资产。Rococo <> 以太坊测试桥将被放弃,取而代之的是 Westend <> 以太坊测试桥。此 PR 还更改了模拟测试以模拟以太坊 <>Westend<>Rococo 的双桥接。

10.将 zombienet-sdk 测试添加到 parachain-template 将新的 CI 机械添加到使用 zombienet-sdk 的 parachain-template-node 的烟雾测试中。

11.[Backport] 添加功能以允许 Aura 收集器使用完整的 PoV 大小 此 PR 引入了一项功能,允许选择性地使用完整的 PoV 大小。

12.[FRAME] 清理存储 generator 特性 这种方法涉及将各个生成器特征中定义的所有方法移植到 storage::types 中的各自类型中,并实现 storage::{StorageValue, StorageMap ,StorageNMap, StorageDoubleMap}。

02 设计方案和问题讨论

1.Elastic Scaling: 精简区块生产 为了在 Elastic Scaling 中实现最大吞吐量,我们需要简化区块生产,否则只能通过将整理器设置为大小 1 来实现最佳吞吐量,这会影响活性和去中心化。建议的解决方案:

  • 在区块生成过程中,区块作者将流式传输其放入区块的所有交易的哈希值。流式传输是必要的,因为无法提前知道可以容纳多少交易。

  • 其他节点,检查其内存池中是否存在相关交易。如果没有,等待它们到达。

  • 根据传入的哈希流来构建块。

  • 现在大致与原作者构建新状态同时了解了新状态:几乎没有引入任何额外的延迟。

  • 从区块作者处收到区块公告,并将状态根与我们到达的状态根进行比较。如果匹配,就拥有了所需的一切。如果上述任何一项失败,只需返回到正常的区块导入并在该阶段照常下载区块。

成功地将吞吐量提高了一倍,并降低了带宽要求。

2.增加 max_pov_size 至 10MB 目前在 Polkadot/Kusama 上运行最大 PoV 大小为 5MB 的中继链。最近在基准测试中发现,存储证明开销会随着存储中的密钥数量的增加而显著增加,例如,当有 100 万个账户时,平行链吞吐量会下降到 50%。根据数据,应该能够将最大 pov 大小增加一倍,并且在最坏情况下仍然只需要 50% 的硬件规格带宽。预计擦除编码/解码的 CPU 成本在最坏情况下会增加到 100%,应该使用子系统基准来确定它,并看看它如何适应即将推出的新硬件规格。

03 文档和资料

1.Dedot 使用文档 使用 Polkadot.js 与 ink! 智能合约交互一直是一个挑战,得益于 Dedot 的类型安全 API(最新版本:),与 ink! 智能合约的交互现在比以往任何时候都更加简单且对开发人员更加友好。使用 Dedot,可以专门使用 TypeScript 的本机类型系统,无需处理包装的编解码器类型。

2.Elastic Scaling MVP 指南 Elastic Scaling 是一项功能,可让平行链无缝地增加/减少所用核心的数量。为了增加平行链的计算或存储吞吐量,或降低交易提交和在平行链区块中构建之间的延迟,这可能是可取的。目前,启用异步支持后,平行链每 6 秒只能在中继链上包含一个区块,无论平行链获得多少个核心。弹性扩展进一步增强了异步支持的 10 倍吞吐量提升,使收集者能够为每个中继链区块提交最多 3 个平行链区块,从而进一步将吞吐量提高 3 倍。

Elastic Scaling 的完整实现涵盖整个中继/平行链堆栈,并且仍在进行中。MVP 仍被视为实验性软件,因此无法保证稳定性。

04 技术生态和社区

1.汇聚顶尖人士,共探生态前沿:Polkadot Decoded Asia 2024 新加坡即将开幕 Polkadot Decoded Aisa 2024 大会将在 9 月 16 日-17 日在新加坡盛大举办,它将作为 TOKEN2049 Week 重要组成部分,深度聚焦波卡生态发展前沿,100+ 位分享嘉宾、2,000+ 同行者出席大会,分享他们眼中波卡生态的潜力趋势。Polkadot 创始人 Gavin Wood 也将莅临现场,作为时隔两年后重返亚洲公开舞台的首次演讲,宣布波卡未来发展的重要事项,各位与会开发者可以保持关注和期待!请注意 Oneblock+ 社区用户请选择生态通行证,即可免费领取门票!

2.Web3 Summit 在柏林顺利举行!Gavin Wood 提出三种不同的 DIMs 8 月 19 日-21 日,Web3 Summit 带来了为期三天的系列演讲和黑客松等活动!Gavin Wood 在大会上提出了三种不同的 “数字个体性机制”(DIMs),旨在将数字身份的控制权交还给用户,确保身份的安全性、私密性和统一性。

  • DIM1: Proof-of-Ink(墨水证明):这是一个个性化的设计或声明,唯一地链接到你的身份,类似于一种不可更改的数字印记,通过社区验证,确保其真实性。

  • DIM2 和 DIM3:这些机制提供不同的功能和激励措施,具体细节将在以后公布。

3.Polkadot 黑客松大赛新加坡站&曼谷站报名已截止, OneBlock+ 社区将于 2024 年 7 月 11 日 - 11 月 14 日举办 2024 波卡黑客松大赛,本次大赛一共两场(分为新加坡站和曼谷站),每场奖金高达 315,000 美元,合计超价值 63 万+ 美金奖金池!Polkadot 黑客松新加坡站的代码提交已截止,曼谷站的代码提交截止时间为 10 月 16 日中午 12:00(UTC+8)。目前,主赛道四大赛题、奖金池、激励方式和赛程已公布。

4.全球领袖共聚布鲁塞尔:Polkadot Decoded 2024 圆满落幕 作为波卡生态系统的旗舰活动,Polkadot Decoded 2024 于七月中在布鲁塞尔举办。本次活动中汇聚了来自全球的开发者、投资者、爱好者和行业领导者,共同探索区块链技术的最新创新

5.Pallet 最新上线!Substrate 开发进阶课程第八期正式开课!OneBlock+ 推出《 Substrate 开发进阶与项目实战》,由 Polkadot 社区开发者孙凯超 、资深 Polkadot 开发者周俊、资深智能合约开发者王大锤联合授课!帮助大家在复杂中梳理出一条开发学习的明确路径!

6.首期 Vara 入门实战课程圆满收官,从 0 开始构建 DApp 2由 OneBlock+ 和 Vara Network 联合推出的「Vara入门实战指南:从 0 到 1 构建 DApp」首期课程现已经正式收官。课程招募近 400 人学习,总浏览量达 12800+ 次,帮助学习者在区块链领域打下坚实的基础,并提升实际操作能力。

05 跨链协议

1.[XCMv5] 更好的费用机制 这个想法是扩展当前的 XCM 费用机制,以支持原则上的交付费用,但也可能支持其他类型的费用。这是通过增加两个功能来实现的:

  • PayFees 操作说明

  • 一个费用注册表,费用会存入其中并保持直到执行结束。关键的是,它与持有寄存器是分开的。

2.添加了 SetAssetClaimer 指令 使用 CamelCase 作为结构名称,使用 snake_case 作为变量/成员名称。请查看 https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CONTRIBUTING.mdhttps://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/STYLE_GUIDE.md 了解更多贡献者信息。

提示:cargo 可以为您完成大部分样式格式化。只需运行 cargo fmt -p > 或 cargo fmt --all。在我们的例子中,您应该使用夜间版本来格式化我们使用的一些高级 linters:cargo +nightly fmt -p