您必須像 Ademola 提到的那樣為您的交易數據提供指令鑒別器。 您可以做的是獲取指令鑒別器,然後將其附加到前 8 個字節中的數據中。 Rust 中的獲取指令鑒別器 pub fnighash(命名空間: &str, 名稱: &str) -> [u8; 8]{ let 原像 = format!("{}:{}", 命名空間, 名稱);
讓 mutighash = [0u8; 8]; ighash.copy_from_slice( &anchor_client::anchor_lang::solana_program::hash::hash(preimage.as_bytes()).to_bytes() [..8], ); 嘆氣 }
println!("{:?}",ighash("全局", "初始化"));
在打字稿中獲取鑒別器指令 函數ighash(nameSpace: string, ixName: string): Buffer { 讓名稱 = SnakeCase(ixName); 讓原像 = `${nameSpace}:${name}`; return Buffer.from(sha256.digest(原像)).slice(0, 8); }
命名空間應該是全局的 這是 Typescript 中的示例 // 製作指令緩衝區 const ixBuffer =ighash('全局','初始化');
const 指令Buffer = Buffer.concat([ ixBuffer, // 命名空間+方法名 OtherBuffer, // 要傳遞給指令的其他數據。 ])
// 編寫指令 const transactionInstruction = new TransactionInstruction({ 節目 ID:節目地址, 數據:指令緩衝區, 鍵:[ ... ] })