#scale #decoding #codec #parity

无std scale-info-legacy

创建类型信息,用于解码基于Substrate的链的历史数据

4个版本 (2个重大更改)

0.2.0 2024年8月9日
0.1.1 2024年7月30日
0.1.0 2024年5月31日
0.0.1 2024年3月14日

#984 in 编码

Download history 136/week @ 2024-05-27 13/week @ 2024-06-03 6/week @ 2024-06-10 122/week @ 2024-07-29

每月122次下载

Apache-2.0

130KB
2.5K SLoC

scale-info-legacy

本包提供一组相互关联的类型。最终目标是能够定义描述历史Substrate类型如何进行SCALE编码所需的所有必要类型信息。这里公开的主要类型如下

  • TypeRegistry:最低级别的类型,可以填充类型信息(通过TypeRegistry::insert())并查询以将某些类型名称解析为相关信息(通过TypeRegistry::resolve_type())。
  • TypeRegistrySet:一组上述类型,通过遍历内部类型注册表(通过TypeRegistrySet::resolve_type())来解析类型,直到找到相关信息(或者找不到)。这允许我们以不同的方式组合类型注册表,以改变我们解析的方式。
  • ChainTypeRegistry:此类型通过反序列化描述给定链上所有我们需要了解的类型的JSON(或类似)数据来构建。这里的主要功能是ChainTypeRegistry::for_spec_version(),它返回用于解析给定规范版本的TypeRegistrySet

我们还暴露了一个 InsertName,它通过解析类似 Vec<T> 的类型名从字符串中构建,并在 TypeRegistry::insert() 中用于插入类型,然后是 LookupName,它通过解析类似 Vec<T>u8; 32(bool, u32) 的类型名构建,并通过 TypeRegistry::resolve_type() 和类似的函数来查找相应的类型信息。最后,TypeShape 是一个枚举,用于描述通过 TypeRegistry::insert() 插入的类型形状。这个crate,就像 scale-info 一样,可以与像

  • scale-decode 一起使用,将基于此类型信息的SCALE编码的字节解码成自定义类型。
  • scale-encode 将基于此类型信息的自定义类型编码成字节。
  • scale-value 将从 Value 类型(类似于 serde_jsonValue 类型)进行SCALE编码或解码。

依赖项

~2–3MB
~51K SLoC