您必须像 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:节目地址, 数据:指令缓冲区, 键:[ ... ] })