Преобразование между AccountId32 и AccountId в субстрате

У меня есть требование, при котором мне передаются некоторые байты, и мне нужно создать accountId из него в Substrate 2.0.

Есть ли способ конвертировать между AccountId32 а также <T as frame_system::Trait>::AccountIdво время выполнения (КАДР)? Или создать экземпляр<T as frame_system::Trait>::AccountId из байтов?

Благодарность

1 ответ

Решение

Учитывая необработанные байты, вы можете попытаться создать идентификатор учетной записи следующим образом:

T::AccountId::decode(&mut &bytes[..]).unwrap_or_default();

Возможно, вы захотите обработать состояние ошибки иначе, чем возвращать AccountId по умолчанию.

Если вы можете убедиться, что ваши необработанные байты имеют длину 32 ([u8; 32]), эта операция никогда не должна завершиться ошибкой, поэтому вы можете разместить .expect("32 bytes can always construct an AccountId32").

Другие вопросы по тегам