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 block
和final 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 原创组文章, 作者彭亚伦
未经许可, 请勿转载.
版权声明: 本文为 InfoQ 作者【彭亚伦】的原创文章。
原文链接:【http://xie.infoq.cn/article/0abbd911f43779c010f893cf7】。文章转载请联系作者。
评论