Substrate 技术及生态 6 月大事记 | Substrate 技术运行环境优化、Runtime 迎来新升级
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 交易的支持。支持嵌套事务是很有意义的。
02
设计方案和问题讨论
03
文档和资料
1. openGov 文档:可以通过这个链接参与:
04
技术生态和社区
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.
06
Substrate 课程预告
《Substrate 区块链开发入门》第十二期即将开始!OneBlock+ 和 Parity 官方独家合作,带您深入了解区块链的基本概念,熟悉 Substrate 和 Polkadot 的基本功能,迈入区块链的世界。本期课程预计将于 7 月底正式启动,现已开放报名!名额有限,请尽快报名!加入我们的课程,开启您的区块链开发之旅!
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