Tengo un problema cuando ejecuto esta declaración en la ventana de la consola (desde el navegador) para obtener la firma de la cuenta:
ethereum.request({método: "personal_sign", params: [cuenta, hash] });
No solía tener este problema, funciona bien y devuelve una promesa con la firma digital de la cuenta (de Metamask). Abriría Metamask, haría una firma digital y devolvería el resultado de la firma digital a la promesa.
Ahora informa un error cada vez que ejecuto la declaración. El mensaje de error es:
código: -32602 mensaje: "Parámetros no válidos: debe proporcionar una dirección de Ethereum".
¿Ha cambiado algo? No pude encontrar ningún otro detalle de ethereum.org o Metamask. Si alguien tiene algún conocimiento sobre esto, ¿cuál parece ser el problema?
El primer elemento de params ("cuenta") tiene que ser una de las cuentas conectadas.
Puede acceder a cuentas con;
window.ethereum .request({ method: "eth_requestAccounts" }) .then(accounts => { console.log(accounts); })Esto tiene que ver con MetaMask y el objeto de ventana Ethereum en el navegador.
Originalmente probé el contrato en una red de prueba utilizando un proveedor Web3 inyectado.
Cuando estaba tratando de probar localmente, usé una de las cuentas generadas por JVM.
No deberías usarlos. En su lugar, use una cuenta MetaMask (copie la dirección) y haga ff:
asigna la dirección a una variable (haz lo mismo con el hash):
cuenta = dirección Metamask, hash = bytes32 valor de su mensaje hash
Luego puedo emitir el comando ethereum.request que ejecutará el método "personal_sign" con los parámetros de cuenta y hash.
La promesa devolverá la firma digital de la cuenta al firmar un mensaje.