คำถามและคำตอบ

ไม่พบคำแนะนำสำรอง หมายเลขข้อผิดพลาด: 101 ข้อความข้อผิดพลาด: ไม่รองรับฟังก์ชันสำรอง

ขนาดข้อความ

คุณต้องระบุ instruction discriminator ให้กับ data ของ transaction ของคุณตามที่ Ademola ได้กล่าวไว้ สิ่งที่คุณสามารถทำได้คือดึง instruction discriminator แล้วต่อท้ายเข้ากับ data ของคุณใน 8 ไบต์แรก ดึง 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 // สร้าง InstructionBuffer const ixBuffer = sighash('global','initialize');

const instructionBuffer = Buffer.concat([ ixBuffer, // namespace+method_name OtherBuffer, // ข้อมูลอื่น ๆ ที่คุณต้องการส่งไปยัง instruction ])

// สร้าง Instruction const transactionInstruction = new TransactionInstruction({ programId: programAddress, data: instructionBuffer, keys : [ ... ] })