跳到主要内容
未找到指令后备。错误号:101。错误消息:不支持后备功能
您必须像 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:节目地址,
数据:指令缓冲区,
键:[
...
]
})