写点什么

Substrate 及波卡一周技术更新速递 20220425 - 20220501

作者:彭亚伦
  • 2022 年 6 月 27 日
  • 本文字数:1314 字

    阅读完需:约 4 分钟

Substrate及波卡一周技术更新速递 20220425 - 20220501

本周是疯狂输出的一周, 大量更新和发布:

Nomination Pools 完成, 并上线 westend 测试

在上周的 staking slash 算法作为预备更新后, Nomination Pool 模块经过 2 个月的开发, 终于在本周基本完成.


Nomination Pool是新的提名机制, 现行的"质押/提名"方式主要是1对多的方式, 即单个提名者可以选择多达 16 名验证者候选人; 而Nomination Pool则使得用户可以发起一个"提名池", 其它用户则可以选择加入这个提名池, 这个提名池一次只能提名一个验证者候选人; 这样相当于多了" 多对一"的提名方式.


但同一个用户可以加入多个 Nomination Pool, 也相当于间接实现了"多对多"的形式. Nomination Pool 的主要作用是扩展了选举的多样性, 以提高网络安全性.


Nomination Pool的实现机制比较复杂, 因此应该会首先在测试网 westend 先上线, 然后再部署到 Kusama, 最后才是 Polkadot. 这种方式的出现, 无疑为整个波卡的经济生态增加了多样性.

Uniques Pallet 增加 NFT 锁定功能

Uniques Pallet 是波卡生态 NFT 的基础模块, 而波卡的 NFT 标准 RMRK 中要求当 NFT 进入市场上销售时, 必须要有一个locking锁定机制: 也就是说进入rmrk-market的 NFT 必须被锁定不能被任意修改.


由于 RMRK 模块目前是从uniques模块扩展而来, 所以用户可以通过 Uniques 中 Call 来绕开 RMRK 的锁定; 因此Unique Pallet 中就添加了一个Locker的 trait, 里面有一个should_check_lock方法返回一个 bool 值来表示是否锁定, 同时为()实现了该 trait 并对此类型返回false, 这样就实现默认情况下没有锁定.

通配符 RPC 订阅设置为unsafe

今后, 使用通配符订阅全部链上存储更新的 RPC API 将被设置为 unsafe, 即在订阅链上存储更新时的 key 参数设置为 None 时, 客户端的订阅将会被拒绝, 同时会被服务节点告知这是一个不安全的 RPC 方式, 除非节点运行时开启了 --rpc-methods=unsafe 选项.


本次更新的原因是有开发者发现在特定条件下使用通配符订阅链上更新时, 会有一定概率出现节点数据已经更新但没有正确返回新数据到客户端的情况; 分析后发现是因为best blockfinal block 数据差异加上异步订阅导致的数据滞后造成的.


经过一番讨论, 发现要完全实现期望订阅完全数据一致性是很困难的, CAP 原则 rules! 最终为了保险起见, 决定将该 RPC 设置为 unsafe.

客户端增加 chain-info 子命令

新增一个chain-info 子命令, 用于打印当前存储在数据库中的元数据, 包括:


  • best_hash 当前最佳区块哈希

  • best_number 当前最佳区块高度

  • genesis_hash 创世哈希

  • finalized_hash当前最终确认块哈希

  • finalized_number当前最终确认块高度


使用方式为


./binary chain-info --base-path=PATH_TO_DB --chain=CHAIN --pruning=PRUNING


得到类似如下的结果:


{"best_hash":"0xbfc95e0d9864d8fe7a2cc2fd2af298d68fb5f9fe6bad8529545ec981ba677efa","best_number":10,"genesis_hash":"0x3a1beb9351d4d004e0c19f92dac659c2a356e1c0dcd4f38a93ee02dc1acd98f5","finalized_hash":"0x3a1beb9351d4d004e0c19f92dac659c2a356e1c0dcd4f38a93ee02dc1acd98f5","finalized_number":0,"finalized_state":["0x3a1beb9351d4d004e0c19f92dac659c2a356e1c0dcd4f38a93ee02dc1acd98f5",0]}


该子命令可以离线使用, 即无需节点运行.




本文为 SEP Creation 原创组文章, 作者彭亚伦

永久链接地址


未经许可, 请勿转载.

发布于: 刚刚阅读数: 3
用户头像

彭亚伦

关注

A Rustacean and Substrate Evangelist 2021.01.25 加入

A Rustacean, and Substrate Evangelist, member of CRVA (RISC-V)

评论

发布
暂无评论
Substrate及波卡一周技术更新速递 20220425 - 20220501_Substrate_彭亚伦_InfoQ写作社区