Substrate v3.0发布 – 最显著的变化是可以使用新的属性宏pallet来替代之前的宏decl_*来编写runtime模块。

重要提交和发布

  • Substrate v3.0发布 – 最显著的变化是可以使用新的属性宏pallet来替代之前的宏decl_*来编写runtime模块。
  • 实现了IPFS Bitswap通信协议 – Bitswap是IPFS的核心模块,用于在节点间交换数据块,Substrate实现此协议,一个Substrate的节点也会变成IPFS网络的一个节点,从而借助IPFS来提供交易的细节信息,而链上只需要存储交易哈希就行了,未来链上可以只存储区块Merkle Trie的根,进而优化链上的存储,也是构建存储链(Storage Chain)的一个重要功能。
  • 在Substrate的单元测试中使用construct_runtime!宏 – construct_runtime!生成的PalletInfo实现能够返回唯一的模块名作为存储项的前缀,而之前手动构造的runtime返回的模块名不是唯一的,如果存储项的名称一样会发生存储碰撞,此PR修复了这一问题。
  • 如果节点不是验证人,对于不在网络中传播的交易直接丢弃掉 – 交易池里现在可以获取到是否是验证人的信息,是底层组件交互的典型方式。
  • 扩展SS58地址范围 – 之前SS58地址的标识符只支持0~47,随着项目逐渐增多,已经不够分配,这一提交将标识符的范围提高至16383。
  • Aura模块使用新的pallet宏 – FRAME v2引入的pallet宏,语法更加简洁、可读性更高、IDE支持更好,已经足够稳定,可用于生产环境,有越来越多的Substrate内置模块已经更新使用pallet宏。
  • contracts模块对存储的合约代码收取租赁费用 – 之前只有合约的状态会被收取租赁费用,本修改将租赁费用修改为rent = storage_rent + (code_size / num_code_users),合约代码的存储费用由使用方共同承担。
  • 允许验证人阻止新的提名人来提名自己,或者将一些提名人踢出自己的提名人列表 – 验证人在偏好设置ValidatorPrefs里将blocked设置为true,来阻止任何新的提名人;通过staking模块的可调用函数kick将给定的提名人从自己的列表里踢出。
  • Staking和election模块解耦 – 通过一些列的重构将模块的功能划分的更加单一、清晰,primitives/election-providers提供了选举功能的抽象接口,具体的选举算法实现该接口,并注入到使用的模块如staking模块中。
  • Substrate网络层的轻客户端请求使用了request/response协议 – 复用rust-libp2p提供的通用请求响应协议,只需要自定义协议的名称和格式、请求和响应的数据格式就可以重构包含复杂逻辑的通信协议如区块请求、finality请求以及轻客户端请求。

设计方案讨论

  • Finality Verifier Pallet – 当前Substrate模块在同步区块头的时候容易受到一定形式的攻击,比如无限期地写入存储、无边界迭代等,本文提出了一个解决方案,即引入一个“中间件”模块,它的功能是验证区块头的最终性和ancestry proof。
  • Substrate 链上身份工作组 – 讨论的内容包括:Polkadot生态对链上身份的需求,社区哪些团队在进行相关的开发及各自的关注点等。

文档和资料

  • Substrate Dev Hub文档的中文翻译已经完成 – 包括了几乎所有的知识库、教程,很多社区的小伙伴参与到了翻译和校对之中。
  • Substrate 如何使用 libp2p 进行点对点通信 – 此文章包含了点对点通信的介绍,libp2p的基本介绍,以及Substrate如何使用libp2p实现点对点的通信。

技术生态和社区

  • PolkadotDecoded线上会议正在收集演讲主题 – 可以是技术相关,也可以是非技术的主题,欢迎Polkadot社区构建者分享自己的案例和经验。
  • 首届Parity官方举办的Substrate开发者黑客马拉松正在进行中 – 本次黑客松有多个参赛类别,包括

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注