Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2022_10.md #38

Merged
merged 12 commits into from
Nov 3, 2022
Merged

2022_10.md #38

merged 12 commits into from
Nov 3, 2022

Conversation

arielwang829
Copy link
Contributor

2022.10 - Substrate 技术更新速递

重要提交和发布

  1. WeightV2 的开发更新
    1️⃣ 将 pallet-contracts 适配到 WeightV2
    • pallet-contracts 为了与新重量兼容,需要进行一些更改。
      消除 ContractAccessWeight
      这是一种用于模拟加载合约产生的巨大 PoV 影响的解决方法。现在通过将设置proof_size为已加载合约的大小来替换它。这是一个低估,但整个系统只是为了防止最严重的违规者。无论如何都缺少其他任何东西的收费,并且会在以后出现。
    • Weight 从空运行中返回整个结构
      试运行现在包括,proof_size 以便客户可以使用它来了解 proof_size 事务将消耗多少。
    • 修复合约间调用
      seal_call 并且 seal_instantiate 只允许设置一维权重。最终我们需要添加这些的新版本。但是旧版本也需要修复。当前行为是设置 proof_size 为0那个不是一个好的默认值。它会阻止被调用者做任何有用的事情。此 PR 将其设置 proof_size 为“继承”,这允许它使用总体限制中所有剩余的证明大小。
    • 修复兼容性外在
      在添加 2D 权重时,添加了 *_old_weightcompat extrinsics 以允许仍然解码存储中的 extrinsics。但是,它们也设置 proof_size 为0使它们无用。此 PR 设置了一些合理的默认值,以便它们继续工作。此外,还删除了文档和代码中的重复内容。

2️⃣ 合约: 将 dry-run runtime APIs 适配到 WeightV2

  • 运行时 API 中接受 Weight,以便在 proof_size 空运行时可以通过。
  • 此外,还将参数设为可选,以便运行时可以选择合理的默认值。这样做时,将运行时 api 移动到主 crate 中。由于不再有 RPC 使用它,不需要它在自己的 crate 中。(注意:不兼容 polkadot-v0.9.31 及更高版本的 Substrate )
  1. Beefy 协议的更新
    添加可插入的 BEEFY 荷载构造函数

    • 实例化 BEEFY 客户端,将 MmrRootProvider 作为 PayloadProvider - BEEFY 将对 mmr 根部作为有效载荷进行投票。

    服务:使用 MmrRootProvider 作为自定义 BEEFY 有效荷载提供程序

    • 允许使用自定义的 PayloadProviders 配置投票者,从而支持任何一切作为 BEEFY 的荷载。

    简化 pallet-beefy-mmr 的哈希值

    • 重新使用 sp_runtime::traits::Hash,而不是为 Beefy 定义一个新的 Hasher 特质。
  2. Polkadot 发布 v0.9.30 版本: 本次发布等级为低优先级, 可以再方便时升级。摆脱历史上的深度存储,同时使得自动存储存款能够抵御存款价格的变化。

  3. 添加 DefensiveTruncateFrom

    • 引入 defensive_truncate_from trait函数,在 TryFrom 因长度限制而失败时进行防御性截断。举例:
      use frame_support::{BoundedVec, traits::DefensiveTruncateFrom};
      use sp_runtime::traits::ConstU32;

    let unbound = vec![1, 2, 3];
    let bound = BoundedVec::<u8, ConstU32<2>>::defensive_truncate_from(unbound);

    assert_eq!(bound, vec![1, 2]); // Truncated to two elements.

    • 补充:
      TruncateFrom trait and implementation for BoundedVec+BoundedSlice
      DefensiveTruncateFrom trait
      Debug impl for BoundedSlice
      PartialEq<&'a [T]> impl for BoundedSlice

    • 变化:
      Error type of TryFrom<&'a [T]> for BoundedSlice from () to &[T] analogous to BoundedVec

  4. 移除 CountedStorageMap 上不必要的 Clone 特质边界

    • 这个 PR 简单地删除了 CountedStorageMap 中一些方法上不必要的 Clone 特征界线。
  5. 修复 Weight::is_zero

    • 这里缺少 proof_size。让我们选择 a future proof 的实现。
  6. 注册者: 避免在 provide_judgement 里使用 freebies

    • Gavin Wood 提出在 providence_judgement 中,评估 repatriate_reserved 的返回值,如果失败,就不存储判决书。注册者仍然要支付费用,而没有得到任何补偿,但至少用户不会免费得到一个确认的身份。此 PR 解决了这个问题并测试通过。

