Как правильно запросить у Polkadot js ключ хранилища субстрата?

Я пытаюсь извлечь большой массив из хранилища субстратов, и при запросе через node.js я получаю сообщение "Невозможно декодировать Vec по индексу 0. Источник слишком велик".

Итак, переключившись на 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));

(пытаясь следить за страницей RPC Шона), я получаю:

0x845f1811116060262abe72f228571eca

Но Шон перечисляет ответ как:

0x50a63a871aced22e88ee6466fe5aa5d9

Использование значения Шона в вызове json RPC дает ожидаемый результат:

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 ответ

Это было решено в чате Жако.

Мне нужно было запросить xxhashAsHex(stringToU8a("Sudo Key"), 128) (обратите внимание на заглавную букву K).

Другие вопросы по тегам