2021.05 – Substrate 技术更新速递

2021.05 - Substrate 技术更新速递

## 重要提交和发布 * [为了在 benchmarking 时可以估计出存储项的编码结果最大值,引入了新的接口 BoundedEncodedLen](https://link.zhihu.com/?target=https%3A//github.com/paritytech/subs%3Ccode%3Etrate/issues/8719%3C/code%3E) - 为基本类型、固定大小的数组、tuple、BoundedVec、Option、Result 等等 Substrate 所支持的存储数据类型添加了对应的实现。 * [从 BlockBuilder runtime api 中删除了 random_seem 方法](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8718) - 此方法并没有被使用,在runtime里如果需要随机数应当使用 `Randomness` API。 * [在 frame_support 的 pallet_prelude 中添加了 BoundedVec](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8710) - 无需额外的引入就可以直接使用 BoundedVec 这一数据类型,runtime开发时,对于vector集合类型也应优先使用此类型,[例子](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8665)。 * [增加了获取 reserved nodes 的 RPC 接口](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8704) - Reserved nodes 是节点所设置的保留节点,用于网络之间的连接,如果节点把 reserved only 设置为true,那么只能连接 reserved nodes。 * [将 runtime version 嵌入 wasm 的 custom section](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8688) - 当前 runtime 的 wasm 暴露了一个函数 Runtime_version 来返回其版本信息,这种方式需要首先启动 Substrate runtime 执行环境,再执行该函数才可以获取结果,这种方式太重了。通过在wasm的custom添加runtime版本信息,只需要遍历不同的section再进行解码就可以了。 * [为 Substrate 底层通信协议引入了回退机制](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8682) - 遗留的通信协议很多需要重新命名,为了向后兼容,在配置某个通信协议的时候可以传入回退的协议名称。 * [subkey:显示公钥的 SS58 编码](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8674) - 对于 sr25519 和 ed25519 密码算法,account id 和公钥信息是一致的,因此account id经过SS58编码获取的address和公钥的SS58编码结果是一样的;对于 ECDSA,是将公钥进行blake2算法哈希之后获取的account id,相应的,SS58编码结果也就不再相同。将公钥的SS58编码结果显示出来,可以方便的使用在 chain spec JSON文件和 session keys的编码中。 * [实现了 StorageNMap](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8635) - 这一新的存储类型可以潜在地支持3个甚至更多键的映射类型,也可以在将来替换StorageMap和StorageDoubleMap类型。 * [引入了 PalletInfoAccess 接口,并在Pallet结构体应用的pallet宏里进行实现](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8630) - 此接口提供了pallet的 index 和 name,并存在于metadata中,潜在地,可以将目前runtime中配置的模块PalletId删除,而在pallet实现里直接使用此接口提供的信息。 ## 设计方案讨论 * [关于在pallets里废弃 runtime upgrade 方法的简单讨论](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8687) - runtime 升级过程中如何处理遗留数据,对开发者产生了很大的负担,希望一个开发者友好的 on_runtime_upgrade 替代方案能够尽快实现。 * [通过类型信息构建Substrate链的元数据](https://link.zhihu.com/?target=https%3A//github.com/paritytech/substrate/pull/8615) - 使用了 [scale-info](https://link.zhihu.com/?target=https%3A//github.com/paritytech/scale-info),可以极大地降低客户端解析和维护元数据的负担。 * [Statemint:支持使用Assets模块的资产支付交易手续费](https://link.zhihu.com/?target=https%3A//github.com/paritytech/statemint/pull/51) - 如何使用其它链的资产为当前链支付交易费用。 ## 文档和资料 * [添加了更多 XCM 代码的引用文档](https://link.zhihu.com/?target=https%3A//github.com/paritytech/polkadot/pull/2948) - xcm-format 文档比较抽象,结合实现代码和代码注释可以更好地理解消息格式和传递的机制。 * [官方存证教程更新至 FRAME v2](https://link.zhihu.com/?target=https%3A//substrate.dev/docs/en/tutorials/build-a-dapp/) - FRAME v2 对开发者更加友好,官方教程正在逐步迁移使用新的API。 ## 技术生态和社区 * [Polkadot Decoded 线上活动将在5月19号和20号举行](https://link.zhihu.com/?target=https%3A//decoded.polkadot.network/program) - 不仅有最新的Polkadot进展,还会有Substrate技术的深入分享。 * [Substrate 构建者计划里程碑更新](https://link.zhihu.com/?target=https%3A//www.parity.io/substrate-builders-program-milestone-update-may-2021/) - 这一计划是Parity支持社区团队开发的重要方式,包括构建生态工具、基于Substrate的链等,目前有超过50个团队,涵盖了DeFi、身份、预言机、游戏等多个领域。 * [RelayChain 播客邀请Tether CTO Paolo讨论稳定币创新、合规和如何走向主流](https://link.zhihu.com/?target=https%3A//relaychain.fm/31-tether-stablecoin-paolo-ardoino) - 讨论了 Tether 部署区块链上的标准,如何在Polkadot生态上线,非美元稳定币的范畴,去中心稳定币的风险等等。 * [2021 Web3 bootcamp 12支入选团队公布](https://link.zhihu.com/?target=https%3A//www.chainnews.com/articles/067903413305.htm) - 经过为期数月的筛选,最终12支团队成功入选由Parity、Web3基金会、万向区块链合作的训练营。 * [Polkadot 101 入门课程](https://link.zhihu.com/?target=https%3A//academy.ivanontech.com/polkadot-101) - 内容包括Polkadot中继链工作原理,什么是平行链、平行线程,链上治理,如何使用 polkadot js SDK,以及Substrate开发框架的基本知识。 ## 跨链协议 * [Kusama runtime代码支持注册平行链](https://link.zhihu.com/?target=https%3A//github.com/paritytech/polkadot/pull/3014) - 平行链的相关的功能正在逐步上线到Kusama网络。 * [引入 reserve-asset 跨链转账外部交易](https://link.zhihu.com/?target=https%3A//github.com/paritytech/polkadot/pull/3010) - XCM 定义了多种跨链资产转移的方式,其中一种形式是 reserve 资产,例如,chain A 上的 account 1 想转移某个资产到 chain B 上的 account 2账户里,那首先将 account 1的资产转移至 chain A 上的 chain B 代表账户,再发送一条通知消息给 chain B,chain B 将对应的资产分配给 account 2。 * [新增保留 parachain ID 的外部交易](https://link.zhihu.com/?target=https%3A//github.com/paritytech/polkadot/pull/3008) - ID 是自增的,按获取的顺序分配给交易发送者。 * [新增 teleport asset 的可调用函数](https://link.zhihu.com/?target=https%3A//github.com/paritytech/polkadot/pull/2995),[修改 teleport asset 消息实现,使用 check account 记录转入和转出,维护总的发行量](https://link.zhihu.com/?target=https%3A//github.com/paritytech/polkadot/pull/3007/) - 当两条链彼此信任对方的STF(状态转换函数)时,另外一种可用的资产转移形式。 * [向 Kusama 的 runtime 添加 Auctions 和 Crowdloans 模块](https://link.zhihu.com/?target=https%3A//github.com/paritytech/polkadot/pull/2999) - Auctions 模块包含了创建拍卖、竞拍、取消拍卖等一系列功能,Crowdloans 模块管理了平行链通过众贷的形式筹集插槽竞拍资金的记录和操作流程,这两个模块是平行链上线的关键功能。 * [新增 XCM 交易来源,以及相应的转换器](https://link.zhihu.com/?target=https%3A//github.com/paritytech/polkadot/pull/2896) - 外部交易的来源不仅可以链上的账户,还可以通过 XCM 指定。 本文首发于:https://zhuanlan.zhihu.com/p/373513627

