Как отобразить ржавый примитив со структурой внутри decl_storage! макрос в субстрате - PullRequest
0 голосов
/ 09 апреля 2020
pub struct Post<A> {

    id:u8,
    content:String,
    tipAmount:u8,
    author:A,
}

decl_storage! {

    trait Store for Module<T: Trait> as PostModule {

        Posts: map hasher(blake2_256) u8 => Post<T::AccountId>;

    }
}

Я получаю ошибку ниже

черта _::_parity_scale_codec::EncodeLike не реализована для Post<<T as frame_system::Trait>::AccountId>

Как мы можем сопоставить примитивный тип данных с структура в decl_storage! макро

1 Ответ

0 голосов
/ 09 апреля 2020

У вас две проблемы. Один довольно мягкий, другой более серьезный:

  1. Все типы данных, которые должны храниться в цепочке, должны иметь две границы: Encode и Decode из [parity-scale-codec]. Включите это в свой ящик (с функцией «получить») и просто:
#[derive(Encode, Decode)]
pub struct Post<A> {
    id:u8,
    content:String,
    tipAmount:u8,
    author:A,
}

Для примера посмотрите на любой другой поддон в Библиотеке кадров четности . Обратите внимание, что чаще всего (если только ваше значение не равно Option), ваш тип также должен предоставлять Default, который вы можете снова получить.

Вы не можете и, вероятно, не хотите хранить строку в цепочке. Чаще всего это (распространенная и справедливая) ошибка, которую совершают люди, только начинающие изучать блокчейны. Блокчейн не должен действовать как хранилище данных для хранения потенциально длинных, динамически размещаемых строк. В цепочке должны храниться только согласованные критически важные данные. Как я понял из вашей структуры, вы, похоже, держите в блоге некоторые посты. Это абсолютно не нужно. Вы можете просто сохранить ха sh содержимого в цепочке (с другими небольшими метаданными, если хотите) и сохранить фактическое содержимое публикации в другом месте, например, в IPFS. Ха sh достаточно для того, чтобы каждый мог понять, что содержание действительно правильное.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...