问题标签 [polkadot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
82 浏览

rust - 如何在 Rust 中对 Substrate 链上的用户进行身份验证?

我想验证潜在用户是否实际上是 Substrate 链上的用户。为此,我正在寻找可以让我执行此任务的 API。在阅读教程时,我使用ensure_signed了多次。所以,我正在寻找那些线上的东西。

到目前为止,我的意图是最受欢迎的建议如下:

第三方服务(完全不同且在底层链之外)执行以下操作:

  1. 数字签名交易
  2. 如果 1 成功,我将继续我的其他逻辑和步骤,否则我将停止。

我的印象是只有一种执行身份验证的方法,那就是数字签名交易。

0 投票
1 回答
72 浏览

rust -

0 投票
1 回答
336 浏览

rust - 如何在 Substrate 链中存储哈希?

我的目标是将哈希值存储在底层链中。我已经在下面的代码中声明了它的存储和模块:

只要我u64在该行中使用,该代码就可以正常工作,但是当我将其更改为时收到错误消息str

Value: map str => Option<T::AccountId>;

错误是:

我尝试阅读它,但找不到任何其他存储字符串的方法。虽然,我的字符串将是固定大小的,因为它始终是 SHA256。

0 投票
1 回答
330 浏览

substrate - 如何使用 RPC 调用从 Substrate 读取哈希值并获取相应的 AccountId?

我有一个基板节点启动并运行,存储项目为:value(Hash): Option<AccountId>。我的目标是提供哈希值(例如,0x0000000000000000000000000000000000000000000000000000000000000001并获得相应的帐户 ID 作为回报)。

当我通过 UI 执行此操作时,我得到以下信息: 在此处输入图像描述

我想通过 RPC 调用执行相同的任务。看完这篇博文后,我意识到我的情况是阅读StorageMaps,所以我开始运行一些查询。如果我没记错的话,模块是Substratekitties,存储项是value。映射将valueAccountId

我打了前两个电话:

但我对第三次调用编码感到困惑:编码文件 sha256 哈希。怎么做?运行util_crypto.blake2AsHex("0000000000000000000000000000000000000000000000000000000000000001", 256) "0x16821de47d8b3b0fa4ca43e5db1028d75207cbd1c379a4738144972b105355aa" 将不起作用,也不起作用。

我的意思是说,我在执行此查询时得到“空”值。这是存储结构:

更新:我的文字查询:

十六进制查询:

0 投票
1 回答
1281 浏览

rust - 如何使用 Rust 在 Substrate 中对帐户 ID 的十六进制字符串表示进行编码?

给定一个十六进制表示: ,我们可以使用 JavaScript0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d获取它表示的 AccountId 。keyring.encodeAddress()但是,Rust 中对应的函数是什么?

AccountId 是Substrate用户地址的地址。例如,5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY是来自 Substrate 开发链的 Alice 的帐户 ID。

0 投票
1 回答
725 浏览

rust - 如何使用 Substrate API Client 写入 Substrate 的存储?

我的目标是使用substrate-api-client在 Substrate 的存储映射中写入一个值。我在 Substrate 链中定义的存储映射如下所示:

上述存储图位于:

预期的结果是成功地在 Substrate 的存储上写入一个值。正如我在前端所做的那样,成功: Substrate 中添加的自定义存储模块的前端

但是,在使用substrate-api-client来执行相同的任务时,我收到以下错误:

我试图在substrate-api-client. 这就是我编写外在的方式:

这是重现错误所需的最少代码:

上面的代码位于文件中:example_writing_file_hash.rs树是:

而完整的代码库可在此处获得。

更新 1

根据user13207835回答,我尝试将我的内容声明为哈希但失败了。PS我是Rust,Substrate的初学者。

得到错误:

我理解这个错误,但我不知道如何按照Hash答案中的建议声明上述值。

0 投票
1 回答
931 浏览

blockchain - Substrate 中 AccountId32 和 AccountId 之间的转换

我有一个要求,我需要传递一些字节,我需要在 Substrate 2.0 中从中创建一个 accountId。

有没有办法在运行时(FRAME)之间AccountId32进行转换?<T as frame_system::Trait>::AccountId或者创建一个<T as frame_system::Trait>::AccountIdfrom bytes 的实例?

谢谢

0 投票
1 回答
197 浏览

parity - 在 Substrate 中作为参数传递时如何解码和匹配调用

我有一个接受调用的方法(类似于 sudo 或恢复托盘),我想在调度它之前对调用运行一些验证。验证主要围绕限制我们可以通过此方法调用的方法。

这是我的示例代码:

在这个例子中,我只希望它在call调用我的test()函数时成功。

不幸的是,我收到关于类型不匹配的错误,任何帮助将不胜感激,谢谢。

我得到的错误是:

0 投票
1 回答
105 浏览

rust - 在 `RawOrigin:Signed(who)` 上调用 `.into()` 时会做什么以及上下文如何影响它?

我见过.into()用过几次就好了frame_system::RawOrigin::Signed(who).into()。据我了解,它进行了一些转换,但into 的文档并没有明确(对我而言)如何知道它正在转换为什么。对于上下文,我感兴趣的一个特定示例sudo_as()来自sudo 模块。

0 投票
1 回答
276 浏览

substrate - 无法部署合约(Substrate)系统。ExtrinsicFailed 其他

我从 Ink 存储库 (erc20) 下载了智能合约并构建它,并构建元数据。之后我下载了它,当我尝试部署时,出现这样的错误:更改图像

来自浏览器控制台的日志

sendExtrinsic:: {"args":["10.000M Unit","500,000","0x3e1d2b076ae57e296098e162294676e3ff41baa7bc0b78c0b8a826393775169d","0x5ebd88d600000000000000000000000000000000"],"callIndex":"0x1103","method":"instantiate","section":"contracts "} main.a12dd3e8.js:351 makeExtrinsicCall: extrinsic :: 0xad0284ff8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a480142424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242760008001103130000e8890423c78a82841e003e1d2b076ae57e296098e162294676e3ff41baa7bc0b78c0b8a826393775169d505ebd88d600000000000000000000000000000000 main.a12dd3e8.js:351 makeExtrinsicCall: updated status :: {"events":[],"status":{"就绪”:null}} main.a12dd3e8.js:351 makeExtrinsicCall:更新状态 :: {“事件”:[{“阶段”:{“应用外部”:2},“事件”:{“索引”:“0x0c06” ,"data":[1375382416168]},"topics":[]},{"phase":{"ApplyExtrinsic":2},"event":{"index":"0x0001","data":[{ "其他":null},{"weight":500000,"class":"Normal","paysFee":"Yes"}]},"topics":[]}],"status":{"InBlock" :"0x2deed44e09a1552c2b1594515d01e64a5f3753085b34a7dbd889ed5036c873e6"}}"data":[1375382416168]},"topics":[]},{"phase":{"ApplyExtrinsic":2},"event":{"index":"0x0001","data":[{"其他":null},{"weight":500000,"class":"Normal","paysFee":"Yes"}]},"topics":[]}],"status":{"InBlock": “0x2deed44e09a1552c2b1594515d01e64a5f3753085b34a7dbd889ed5036c873e6”}}"data":[1375382416168]},"topics":[]},{"phase":{"ApplyExtrinsic":2},"event":{"index":"0x0001","data":[{"其他":null},{"weight":500000,"class":"Normal","paysFee":"Yes"}]},"topics":[]}],"status":{"InBlock": “0x2deed44e09a1552c2b1594515d01e64a5f3753085b34a7dbd889ed5036c873e6”}}0x2deed44e09a1552c2b1594515d01e64a5f3753085b34a7dbd889ed5036c873e6"}}0x2deed44e09a1552c2b1594515d01e64a5f3753085b34a7dbd889ed5036c873e6"}}