问题标签 [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.

0 投票
1 回答
620 浏览

rust - 没有为 Vec 实现 parity_codec::codec::Input将外部解码为结构时

我如何将标准的Substrate 外部格式解码为一个Transaction对象,以便可以获取Sender,最好是作为字符串?

我从这段代码开始,使用硬编码的样本外部数据在extrinsic_hex变量中进行测试:

我得到的错误是:

让我们假设错误error: duplicate lang item in cratesr_io :panic_impl.目前不存在。

如果我理解正确,它不起作用,因为Vec没有实现parity_codec::Inputtrait,对吗?如果是这样,如何将这一特征添加到Vec?或者更好地说,我缺少 Substrate 框架的哪些功能,因此Input自动提供特征?

0 投票
1 回答
134 浏览

rust - 在 Substrate 的 decl_storage 宏中 impl trait X for Y as Z 是什么意思?

以下 Substrate 存储定义as Indices中的含义是什么?

我已阅读文档中的Advanced Traits部分,但关键字的语法trait不考虑任何标记为as.

0 投票
1 回答
95 浏览

rust - 什么是 decl_storage 中的“storage_name”示例

它说这decl_storage!是一个“程序宏”,用于存储数据以使其在后续块中可用。

在那个链接上有一句话说Basic storage contains a name and a type。然后它显示了不同的支持类型,包括最基本的支持类型,它只包含一个“值”,看起来对应Foo. SRML 的“示例”模块的这一行也与此模式匹配。

然后它展示了如何使用散列算法来散列值的组合,包括storage_name. 显示storage_name的似乎对应于该页面前面显示的“存储名称” 。Foo

然后有一句话说Basic storage可以这样扩展:,它显示了一个模式... #name ...,并将其描述为#name: Name of the storage item, used as a prefix in storage.,这似乎对应于页面前面显示的“存储名称”,两者都不是标记为因为它们不是基本存储的“扩展”,而是基本存储的基础Foo#name#type[optional]

应该是Foo一个storage_name可以与 decl_storage 一起使用的示例!?

0 投票
1 回答
137 浏览

hash - 为什么在使用 decl_storage 时在 StorageMap 中使用 blake2_256 以外的散列算法

它说decl_storage!是一个“程序宏”,用于存储数据以使其在后续块中可用。

它说如果用户能够设置密钥对,那么我们就不能信任密钥对,因此我们必须使用诸如 blake2_256 之类的加密哈希来防止“存储中的其他值受到损害”。

为什么要使用除 a 中的默认值以外的散列算法 ( ) $hash(即为什么有人会使用而不是默认值)?blake2_256StorageMaptwoxblake2_256

另外,为什么说它只是为了防止“存储中的其他值受到损害”?不是blake2_256也用来防止密钥对本身被泄露吗?

0 投票
1 回答
103 浏览

hash - 为什么在使用 decl_storage 时 `blake2_256` 不能防止 StorageDoubleMap 中的“第一个密钥对”被破坏?

decl_storage!是一个“程序宏”,用于存储数据以使其在后续块中可用。

它说如果用户能够在 中设置第一个密钥对double_map那么我们就不能信任该密钥对,因此我们必须使用加密散列器blake2_256来防止“所有存储项目的其他值被泄露”。

然后继续说,如果用户能够在 中设置第二个密钥对double_map那么我们就不能信任该密钥对,因此我们必须使用加密散列器blake2_256来防止“存储中的其他项目具有相同的第一个密钥被泄露”。

关于第一个密钥对,为什么说只是为了防止“所有存储项的其他值被泄露”?是否blake2_256也用于防止第一个密钥对本身被泄露(而不仅仅是“其他值”)?

0 投票
1 回答
74 浏览

rust - 为什么运行时实现者应该避免枚举链上的 EnumerableStorageMap 存储条目?

状态的文档EnumerableStorageMap

主要用于链下计算。运行时实现者应避免枚举链上存储条目。

为什么运行时实现者应该避免在链上枚举这些存储条目?

0 投票
1 回答
105 浏览

rust - 在 Substrate 运行时 crate 中定义的 Log 类型在哪里?

看看这个实现

如何Log定义?没有use用于导入此符号的子句。

跑步

不显示任何带有子句的Log条目。type在 0 级扩展宏后,它确实显示了其他宏声明,但我不确定这是否相关。

我尝试使用 Atom IDE,因为它会自动解析文件并让您找到符号的定义,但它没有帮助。

我怎样才能找到如何Log定义?

0 投票
1 回答
136 浏览

rust - Substrate 运行时模块中支持哪些哈希算法?

在构建 Substrate 运行时模块时,我可以访问哪些哈希算法?

我可以导入其他哈希算法以在 Substrate 运行时模块中使用吗?

0 投票
1 回答
102 浏览

rust - 提款或存款后是否必须处理“不平衡”类型?

当使用任何铸造/销毁基础货币的函数(例如Currency::withdraw())时,您将获得一个Imbalance返回值。Substrate 是否希望我用它做点什么?

0 投票
1 回答
102 浏览

javascript - 有没有办法在 React 代码的渲染中使用 await 关键字

我正在尝试使用 Substrate UI 来显示我的运行时模块中可用的功能。代码是用 React 编写的。我正在尝试创建一个组件来帮助我跟踪结构的所有先前状态。

runtime.template.assets(i)调用将十六进制值i作为输入并返回kitty具有键parent_hash(具有十六进制值)的结构。我希望while循环执行,直到我达到一个特殊的十六进制值,在这种情况下"0x11da6d1f761ddf9bdb4c9d6e5303ebd41f61858d0a5647a1a7bfe089bf921be9",我已经转换String为实现终止条件。

请忽略该<KittyShrieks>标签,因为它是我用来在 UI 中显示某些值的东西。基本上我无法在 while 循环中执行此操作

所需代码

我不认为使用异步渲染是一个有效的事情,但我这样做是因为我似乎别无选择,只能使用await keyword. 所以,问题是 UI 没有加载,我收到以下错误:

Uncaught Invariant Violation: Objects are not valid as a React child (found: [object Promise]). If you meant to render a collection of children, use an array instead.

如果我删除async关键字、语句并在循环末尾var kitty = await runtime.template.kitties(i);插入语句,则 UI 加载正常。break因此,不允许我遍历循环。

总的来说,我对 React 甚至 Javascript 都是陌生的。任何形式的帮助将不胜感激。