2

我正在使用view_stateRPC 方法并通过 JavaScript 解析响应。但是,似乎大多数返回的结果都非常有用。是否有清晰可打印文本的示例或其他解析数据的方法?

const contract = await this.props.near.connection.provider.sendJsonRpc('query', { request_type: 'view_state', finality: 'final', account_id: 'blazenet', prefix_base64: '' });

let contractParsed = contract.values.map((data, i) => {
  return { 'key': atob(data.key).replace(/[^\x20-\x7E]/g, ""), 'val': atob(data.value).replace(/[^\x20-\x7E]/g, "") };
});

解析响应:

0: {key: "STATE", val: "blaze.betanet!as+vGj"JV0hxX_/b@zHQXz{Q?!p^/b@zHduiukuv"}
1: {key: "ui ]qU2s7AG5|c7`-?", val: ""}
2: {key: "ui bJ+e,-,[y]CsKUB", val: ""}
3: {key: "ui *EDfC*,#,/", val: ""}
4: {key: "ui ZB\[`VR\/a", val: ""}
5: {key: "ui _|XW==. 0M$l", val: ""}
6: {key: "ui \;>bR?{Ut7/Q", val: ""}
7: {key: "uk", val: " ZB\[`VR\/a"}
8: {key: "uk", val: " \;>bR?{Ut7/Q"}
9: {key: "uk", val: " ]qU2s7AG5|c7`-?"}
10: {key: "uk", val: " *EDfC*,#,/"}
11: {key: "uk", val: " _|XW==. 0M$l"}
12: {key: "uk", val: " bJ+e,-,[y]CsKUB"}
13: {key: "uv", val: "i\s1"}
14: {key: "uv", val: "z-:HYc:"}
15: {key: "uv", val: "Z|"}
16: {key: "uv", val: "Vk/"}
17: {key: "uv", val: "ESQlVA"}
18: {key: "uv", val: "`>(u{|{"}
4

1 回答 1

4

两者keyvalue都以 base64 编码。

Keys and Values 可以用 序列化Borsh,为了反序列化它,您需要知道每个键和值的模式。阅读更多关于https://borsh.io

key 下的 valueSTATE序列化了合约的主要结构。

于 2020-06-08T16:37:44.700 回答