Tengo una aplicación web que usa la inyección window.cardano.nami desde hace meses. Siguiendo CIP-0008, estoy tratando de abstraer todo el código fuente para admitir ccvault y otras billeteras Cardano; todo funciona bien, pero parece que se ha cambiado el método signData .
Estaba usando window.cardano.signData y el resultado fue una firma de texto sin formato como esta: window.cardano.signData signature
const signedData = await window.cardano.signData(usedAddresses, hexMessage);Cambié a api.signData (donde api es el nuevo punto final devuelto por window.cardano.nami.enable() y ahora la firma es un objeto como este: api.signData signature
const signedData = await wallet.signData(usedAddresses, hexMessage);Entonces, el tipo es diferente, pero eso no es suficiente: ¡la firma en sí (si comparo la primera firma con el atributo .signature del segundo objeto de firma) es diferente!
Aún más extraño: ¡ccvault funciona de maravilla!
¿Qué me estoy perdiendo?
El problema es que hay una versión heredada de nami y una nueva, lo mejor es verificar ambas y devolver la correcta. Luego sigue usándolo como de costumbre.
let connectNami = async () => { // @ts-ignore if (typeof window.cardano.nami !== "undefined") { // @ts-ignore return await window.cardano.nami.enable(); } else { console.debug(`Using legacy nami wallet integration`); // @ts-ignore await window.cardano.enable(); // @ts-ignore return window.cardano; } }; const cardano= await connectNami(); const token = await cardano.signData(address, messageToSign);