InstrucciónFallbackNotFound. Número de error: 101. Mensaje de error: Las funciones alternativas no son compatibles
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: [
...
]
})
solanaVer originalCC BY-SA 4.0