#ssz #ewasm #wasm #fixed-length

ssz-json

一个将 JSON 序列化为 ssz 的库

1 个不稳定版本

0.0.2 2019年6月7日

#6 in #ewasm


ssz-cli 中使用

Apache-2.0 协议

10KB
179 行代码(不含注释)

ssz-json

使用 JSON 的人类可读的 ssz 格式。

格式

该格式是 JSON 的子集,遵循大多数约定。两个最大的差异是在数字末尾使用字符串附加整型类型,以及在第一个元素中声明类型数组(列表/向量)。

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

示例

{
	"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

依赖

~1.9–2.9MB
~57K SLoC