问题标签 [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.
rust - 没有为 Vec 实现 parity_codec::codec::Input将外部解码为结构时
我如何将标准的Substrate 外部格式解码为一个Transaction
对象,以便可以获取Sender
,最好是作为字符串?
我从这段代码开始,使用硬编码的样本外部数据在extrinsic_hex
变量中进行测试:
我得到的错误是:
让我们假设错误error: duplicate lang item in crate
sr_io :
panic_impl.
目前不存在。
如果我理解正确,它不起作用,因为Vec
没有实现parity_codec::Input
trait,对吗?如果是这样,如何将这一特征添加到Vec
?或者更好地说,我缺少 Substrate 框架的哪些功能,因此Input
自动提供特征?
rust - 在 Substrate 的 decl_storage 宏中 impl trait X for Y as Z 是什么意思?
以下 Substrate 存储定义as Indices
中的含义是什么?
我已阅读文档中的Advanced Traits部分,但关键字的语法trait
不考虑任何标记为as
.
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 一起使用的示例!?
hash - 为什么在使用 decl_storage 时在 StorageMap 中使用 blake2_256 以外的散列算法
它说decl_storage!
是一个“程序宏”,用于存储数据以使其在后续块中可用。
它说如果用户能够设置密钥对,那么我们就不能信任密钥对,因此我们必须使用诸如 blake2_256 之类的加密哈希来防止“存储中的其他值受到损害”。
为什么要使用除 a 中的默认值以外的散列算法 ( ) $hash
(即为什么有人会使用而不是默认值)?blake2_256
StorageMap
twox
blake2_256
另外,为什么说它只是为了防止“存储中的其他值受到损害”?不是blake2_256
也用来防止密钥对本身被泄露吗?
hash - 为什么在使用 decl_storage 时 `blake2_256` 不能防止 StorageDoubleMap 中的“第一个密钥对”被破坏?
decl_storage!
是一个“程序宏”,用于存储数据以使其在后续块中可用。
它说如果用户能够在 中设置第一个密钥对,double_map
那么我们就不能信任该密钥对,因此我们必须使用加密散列器blake2_256
来防止“所有存储项目的其他值被泄露”。
然后继续说,如果用户能够在 中设置第二个密钥对,double_map
那么我们就不能信任该密钥对,因此我们必须使用加密散列器blake2_256
来防止“存储中的其他项目具有相同的第一个密钥被泄露”。
关于第一个密钥对,为什么说只是为了防止“所有存储项的其他值被泄露”?是否blake2_256
也用于防止第一个密钥对本身被泄露(而不仅仅是“其他值”)?
rust - 在 Substrate 运行时 crate 中定义的 Log 类型在哪里?
看看这个实现:
如何Log
定义?没有use
用于导入此符号的子句。
跑步
不显示任何带有子句的Log
条目。type
在 0 级扩展宏后,它确实显示了其他宏声明,但我不确定这是否相关。
我尝试使用 Atom IDE,因为它会自动解析文件并让您找到符号的定义,但它没有帮助。
我怎样才能找到如何Log
定义?
rust - Substrate 运行时模块中支持哪些哈希算法?
在构建 Substrate 运行时模块时,我可以访问哪些哈希算法?
我可以导入其他哈希算法以在 Substrate 运行时模块中使用吗?
rust - 提款或存款后是否必须处理“不平衡”类型?
当使用任何铸造/销毁基础货币的函数(例如Currency::withdraw()
)时,您将获得一个Imbalance
返回值。Substrate 是否希望我用它做点什么?
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 都是陌生的。任何形式的帮助将不胜感激。