设计方案和问题讨论

  1. 重构一个有测试目的分叉网络
  • xlc 提议想从最新高度分叉一个中继链或平行链来进行测试。以太坊有很多非常好的工具链,允许开发人员拥有一个本地分叉 Eth 主网用于测试和实验目的。我们可以改进 try-runtime 以与手动密封集成,这样我们就可以拥有主网的即时分叉,并能够向其提交交易以进行测试。它还应该实现 RPC 方法,以便我们可以查询分叉网络的链上状态。
  • xlc 建议从头开始构建一个新的测试节点会更容易。我们总是可以从 smoldot/substrate 中提取组件,例如 WasmExecutor,以避免过多的重复代码。这是他的设计草案:https ://hackmd.io/VWG4_1rkSAaRl5KtZup_Pw
  1. Polkadot 论坛上有一个关于探索节点存储和 extrinsics 的替代 UI 的讨论
  • 它使用节点的元数据来构建节点的 "pallet "视图,而不是像polkadot.js那样将其分门别类。

文档和资料

  • 第一条平行链成功从 Kusama 迁移到 Polkadot 10 月 3 日,KILT 协议创造了历史,成为第一个完成从 Kusama 中继链到 Polkadot 中继链的完全迁移的平行链。除了标志着一个重要的技术里程碑之外,迁移还代表了平行链从 Kusama 升级到 Polkadot 的第一个实例。

  • Polkadot 路线图综述 其中包括了异步支持、平行线程、XCM v3、框架:Weights V2、治理改革等等。

  • Polkadot blockspace Polkadot联合创始人发布博客文章,分享观点“以区块空间为中心的架构将胜过以区块链为中心的架构”。同时 Gavin 也表示,“区块空间是一个有用的抽象,它为链真正提供的产品提供了一个清晰的概念。Polkadot blockspace 结合了质量、灵活性,以及我们新的 Exotic Scheduling 设施,具有无与伦比的经济效率。”

技术生态和社区

  • Substrate 入门课程第十期正在招募中 由Oneblock 和 Parity 联合出品的 Substrate 区块链应用开发入门课已经开设了9期,获得了近28000名开发者的关注,课程共有3000余位开发者报名参加,获得了大家的一致好评。

  • 入场 Web3 他们后悔了吗?加密领域多赛道初创者漫谈 第四期“黑客松之后,他们去哪儿了”专访直击开发者关切的 Web3 发展前景问题,OneBlock 邀请到 Parallel、Web3Go、Web3Games、NonceGeek、Melody、Echodao 六位初创项目创始人或核心成员,结合他们的 Web3er 之旅的实践经历,展开深度漫谈。

跨链协议

XCM runtime api

  • 添加 xcm-runtime-api 定义运行时 api 以检索有用的运行时相关 xcm 数据的包。目前,该特征包含:
    加权消息的函数weight_message
    将 ML 转换为帐户的功能convert_location
    计算为一定重量和资产支付的费用的函数:calculate_concrete_asset_fee
    预计 XCM 中权重的变化我创建了一个VersionedWeight枚举,以便 API 不会在发生此变化后中断。另一种选择是删除它,并在 XCM V3 合并后简单地增加 API 版本。

@AmadeusGB AmadeusGB merged commit 177dab5 into substrate-asia:master Nov 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants