پرسش و پاسخ

InstructionFallbackNotFound. شماره خطا: 101. پیام خطا: توابع بازگشتی پشتیبانی نمی‌شوند

اندازه متن

شما باید discriminator دستورالعمل را به داده‌های تراکنش خود اضافه کنید، همان‌طور که Ademola اشاره کرده است. کاری که می‌توانید انجام دهید این است که discriminator دستورالعمل را واکشی کنید و سپس آن را در ۸ بایت اول به داده‌های خود اضافه کنید. واکشی Instruction Discriminator در Rust 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"));

واکشی Discriminator Instruction در typescript 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 : [ ... ] })