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

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

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

Спасибо


person Nahu    schedule 15.04.2020    source источник


Ответы (1)


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

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

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

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

person Shawn Tabrizi    schedule 15.04.2020
comment
Если бы я мог проголосовать на миллион, я бы получил. Спасибо вам большое за это. Оно работало завораживающе. - person Nahu; 15.04.2020