重要提交和发布

  • 为了在 benchmarking 时可以估计出存储项的编码结果最大值,引入了新的接口 BoundedEncodedLen - 为基本类型、固定大小的数组、tuple、BoundedVec、Option、Result 等等 Substrate 所支持的存储数据类型添加了对应的实现。
  • 从 BlockBuilder runtime api 中删除了 random_seem 方法 - 此方法并没有被使用,在runtime里如果需要随机数应当使用 Randomness API。
  • 在 frame_support 的 pallet_prelude 中添加了 BoundedVec - 无需额外的引入就可以直接使用 BoundedVec 这一数据类型,runtime开发时,对于vector集合类型也应优先使用此类型,例子。
  • 增加了获取 reserved nodes 的 RPC 接口 - Reserved nodes 是节点所设置的保留节点,用于网络之间的连接,如果节点把 reserved only 设置为true,那么只能连接 reserved nodes。
  • 将 runtime version 嵌入 wasm 的 custom section - 当前 runtime 的 wasm 暴露了一个函数 Runtime_version 来返回其版本信息,这种方式需要首先启动 Substrate runtime 执行环境,再执行该函数才可以获取结果,这种方式太重了。通过在wasm的custom添加runtime版本信息,只需要遍历不同的section再进行解码就可以了。
  • 为 Substrate 底层通信协议引入了回退机制 - 遗留的通信协议很多需要重新命名,为了向后兼容,在配置某个通信协议的时候可以传入回退的协议名称。
  • subkey:显示公钥的 SS58 编码 - 对于 sr25519 和 ed25519 密码算法,account id 和公钥信息是一致的,因此account id经过SS58编码获取的address和公钥的SS58编码结果是一样的;对于 ECDSA,是将公钥进行blake2算法哈希之后获取的account id,相应的,SS58编码结果也就不再相同。将公钥的SS58编码结果显示出来,可以方便的使用在 chain spec JSON文件和 session keys的编码中。
  • 实现了 StorageNMap - 这一新的存储类型可以潜在地支持3个甚至更多键的映射类型,也可以在将来替换StorageMap和StorageDoubleMap类型。
  • 引入了 PalletInfoAccess 接口,并在Pallet结构体应用的pallet宏里进行实现 - 此接口提供了pallet的 index 和 name,并存在于metadata中,潜在地,可以将目前runtime中配置的模块PalletId删除,而在pallet实现里直接使用此接口提供的信息。

