如何使用内置decl_storage



在基板托盘中,build通常用于decl_storage。

例如

pub ReferendumCount get(fn referendum_count) build(|_| 0 as ReferendumIndex): ReferendumIndex;

构建方法是做什么的,如何使用以及何时使用?

来自substrate.dev:

尽管decl_storage宏的配置扩展允许您在链规范中配置模块的起源存储状态,但构建扩展则允许您在模块本身中执行相同的任务(这使您可以访问模块的私有函数(。与config一样,构建扩展接受单个参数,但在这种情况下,该参数始终是必需的,并且必须是闭包,而闭包本质上是一个函数。构建闭包将使用一个参数调用,该参数的类型将是托盘的GenesisConfig类型(这使您可以轻松访问GenesisConfig型的所有属性(。您可以对单个存储项使用构建扩展和配置扩展;在这种情况下,托盘的GenesisConfig类型将具有一个属性,该属性与使用config设置的属性相对应,config的值将在链规范中设置,但它将是构建闭包返回的值,用于设置存储项目的genesis值。

build($expr)所做的是将构建逻辑添加到genesis配置构建中。

你可以通过阅读宏文档了解更多关于这一点的信息,我建议你注意与问题相关的这些点

  • 存储:https://crates.parity.io/frame_support/attr.pallet.html#storage-托盘存储可选
  • Genesis_config:https://crates.parity.io/frame_support/attr.pallet.html#genesis-配置集体利益
  • Genesis_build:https://crates.parity.io/frame_support/attr.pallet.html#genesis-建筑-集体利益_建筑-可选

您可以在同一文档中找到示例

相关内容

  • 没有找到相关文章

最新更新