ИнструкцияFallbackNotFound. Номер ошибки: 101. Сообщение об ошибке: Резервные функции не поддерживаются.
Вы должны предоставить дискриминатор инструкций для данных вашей транзакции, как упоминал Адемола.
Что вы можете сделать, так это получить дискриминатор инструкций, а затем добавить его к своим данным в первых 8 байтах.
Дискриминатор инструкций выборки в Rust
паб fn Sighash (пространство имен: &str, имя: &str) -> [u8; 8] {
let preimage = format!("{}:{}", namespace, name);
пусть mut sighash = [0u8; 8];
вздох.copy_from_slice(
&anchor_client::anchor_lang::solana_program::hash::hash(preimage.as_bytes()).to_bytes()
[..8],
);
сигаш
}
println!("{:?}", Sighash("глобальный", "инициализировать");
Инструкция получения дискриминатора в машинописном тексте
функция sighash(nameSpace: string, ixName: string): Buffer {
пусть имя = SnakeCase (ixName);
let preimage = `${nameSpace}:${name}`;
return Buffer.from(sha256.digest(предварительное изображение)).slice(0, 8);
}
пространство имен должно быть глобальным
Вот пример в Typescript
// Создание буфера инструкций
const ixBuffer = Sighash('глобальный','инициализация');
const инструкцияBuffer = Buffer.concat([
ixBuffer, // пространство имен+имя_метода
OtherBuffer, // Другие данные, которые вы хотите передать инструкции.
])
// Создаем инструкцию
const transactionInstruction = новая TransactionInstruction({
идентификатор программы: адрес программы,
данные: инструкцияБуфер,
ключи: [
...
]
})
solanaОткрыть оригиналCC BY-SA 4.0