Lazima utoe instruction discriminator kwenye data ya transaction yako kama Ademola alivyotaja. Unachoweza kufanya ni kuchukua instruction discriminator kisha kuiambatanisha na data yako katika bytes 8 za kwanza. Chukua Instruction Discriminator katika 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"));
Chukua Discriminator Instruction Katika 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 inapaswa kuwa global Hapa kuna mfano katika Typescript // Tengeneza InstructionBuffer const ixBuffer = sighash('global','initialize');
const instructionBuffer = Buffer.concat([ ixBuffer, // namespace+method_name OtherBuffer, // Data Nyingine unayotaka kuipeleka kwenye instruction. ])
// Tengeneza Instruction const transactionInstruction = new TransactionInstruction({ programId: programAddress, data: instructionBuffer, keys : [ ... ] })
Tazama chanzo CC BY-SA 4.0