முதன்மை உள்ளடக்கத்திற்குச் செல்
ZYGY Research ZYGY Researchடிஜிட்டல் சொத்து ஆராய்ச்சி தளம்
தமிழ்
← கேள்வி நூலகம்
technology

வழிமுறை கிடைக்கவில்லை. பிழை எண்: 101. பிழை செய்தி: வழிமுறைகள் ஆதரிக்கப்படவில்லை

பதில்

Ademola கூறியது போல, உங்கள் transaction-இன் data-வுக்கு instruction discriminator-ஐ நீங்கள் வழங்க வேண்டும்.
நீங்கள் செய்யக்கூடியது, 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 : [
...
]
})

solanaஅசலைப் பார்க்கCC BY-SA 4.0

மேலும் கேள்விகளை உலாவுங்கள்