आपको अपने ट्रांजैक्शन के डेटा में instruction discriminator प्रदान करना होगा जैसा कि Ademola ने उल्लेख किया है। आप जो कर सकते हैं वह है instruction discriminator fetch करें और फिर उसे अपने डेटा में पहले 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 : [ ... ] })