在 Substrate 中 AccountId32 和 AccountId 之间的转换

Nah*_*ahu 1 parity blockchain substrate polkadot

我有一个要求,我需要传入一些字节,我需要在 Substrate 2.0 中从中创建一个 accountId。

有没有办法在运行时(FRAME)之间AccountId32<T as frame_system::Trait>::AccountId中进行转换?或者创建一个<T as frame_system::Trait>::AccountIdfrom 字节的实例?

谢谢

Sha*_*izi 5

给定原始字节,您可以尝试构建一个帐户 ID,如下所示:

T::AccountId::decode(&mut &bytes[..]).unwrap_or_default();
Run Code Online (Sandbox Code Playgroud)

您可能希望以不同于返回默认 AccountId 的方式处理您的错误情况。

如果您可以验证原始字节的长度为 32 ( [u8; 32]),则此操作永远不会失败,因此您可以放置​​一个.expect("32 bytes can always construct an AccountId32").