查看原文
其他

Substrate 技术及生态 6 月大事记 | Substrate 技术运行环境优化、Runtime 迎来新升级

PolkaWorld 2023-08-21

The following article is from OneBlock 社区 Author OneBlock+


2023/06  第 33 期

本期月报由 Substrate Evangelist

@蔡松健 创作

Hi,所有关注 Substrate 技术的开发者们:
「Substrate 生态项目技术月报」由 OneBlock+ 出品,每月汇总整理 Substrate 生态各领域项目的技术进展,本篇为 Substrate 生态项目 6 月技术月报, Enjoy!

01

重要提交和发布

1.将 Migration 类型迁移到 Config : 这个 PR 从 migrations.rs 中移除了硬编码的 migration 顺序,并将其放到 Config 中,以便在 runtime 中进行配置。这是一个比较重到的更新,因为在 Config 中引入了心的类型。开发者需要将待处理的 migration(如果没有,则为())与 runtime 配置进行更新。例如:

2. 基于版本的 Runtime 升级:VersionedRuntimeUpgrade 允许开发人员编写迁移代码,无需担心检查和设置存储版本。开发人员可以将迁移代码放在这个结构体中,然后结构体会使用最佳实践来处理版本控制,主要有 5 个类型的参数:

  • From:从什么版本升级

  • To:要升级的版本

  • Inner:OnRuntimeUpgrade 的内部实现

  • Pallet:要升级的 pallet

  • Weight:Runtime 的 RuntimeDbWeight 的实现

当调用 VersionedRuntimeUpgrades 上 on_runtime_upgrade 方法时,会将调用合约的版本与 From 进行比较。如果它们相匹配,则调用 Inner::on_runtime_upgrade,并将合约的版本设置为 To。否则,将记录一个警告,通知开发着该升级是无效的,可能应该被移除。

具体的使用案例:https://github.com/paritytech/polkadot/compare/liam-versioned-runtime-upgrade-example

3. 迁移合约的多个部分:

  • 更新迁移模块的文档字符串

  • 将 Migrate 重命名为 MigrationStep

  • 更新 is_upgrade_supported 函数

  • 确保在 on_idle 函数中尽可能多地执行迁移步骤,根据传递的权重限制。

4. 检查 nonfungibles_v2 的角色

  • 为 pallet-nfts 添加一个只读接口 

  • 使用 pallet-nfts 时我们需要一种读取 NFT 角色的方式。

5. 通过节点命令行设置 Kademlia 复制因子:

默认的 Kademlia 复制因子是 20。在节点少于 20 个的环境(例如测试环境)中,AuthorityDiscovery 无法发布包含节点 Multiaddrs 的 DHT 记录。因此,在测试环境中使 AuthorityDiscovery 正常工作,手动调整 Kademlia 复制因子是有必要的。

6. 让 triecache 通用并适用于 no-std 环境:

重构了 trie-cache 相关的特性,并使其通用化。到目前为止,缓存系统与 LocalTrieCache 实现是绑定在一起的。

7. 增加了在运行 set_code 基准测试之前进行准备/初始化的功能:

  • paritytech/cumulus#2765

  • paritytech/cumulus#2766

8. sp-api 支持 nested 交易:通过使用 execute_in_transaction,在 sp-api 中添加对 nested 交易的支持。支持嵌套事务是很有意义的。

9. 从 frame-support 的依赖中移除 k256 crate:k256 仅用于将 Substrate 的压缩 secp256k1 公钥转换为非压缩公钥,以推导出以太坊地址。这也可以通过已经被 sp-core 使用的 secp256k1 crate 来完成。所以这里会移除 k256


02

设计方案和问题讨论

1. 当记录的存储证明大小超过最大证明大小时,如何使 Runtime API 调用在执行过程中抛出错误:这是一个关于 op rollup 相关的讨论,目前可以使用现有的 TrieRecorder. encoded_size_estimation 来确定确切的证明大小,但是是当证明大小超过其限制时,如何在运行时 API 执行过程中触发错误,成为了一个有挑战性的问题。


