Debe proporcionar la instrucción discriminadora a los datos de su transacción como lo mencionó Ademola. Lo que puede hacer es buscar el discriminador de instrucciones y luego agregarlo a sus datos en los primeros 8 bytes. Discriminador de instrucciones de recuperación en Rust pub fn sighash(espacio de nombres: &str, nombre: &str) -> [u8; 8] { let preimagen = formato!("{}:{}", espacio de nombres, nombre);
let mut sighash = [0u8; 8]; sighash.copy_from_slice( &anchor_client::anchor_lang::solana_program::hash::hash(preimage.as_bytes()).to_bytes() [..8], ); suspiro }
println!("{:?}", sighash("global", "inicializar"));
Obtener instrucción discriminadora en texto mecanografiado función sighash(nameSpace: string, ixName: string): Buffer { let nombre = SnakeCase(ixName); let preimagen = `${nameSpace}:${name}`; return Buffer.from(sha256.digest(preimagen)).slice(0, 8); }
el espacio de nombres debe ser global Aquí hay un ejemplo en mecanografiado. // Crea el búfer de instrucciones const ixBuffer = sighash('global','inicializar');
const instrucciónBuffer = Buffer.concat([ ixBuffer, // espacio de nombres+nombre_método OtherBuffer, // Otros datos que desea pasar a la instrucción. ])
// Elabora la instrucción const transacciónInstrucción = nueva transacciónInstrucción({ ID de programa: dirección de programa, datos: instrucciónBuffer, teclas: [ ... ] })