时间:2023-07-12|浏览:219
Hi,所有关注Substrate技术的开发者们~
Substrate技术与生态的6月最新动态来啦,本篇为Substrate第九次技术月报(2021年06月),enjoy!
GRANDPA:加强了grandpagossip的限制-可以减少当前网络中的相关消息,并且让gossip的机制更加的公平。
将SelectChain从同步变成异步接口-从而在接口实现中可以异步地读取一些子系统的信息。
存储项的remove_all等API添加了删除元素数量的限制-当集合类元素数量很多时,可以通过给定这一限制,分批次删除数据,影响的API有remove_all,remove_prefix,clear_prefix,kill_prefix。
增大wasm字节码可获取的内存大小限制至32MB-Substrate实现了freeing-bump内存分配器,可以动态的在一定范围分配内存,最新修改为32MB,用以解决staking模块占用内存过大的问题。
强制FRAMEv2中可调用函数需要声明为pub-从而更加符合rust语法。
为编译后二进制包提供的try-runtime命令添加了execute-block子命令-用户可以使用此命令在上一个区块的runtime状态的基础上执行提供的区块。
允许#[pallet::constant]宏作用于有多个接口约束的关联类型-即支持以下语法,
#[pallet::constant]
typeU:Get<u32>+From<u16>;
内置的balances模块新增transfer_all可调用函数-用来将所有的可用余额转出至另外一个账户。
允许对存储项的前缀即prefix重命名-默认使用的存储项定义时的字符串字面量,新标签#[pallet::storage_prefix="CustomName"]可以将prefix自定义。
抽象了NFT所需的一系列接口,uniquepallet实现了这些接口-包括Inspect接口可以读取NFT的属性信息,Mutate接口提供了铸造、销毁、设置NFT属性等的写操作。
wasm的执行引擎wasmtime升级至0.27-新版的wasmtime使用了新一代代码生成后端,效率有很大的提升,也修复了一些bug。
在chainspec中引入一个新的字段code_substitute-可以此字段的值替换链上的wasm,通常是链上wasm运行出现问题之后的临时解决方案。
同步区块时引入了FastSync模式-可以极大加快区块同步的速度,之前需要下载和验证每一个区块,使用FastSync之后,不再需要执行每个区块的验证,只需要额外下载最新链上状态的证明。
将pallet::hooks和pallet::call宏所对应的部分变为可选的。
定义了NamedReservableCurrency接口,并在balances模块实现了此接口-可以在对资产进行reserve时给定名字,更好的区分是哪个模块对资产进行的reserve操作。
为支持StorageChain添加了Runtime的模块transaction-storage-每个交易会被转换成trie包含了256个字节,transaction-storage模块保存了这些trie的root,并且随机选择上一个区块的一笔交易对应的字节进行验证。
实现了新的存储APICountedStorageMap-它在存储键值对的同时,可以记录当前map中元素的个数。
讨论:使用索引序列处理存储单元的前缀-存储项的命名位于代码中,但是和数据库所存储的键密切相关,目前在代码重构时很难去改变存储项名称,因为会影响数据库的存储,使用索引可以减轻这一问题,不过维护索引也很麻烦,目前的结果是引入自定义存储别名,而不是使用索引。
将Wasmer集成到Substrate沙盒环境-目前Substrate的runtime执行支持wasmi和wasmtime,wasmtime执行速度更快,但是只支持可信代码即runtime,鉴于安全,Substrate的ink智能合约还是使用解释执行的wasmi,引入wasmer这种更适合区块链执行环境的编译和执行工具,可以在未来有更多的选项,并通过实际的测试选择更高效的wasm执行方式。
TransactionPool技术文档-涵盖了Substrate交易池的作用、设计原理和数据结构的解析。
视频:使用try-runtime测试存储迁移和runtime升级。
视频:SubstrateforSolidityDevelopers-AnIntroduction。
视频:WASMSmartContracts介绍。
删除Polkadotruntime里的randomnesscollectiveflip模块-此PR详细的列出了如何在删除模块的同时进行存储的清理。
PolkadotBuildathonIndia介绍。
Web3OpenGrands赞助开发Zeroknowledgeplonk模块。
PolkadotHackathon第二届(夏季)黑客松比赛报名倒计时1天!
Polkadot开发指南文档:ChainSelection-总结了fork-choice和chainselection的设计原理、实现描述。
实现了Polkadot协议中的争议处理子系统-在争议出现时,允许验证人恢复平行链候选区块数据,验证候选区块,并对争议给出投票。
向Westend添加Westmint为受信任的Teleport平行链-当两条链彼此信任对方的runtime逻辑时,可以添加对方为允许Teleport的源,进而可以通过xcm的TeleportAssets消息来传送资产。