03

文档和资料

1. openGov 文档:可以通过这个链接参与:

https://polkadot.polkassembly.io/opengov


04

技术生态和社区

1. 2023 波卡夏季黑客松正式启动
由 Parity 和 OneBlock 联合举办的「2023 夏季波卡黑客松大赛」正在火热报名中!本届波卡黑客松大赛中,除了由波卡官方国库赞助支持总金额高达 30W 等额的 DOT 以外,更有 Acala、Manta Network、MoonBeam、Astar、Bifrost、Deeper Network、CESS、Gear Foundation、阿里云提供的 Bounty 赛题奖励。
2. 波卡年度盛会|Polkadot Decoded 2023 上海分会场报名开启
Polkadot Decoded 2023 的哥本哈根主会场将于 2023 年 6 月 28 日至 29 日两天内进行,亚太地区上海分会场将在 2023 年 7 月 15-16 日于中国上海虹桥国际展汇举办。Polkadot Decoded 2023 APAC 由 Parity Technologies 和 OneBlock 开发者社区主办,本次峰会涵盖了构建波卡生态和 Web3 行业各个领域的议题,为与会者带来最前沿的技术、最深入的行业洞察和最广阔的商业机遇。
3. OpenGov 正式上线波卡!开启加速治理新阶段
6 月 OpenGov 在波卡上线,意味着波卡网络正式开启 v1 至 v2 的治理迭代。

05

跨链协议

1. 移除并替换 XCM Convert trait:Convert trait 与 Substrate 中的一个类似 trait 发生了名称冲突,导致了混淆;这个 trait 本身用于 4 个完全不同的事情,最好通过使用更多特定于任务的 trait 和来自 Substrate 的更通用的转换 trait 来进行替换。API 的改变:

  • xcm_executor::traits::Convert 移除.

  • xcm_executor::traits::{Encoded, Decoded} 移除.

  • xcm_executor::traits::{JustTry, Identity} 废弃 (use sp_runtime equivalents instead).

  • xcm_executor::traits::ConvertLocation 新增加.

  • xcm_builder::location_conversion::DescribeLocation 新增.

  • xcm_builder::location_conversion::HashedDescription and family 新增.

  • ForeignChainAliasAccount 废弃.

  • 还有一些其他更新,详情可以参见 PR.

2. 为新的共识 hook 增加 xcm-emulator 测试:在 decl_test_parachains 和 decl_test_relay_chains 宏的预期结构参数中,应添加 on_initialize 和 on_finalize 属性(类似于 on_init 属性)。在那里,可以选择性地添加那些测试中严格需要的模块的 on_initialize 和 on_finalize hook.


06

Substrate 课程预告

Substrate 区块链开发入门》第十二期即将开始!OneBlock+ 和 Parity 官方独家合作,带您深入了解区块链的基本概念,熟悉 Substrate 和 Polkadot 的基本功能,迈入区块链的世界。本期课程预计将于 7 月底正式启动,现已开放报名!名额有限,请尽快报名!加入我们的课程,开启您的区块链开发之旅!


学习 Substrate:https://substrate.dev/扫码关注公众号,回复“1”加入开发者社群!



About Us

关于我们

OneBlock+ 作为区块链的人才聚集地,是全球领先的 Substrate 开发者社区。我们将提供专业的技术文章和开发课程,并组织研讨会、黑客松创业大赛等交流实践活动,从而帮助开发者掌握 Substrate 技术、深入探索 Web3 领域。同时,OneBlock+ 还为 Web3 优质项目提供技术指导、人才资源等多重创业支持,促使更多开发团队使用 Substrate 技术框架构建未来开放网络。

Twitter: https://twitter.com/OneBlock_

Medium: https://medium.com/@OneBlockplus

Telegram: https://t.me/oneblock_dev

Discord: https://discord.gg/fE8deY4UbP

Bilibili: https://space.bilibili.com/1650224419

YouTube: https://www.youtube.com/channel/UCWo2r3wA6brw3ztr-JmzyXA

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

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