Aller au contenu principal
ZYGY Research ZYGY ResearchPlateforme de recherche sur les actifs numériques
Français
← Bibliothèque de questions
technology

InstructionFallbackNotFound. Numéro d'erreur : 101. Message d'erreur : les fonctions de secours ne sont pas prises en charge

Réponse

Vous devez fournir le discriminateur d'instructions aux données de votre transaction comme l'a mentionné Ademola.
Ce que vous pouvez faire est de récupérer le discriminateur d'instructions, puis de l'ajouter à vos données dans les 8 premiers octets.
Récupérer le discriminateur d'instructions dans Rust
pub fn sighash(espace de noms : &str, nom : &str) -> [u8; 8] {
let preimage = format!("{}:{}", espace de noms, nom);

laissez mut soupirer = [0u8; 8];
soupir.copy_from_slice(
&anchor_client::anchor_lang::solana_program::hash::hash(preimage.as_bytes()).to_bytes()
[..8],
);
soupir
}

println!("{:?}", sighash("global", "initialize"));

Récupérer l'instruction du discriminateur en dactylographié
function sighash (nameSpace : string, ixName : string) : Buffer {
let nom = serpentCase(ixName);
laissez préimage = `${nameSpace}:${name}`;
return Buffer.from(sha256.digest(preimage)).slice(0, 8);
}

l'espace de noms doit être global
Voici un exemple dans Typescript
// Création du InstructionBuffer
const ixBuffer = sighash('global','initialize');

const instructionBuffer = Buffer.concat([
ixBuffer, // espace de noms+nom_méthode
OtherBuffer, // Autres données que vous souhaitez transmettre à l'instruction.
])

// Créez l'instruction
const transactionInstruction = nouvelle TransactionInstruction({
ID de programme : adresse de programme,
données : instructionBuffer,
touches : [
...
]
})

solanaVoir l’originalCC BY-SA 4.0

Voir d’autres questions