SCALE 解码 RPC getKeysPaged

SCALE decode RPC getKeysPaged

背景: Polkadot 应用程序的前端允许我们在没有任何选项的情况下调用 claimer.lookuplink。 returns APN 和相关帐户的列表。 我们一直在构建的 substrate-frontend-template 要求我们包含一个选项,该选项不允许我们获取所有 APN 和帐户。作为解决方法,我们尝试进行直接 RPC 调用,但我们无法弄清楚如何解码响应。

我相信响应是 SCALE 编码的。下面是一篇博客 post,讨论了执行此操作的一些复杂问题: https://www.shawntabrizi.com/substrate/querying-substrate-storage-via-rpc/

有关我们目前正在尝试的具体内容,您可以查看此文件: https://github.com/Greenetwork/BLX_frontend_new/blob/maprefresh/src/MapRefresh.js#L21 Polkadot 前端正在解码对 getKeysPaged 调用的响应,但我还没有在我们的 https://github.com/Greenetwork/BLX_frontend_new

中找到解码它的方法

来自链的示例响应:

[
  "0x2df95c7f7f0d67daa549602785d7beae891ad457bf4da54990fa84a2acb148a20cf935632272b1131281c8c417ea1d513500000000000000000000000000000000000000000000000000000000000000",
  "0x2df95c7f7f0d67daa549602785d7beae891ad457bf4da54990fa84a2acb148a21640c3ff7716f6e3d046d710919caccb3434343735380000000000000000000000000000000000000000000000000000",
  "0x2df95c7f7f0d67daa549602785d7beae891ad457bf4da54990fa84a2acb148a229bde7c5407d4c0e698d76543e46e51c3334353039383600000000000000000000000000000000000000000000000000"
]

Polkadot js 应用程序前端的解码结果

[
  [
    [
      0x3500000000000000000000000000000000000000000000000000000000000000
    ],
    5Ec3KvnQdwYfLDgZB6JujjatVkHKbzMPQP5YojDAmia8YBuQ
  ],
  [
    [
      0x3434343735380000000000000000000000000000000000000000000000000000
    ],
    5EE6fRKB1Drd8cZAVHGuZJHpmQr7bV66Mz2VaXEPJCnJSChw
  ],
  [
    [
      0x3334353039383600000000000000000000000000000000000000000000000000
    ],
    5Ew5ExAtUSBEMw96ZMMvS5TsyR7RQfwuve6zpebVYJQDetYZ
  ]
]

需要解码的前端模板响应示例:

进一步阅读 https://www.shawntabrizi.com/substrate/transparent-keys-in-substrate/

RPC 响应:

0x2df95c7f7f0d67daa549602785d7beae891ad457bf4da54990fa84a2acb148a2a0e98c1569443b450c93febfe626c7683331373035330000000000000000000000000000000000000000000000000000
---------------------- storage prefix key ------------------------+++++++ blake2 128 hash ++++++++------------------------ account id ----------------------------

但是我们的 account id 是 Address32 类型,所以我们需要再进行一次查找并将帐户 ID 反馈回 claimer.lookup