2个版本

0.1.2 2019年6月11日
0.1.1 2019年6月10日

#5 in #ewasm

Apache-2.0

18KB
463

sszt

ssz的易读序列化。

格式

sszt 引擎被编写为用于递归的 SsztValue 枚举的 Serde 反序列化器,并且应该很容易修改以支持 Serde 支持的大多数格式。

目前支持两种主要格式

  • JSON
  • YAML

与 JSON / YAML 规范的最大差异是在数字末尾使用字符串附加整数类型,并在第一个元素中声明类型数组(列表/向量)。

类型 表示
null null
bool true | false
number "N:{u8|u16|u32|u64|u128|u256}"
string "string"
vector (固定长度) ["vector", "0:u8", "1:u8"]
list (可变长度) ["list", "0:u8", "1:u8"]
object { "key1": "123:u32", "key2": ["vector", "456:u32"] }

示例

{
	"new_messages": [
		"list",
		{
			"timestamp": "1:u64",
			"message": "0:u256"
		},
		{
			"timestamp": "2:u64",
			"message": "454086624460063511464984254936031011189294057512315937409637584344757371137:u256"
		}
	],
	"state": {
		"messages": ["list"]
	}
}

ssz编码: 5c0000005000000001000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000010101010101010101010101010101010101010101010101010101010101010400000000000000

--

{
	"messages": [
		"list",
		{
			"timestamp": "1:u64",
			"message": "0:u256"
		},
		{
			"timestamp": "2:u64",
			"message": "454086624460063511464984254936031011189294057512315937409637584344757371137:u256"
		}

	]
}

ssz编码: 5c0000005000000001000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000001010101010101010101010101010101010101010101010101010101010101010400000000000000

--

{
	"fixed": [
		"vector",
		["vector", "0:u8"],
		["vector", "1:u8"],
		["vector", "2:u8"],
		["vector", "3:u8"],
		["vector", "4:u8"]
	],
	"other": {
		"a": {
			"b": {
				"c": {
					"d": [
						"vector",
						"16:u16"
					]
				}
			}
		},
		"b": "32:u32"
	}
}

ssz编码: 0001020304100020000000

维护者

许可证

Apache 2.0

依赖

~2.5–3.5MB
~71K SLoC