मुख्य सामग्रीवर जा
InstructionFallbackNotFound. त्रुटी क्रमांक: 101. त्रुटी संदेश: फॉलबॅक फंक्शन्स समर्थित नाहीत
तुम्हाला तुमच्या transaction च्या data मध्ये instruction discriminator द्यावा लागेल, जसा Ademola ने नमूद केला आहे.
तुम्ही काय करू शकता ते म्हणजे instruction discriminator fetch करा आणि नंतर तो तुमच्या data च्या पहिल्या 8 bytes मध्ये append करा.
Rust मध्ये Instruction Discriminator Fetch करा
pub fn sighash(namespace: &str, name: &str) -> [u8; 8] {
let preimage = format!("{}:{}", namespace, name);
let mut sighash = [0u8; 8];
sighash.copy_from_slice(
&anchor_client::anchor_lang::solana_program::hash::hash(preimage.as_bytes()).to_bytes()
[..8],
);
sighash
}
println!("{:?}", sighash("global", "initialize"));
Typescript मध्ये Discriminator Instruction Fetch करा
function sighash(nameSpace: string, ixName: string): Buffer {
let name = snakeCase(ixName);
let preimage = `${nameSpace}:${name}`;
return Buffer.from(sha256.digest(preimage)).slice(0, 8);
}
namespace global असावा
Typescript मध्ये एक उदाहरण येथे आहे
// Craft the InstructionBuffer
const ixBuffer = sighash('global','initialize');
const instructionBuffer = Buffer.concat([
ixBuffer, // namespace+method_name
OtherBuffer, // Other Data that you want to pass to the instruction.
])
// Craft the Instruction
const transactionInstruction = new TransactionInstruction({
programId: programAddress,
data: instructionBuffer,
keys : [
...
]
})