设计方案讨论

  • 关于在pallets里废弃 runtime upgrade 方法的简单讨论 - runtime 升级过程中如何处理遗留数据,对开发者产生了很大的负担,希望一个开发者友好的 on_runtime_upgrade 替代方案能够尽快实现。
  • 通过类型信息构建Substrate链的元数据 - 使用了 scale-info,可以极大地降低客户端解析和维护元数据的负担。
  • Statemint:支持使用Assets模块的资产支付交易手续费 - 如何使用其它链的资产为当前链支付交易费用。

文档和资料

  • 添加了更多 XCM 代码的引用文档 - xcm-format 文档比较抽象,结合实现代码和代码注释可以更好地理解消息格式和传递的机制。
  • 官方存证教程更新至 FRAME v2 - FRAME v2 对开发者更加友好,官方教程正在逐步迁移使用新的API。

技术生态和社区

  • Polkadot Decoded 线上活动将在5月19号和20号举行 - 不仅有最新的Polkadot进展,还会有Substrate技术的深入分享。
  • Substrate 构建者计划里程碑更新 - 这一计划是Parity支持社区团队开发的重要方式,包括构建生态工具、基于Substrate的链等,目前有超过50个团队,涵盖了DeFi、身份、预言机、游戏等多个领域。
  • RelayChain 播客邀请Tether CTO Paolo讨论稳定币创新、合规和如何走向主流 - 讨论了 Tether 部署区块链上的标准,如何在Polkadot生态上线,非美元稳定币的范畴,去中心稳定币的风险等等。
  • 2021 Web3 bootcamp 12支入选团队公布 - 经过为期数月的筛选,最终12支团队成功入选由Parity、Web3基金会、万向区块链合作的训练营。
  • Polkadot 101 入门课程 - 内容包括Polkadot中继链工作原理,什么是平行链、平行线程,链上治理,如何使用 polkadot js SDK,以及Substrate开发框架的基本知识。

跨链协议

  • Kusama runtime代码支持注册平行链 - 平行链的相关的功能正在逐步上线到Kusama网络。
  • 引入 reserve-asset 跨链转账外部交易 - XCM 定义了多种跨链资产转移的方式,其中一种形式是 reserve 资产,例如,chain A 上的 account 1 想转移某个资产到 chain B 上的 account 2账户里,那首先将 account 1的资产转移至 chain A 上的 chain B 代表账户,再发送一条通知消息给 chain B,chain B 将对应的资产分配给 account 2。
  • 新增保留 parachain ID 的外部交易 - ID 是自增的,按获取的顺序分配给交易发送者。
  • 新增 teleport asset 的可调用函数,修改 teleport asset 消息实现,使用 check account 记录转入和转出,维护总的发行量 - 当两条链彼此信任对方的STF(状态转换函数)时,另外一种可用的资产转移形式。
  • 向 Kusama 的 runtime 添加 Auctions 和 Crowdloans 模块 - Auctions 模块包含了创建拍卖、竞拍、取消拍卖等一系列功能,Crowdloans 模块管理了平行链通过众贷的形式筹集插槽竞拍资金的记录和操作流程,这两个模块是平行链上线的关键功能。
  • 新增 XCM 交易来源,以及相应的转换器 - 外部交易的来源不仅可以链上的账户,还可以通过 XCM 指定。

本文首发于:https://zhuanlan.zhihu.com/p/373513627

区块链技术网。

  • 发表于 2021-05-27 12:09
  • 阅读 ( 1637 )
  • 学分 ( 0 )
  • 分类:Polkadot

评论