问题标签 [substrate]
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.
substrate - Parity Substrate - 区块尚未最终确定
问题
我正在使用自定义帐户和密钥运行具有 2 个本地节点的私有链。
对等发现有效,但区块尚未最终确定。
描述
在chain_spec.rs
:
从Armstrong、Armstrong//stash、Aldrin、Aldrin//stash种子中创建一组新帐户,方法是在 bin/node 中完成:
AccountPublic::from(sp_core::Public::Pair::from_string(seed)).into_account()
将初始权限设置为控制帐户Armstrong和Aldrin。
为初始权限创建
SessionKeys
。BalancesConfig
: 为每个账户赋予一些余额。SessionConfig
: 使用SessionKeys
我刚刚创建的。StakingConfig
: 设置stakers
为 4-tuple 包含(stash, controlller, amount, StakerStatus::Validator)
这会产生一个构建规范,如:
托盘会话
托盘放样
Polkadot.js 用户界面
- Peer 显示在 Explorer -> Node info 中:
- 我可以将创建的帐户添加到通讯簿,但它们没有显示在帐户中:
- Stash 帐户在 Stacking 屏幕中显示为验证器,但 Account 操作会显示一条
No funds staked yet. Bond funds to validate or nominate a validator
消息:
substrate - 如何将 Polkadot-js API 与 Substrate 节点模板一起使用?
在 Substrate 生态系统中,通常通过分叉Substrate 节点模板来开始编写新的区块链节点。用户界面(例如Apps和front-end-template)有几个选项,它们都基于相同的底层Polkadot-JS API。
某些版本的 API 可以在没有任何自定义配置的情况下与某些版本的节点模板一起使用,但通常必须为 API 提供有关节点使用的类型的信息。提供类型的过程记录在https://polkadot.js.org/api/start/types.extend.html#impact-on-extrinsics但我需要提供哪些类型?
rust - 如何在 Rust 中对 Substrate 链上的用户进行身份验证?
我想验证潜在用户是否实际上是 Substrate 链上的用户。为此,我正在寻找可以让我执行此任务的 API。在阅读教程时,我使用ensure_signed
了多次。所以,我正在寻找那些线上的东西。
到目前为止,我的意图是最受欢迎的建议如下:
第三方服务(完全不同且在底层链之外)执行以下操作:
- 数字签名交易
- 如果 1 成功,我将继续我的其他逻辑和步骤,否则我将停止。
我的印象是只有一种执行身份验证的方法,那就是数字签名交易。
rust - 在生锈测试中从底物事件中获取有效负载
我已经成功创建了我的第一个基板项目,并且构建的托盘也可以正常工作。现在我想为流程和提供的功能创建测试。
我的流程是生成一个随机散列并将这个散列存储到交易的发送者
到目前为止效果很好,当我现在想用书面测试测试流程时,我想检查 Created 事件中发出的哈希是否也在 HashOwner Map 中分配。为此,我需要从事件中获取价值。
这是我的问题:D 我不是 rust 专业人士,我发现的所有示例都期望在这样的事件中发出所有值:
在调试我的书面测试时:
我在 VSCode 中看到这些值可用:
但我不知道如何在变量中获取这个哈希......也许这只是一个衬里......但我的生锈知识太少了:D
感谢您的帮助
substrate - 在外部执行期间从 Substrate 运行时访问链 ID 和创世哈希
我正在使用 Substrate 的最新稳定版pre-v2.0-3e65111
,我想在处理外部数据时从 Substrate 运行时访问链 ID 或创世哈希(我正在接受签名的有效负载并试图确保有效负载针对正确的链)。是否可以访问它们?(我知道我可以用 polkadot-js 做到这一点)我看到了 traitCheckGenesis
但不知道如何使用它来生成哈希?(new
导致空向量)。
substrate - 我们如何在活动中使用主题?
我试图在存放具有特定主题的事件时使用deposit_event_indexed
方法,以便我可以使用类似 polkadot.js 的api.query.system.eventTopics来获取索引事件。
但是,我收到以下错误
我对 rust 也很陌生,所以根据我的理解,根据文档,这种方法是模块特性的一部分。请帮忙!
rust - 如何在 Substrate 链中存储哈希?
我的目标是将哈希值存储在底层链中。我已经在下面的代码中声明了它的存储和模块:
只要我u64
在该行中使用,该代码就可以正常工作,但是当我将其更改为时收到错误消息str
:
Value: map str => Option<T::AccountId>;
错误是:
我尝试阅读它,但找不到任何其他存储字符串的方法。虽然,我的字符串将是固定大小的,因为它始终是 SHA256。
substrate - 如何使用 RPC 调用从 Substrate 读取哈希值并获取相应的 AccountId?
我有一个基板节点启动并运行,存储项目为:value(Hash): Option<AccountId>
。我的目标是提供哈希值(例如,0x0000000000000000000000000000000000000000000000000000000000000001
并获得相应的帐户 ID 作为回报)。
我想通过 RPC 调用执行相同的任务。看完这篇博文后,我意识到我的情况是阅读StorageMaps
,所以我开始运行一些查询。如果我没记错的话,模块是Substratekitties
,存储项是value
。映射将value
是AccountId
。
我打了前两个电话:
但我对第三次调用编码感到困惑:编码文件 sha256 哈希。怎么做?运行util_crypto.blake2AsHex("0000000000000000000000000000000000000000000000000000000000000001", 256)
"0x16821de47d8b3b0fa4ca43e5db1028d75207cbd1c379a4738144972b105355aa"
将不起作用,也不起作用。
我的意思是说,我在执行此查询时得到“空”值。这是存储结构:
更新:我的文字查询:
十六进制查询: