На вкладке extrinsics отсутствует модуль `kitties`
Я слежу за мастерской Субстрат Китти. В 1/Viewing a Storage Mapping
Я не могу получить доступ к своему kitties
модуль на #extrinsics
Вкладка пользовательского интерфейса Polkadot:
Я пытался перезагрузить его несколько раз. Это мое kitties.rs
(хорошо компилируется):
use support::{decl_storage, decl_module, StorageMap, dispatch::Result};
use system::ensure_signed;
pub trait Trait: balances::Trait {}
decl_storage! {
trait Store for Module<T: Trait> as KittyStorage {
Value: map T::AccountId => u64;
}
}
decl_module! {
pub struct Module<T: Trait> for enum Call where origin: T::Origin {
fn set_value(origin, value: u64) -> Result {
let sender = ensure_signed(origin)?;
<Value<T>>::insert(sender, value);
Ok(())
}
}
}
Я определил модуль в lib.rs
/// Used for the Substrate Kitties in `./kitties.rs`
mod kitties;
[...]
/// Used for the Substrate Kitties in `./kitties.rs`
impl kitties::Trait for Runtime {}
И добавил это во время выполнения.
construct_runtime!(
pub enum Runtime with Log(InternalLog: DigestItem<Hash, AuthorityId, AuthoritySignature>) where
Block = Block,
NodeBlock = opaque::Block,
UncheckedExtrinsic = UncheckedExtrinsic
{
System: system::{default, Log(ChangesTrieRoot)},
Timestamp: timestamp::{Module, Call, Storage, Config<T>, Inherent},
Consensus: consensus::{Module, Call, Storage, Config<T>, Log(AuthoritiesChange), Inherent},
Aura: aura::{Module},
Indices: indices,
Balances: balances,
Sudo: sudo,
Kitties: kitties::{Module, Call, Storage},
// Used for the module template in `./template.rs`
TemplateModule: template::{Module, Call, Storage, Event<T>},
ExampleModule: substrate_module_template::{Module, Call, Storage, Event<T>},
}
);
Что я пропустил? Что еще требуется для регистрации моего модуля во время выполнения Substrate?
1 ответ
Проблема здесь может заключаться в том, что ваша цепочка еще не обновила среду выполнения, и поэтому вы не можете видеть новые модули в существующей цепочке. Это происходит, когда вы запускаете цепочку во время разработки и регистрации новых модулей во время выполнения.
Чтобы это исправить и убедиться, что все ваши модули зарегистрированы должным образом, вам придется очистить цепочку и начать новую цепочку разработки с вашим последним кодом. Чтобы очистить, запустите:
❯ target/release/substratekitties purge-chain --dev
Перезапустите новую цепочку:
❯ target/release/substratekitties --dev
А модуль kitties должен быть доступен на вкладке extrinsics.