#substrate #polkadot
Вопрос:
Я пытаюсь использовать PALLET_ID
const PALLET_ID: PalletId = PalletId(*b"ex/cfund");
fn fund_account_id(index: FundIndex) -> T::AccountId {
PALLET_ID.into_sub_account(index)
}
Но он выдает ошибку:
method not found in `frame_support::PalletId`
Документы: Ссылка
Все методы недоступны и выдают ошибку.
Версия:
git = ‘https://github.com/paritytech/substrate.git ‘
tag = ‘ежемесячно-2021-10’
версия = ‘4.0.0-dev’
Ответ №1:
Этот метод является частью признака AccountIdConversion
, который реализован для типа PalletId
. Поэтому вам нужно иметь признак в области видимости или явно вызывать метод из признака.
Так что, как:
use sp_runtime::traits::AccountIdConversion;
const PALLET_ID: frame_support::PalletId = frame_support::PalletId(*b"ex/cfund");
fn fund_account_id(index: u32) -> u128 {
PALLET_ID.into_sub_account(index)
}
или
const PALLET_ID: frame_support::PalletId = frame_support::PalletId(*b"ex/cfund");
fn fund_account_id(index: u32) -> u128 {
sp_runtime::traits::AccountIdConversion::into_sub_account(amp;PALLET_ID, index)
}
Также в вашем примере тип FundIndex
должен быть реализован Encode
для удовлетворения реализации признака.