Преобразование между 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")
.