如何设置StorageValue的默认值?

How to set the default value for StorageValue?

我正在尝试为 StorageValue 设置默认值,但出现错误:

#[pallet::type_value]
pub fn DefaultRegistrationFees<T: Config>() -> u128 { 100u128 }

#[pallet::storage]
#[pallet::getter(fn profile_registration_fees)]
pub type RegistrationFee<T> = StorageValue<_, u128, OptionQuery, DefaultRegistrationFees<T>>;

错误:
lib.rs(81, 12):特性 frame_support::storage::types::QueryKindTrait<u128, pallet::DefaultRegistrationFees<T>> 没有为 frame_support::pallet_prelude::OptionQuery

实现

https://substrate.dev/docs/en/knowledgebase/runtime/storage#default-values

我猜你想写:

pub type RegistrationFee<T> = StorageValue<_, u128, ValueQuery, DefaultRegistrationFees<T>>;

所以要使用 ValueQuery 而不是 OptionQuery

存储的 QueryKind 泛型决定了当存储没有价值时应该如何处理存储。使用 OptionQuery,当存储中没有值时,方法 get 将 return None。使用 ValueQuery,当存储中没有值时,方法 get 将 return 使用通用 OnEmpty 配置的值。 所以在配置特定的默认值时,要使用ValueQuery.