Zum Hauptinhalt springen
Startseite/Wissensdatenbank
InstructionFallbackNotFound. Fehlernummer: 101. Fehlermeldung: Fallback-Funktionen werden nicht unterstützt
Sie müssen den Anweisungsdiskriminator für die Daten Ihrer Transaktion angeben, wie von Ademola erwähnt.
Sie können den Befehlsdiskriminator abrufen und ihn dann in den ersten 8 Bytes an Ihre Daten anhängen.
Befehlsdiskriminator in Rust abrufen
pub fn sighash(namespace: &str, name: &str) -> [u8; 8] {
let preimage = format!("{}:{}", namespace, name);
let mut seufz = [0u8; 8];
sighash.copy_from_slice(
&anchor_client::anchor_lang::solana_program::hash::hash(preimage.as_bytes()).to_bytes()
[..8],
);
seufz
}
println!("{:?}", sighash("global", "initialize"));
Holen Sie sich die Discriminator-Anweisung im Typoskript
Funktion sighash(nameSpace: string, ixName: string): Buffer {
let name = SnakeCase(ixName);
let preimage = `${nameSpace}:${name}`;
return Buffer.from(sha256.digest(preimage)).slice(0, 8);
}
Namespace sollte global sein
Hier ist ein Beispiel in Typescript
// Erstelle den InstructionBuffer
const ixBuffer = sighash('global','initialize');
const instructionBuffer = Buffer.concat([
ixBuffer, // Namespace+Methodenname
OtherBuffer, // Andere Daten, die Sie an die Anweisung übergeben möchten.
])
// Erstellen Sie die Anweisung
const transactionInstruction = new TransactionInstruction({
Programm-ID: Programmadresse,
Daten: Anweisungspuffer,
Schlüssel: [
...
]
})