查询Polkadot js的Substrate存储密钥的正确方法是什么?

时间:2019-11-25 14:55:29

标签: node.js rpc substrate polkadot-js

我正在尝试从Substrate存储中拉出一个大型数组,并且通过node.js查询时,我得到“无法解码索引0源上的Vec太大”。

因此,切换到curl和JSON RPC接口,我想检查是否可以在node.js中正确生成哈希,然后使用它们直接通过RPC查询。尝试

const { xxhashAsHex, blake2AsHex } = require('@polkadot/util-crypto');
const { stringToU8a } = require('@polkadot/util');
...
console.log(xxhashAsHex(stringToU8a("Sudo key"), 128));

(尝试关注Shawn's RPC page),我得到:

0x845f1811116060262abe72f228571eca

但是肖恩列出的答案是:

0x50a63a871aced22e88ee6466fe5aa5d9

在JSON RPC调用中使用Shawn的值可以得到预期的结果:

curl -H "Content-Type: application/json" -d 
  '{"id":1,"jsonrpc":"2.0","method":"state_getStorage",
    "params":["0x50a63a871aced22e88ee6466fe5aa5d9"]}'
    http://127.0.0.1:9933/ 
> {"jsonrpc":"2.0",
 "result":"0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d",
  "id":1}

如果我直接查询sudo.key,我确实会得到预期的答案:

console.log((await api.query.sudo.key()).toHex());
> 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d

那有什么用呢?

1 个答案:

答案 0 :(得分:1)

这已由Jaco在聊天中解决。

我需要查询xxhashAsHex(stringToU8a("Sudo Key"), 128)(注意大写字母K)。