На вкладке "Внешние" нет модуля "котята".

Я слежу за Substrate Kitties мастерская. В 1/Viewing a Storage Mapping я не могу получить доступ к своему kitties модулю на вкладке #extrinsics пользовательского интерфейса Polkadot:

Скриншот на 18.07.2019, 36.02

Я пытался перезарядить его несколько раз. Это мой 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?


person Afr    schedule 18.07.2019    source источник


Ответы (1)


Проблема здесь потенциально в том, что ваша цепочка еще не обновила среду выполнения, и поэтому вы не можете видеть новые модули в существующей цепочке. Это происходит, когда вы запускаете цепочку во время разработки и регистрации новых модулей во время выполнения.

Чтобы исправить это и убедиться, что все ваши модули зарегистрированы правильно, вам придется очистить свою цепочку и начать новую цепочку разработки с вашим последним кодом. Чтобы очистить, запустите:

❯ target/release/substratekitties purge-chain --dev

Перезапустите новую цепочку:

❯ target/release/substratekitties --dev

А модуль котят должен быть доступен во вкладке «Внешние».

person Afr    schedule 18.07.2019