Substrate 源码追新导读: 修复 BEEFY 的 gossip 引擎内存泄漏问题, 智能合约删除队列优化
20220620 - 20220626
新增staking-miner info
命令
staking-miner 是 substrate 提供的一个工具, 用来验证和计算 substrate 链的 NPoS 选举, 以便做出优化, 其作用是不断监听pallet-election-provider-multi-phase
, 來提交 NPoS 的选举解决方案. 关于 Substrate 的选举流程和其算法方式, 我们后续会发专文来详细说明. staking-miner 通常可以使用 cargo build --release --locked --package staking-miner
命令来生成相关文件, 然后通过docker build -t staking-miner -f scripts/ci/dockerfiles/staking-miner/staking-miner_injected.Dockerfile target/release
命令来生成注入, 最后通过staking-miner
命令来运行.
本次更新提供了一个 info 子命令, 用于打印当前的 runtime 和staking-miner
支持版本.
详情: https://github.com/paritytech/polkadot/pull/5577
Contract 优化: 减少待删除储存项队列大小
Pallet Contracts 中, 对于删除的 contract 会放入DeletionQueue
中去,当前对于该队列设置为可以有157977
项, 其中每个项目有 128byte, 总计 19Mib 大小. Parity 开发者们认为, 从删除一个 contract 的行为似乎不太常见, 因此将其調整为 128 项, 这样该队列的大小就缩减到 16KiB 了.
详情: https://github.com/paritytech/substrate/pull/11696
修复 BEEFY 的 gossip 引擎内存泄漏问题
之前 BEEFY 协议(波卡中用于同以太坊等非 substrate 构建的链跨链协议)的 gossip 广播引擎存在内存泄漏问题, 具体是当 BEEFY 共识算法进入 client 阶段的时候, runtime 并没有实际使用 BEEFY, 因此会导致内存泄漏. 本次更新对其做了修复. 但由于部分平行链现有代码已经在运行, 因此平行链可以自行选择是否对此升级.
详情: https://github.com/paritytech/substrate/pull/11694
pallet-beefy-mmr 增加新的 API
pallet-beefy-mmr 是 pallet-beefy 的协同模块, 用于非 substrate 链同波卡生态的跨链; 本次更新增加了一些 hook 函数, 并实现了pallet-beefy::OnNewValidatorSet
事件用于通知 BEEFY 的验证者, 以及authority_set_proof
用于返回当前的 BEEFY authority, next_authority_set_proof
返回下一个等等.同时在测试网 Rococo 中添加了上述 API 供测试.
详情: https://github.com/paritytech/substrate/pull/11406
XCM 执行器增加含有权重费用的事件
当前 XCM 执行器执行完 XCM 指令后, 触发的结果事件是没有包含权重费用的; 本次更新将其添加进去; 此后, 无论 XCM 指令执行是失败还是成功, 触发的事件都会记录究竟花费了多少权重费用; 开发者后续可以根据其结果来做相应的统计和优化.
详情: https://github.com/paritytech/cumulus/pull/1286
本文为 SEP Creation 原创组文章, 作者彭亚伦
未经许可, 请勿转载.
版权声明: 本文为 InfoQ 作者【彭亚伦】的原创文章。
原文链接:【http://xie.infoq.cn/article/e8ee894b84a452f034277998c】。文章转载请联系作者。
评论