Estoy tratando de seguir el ejemplo que se encuentra en este sitio para autenticar a los usuarios que utilizan la funcionalidad MetaMask. Además, la documentación de web3.js en el siguiente sitio especifica esta función de signo:
web3.eth.personal.sign(dataToSign, address, password [, callback])
No tengo ningún problema en pasar los valores de dataToSign y dirección a esta función, sin embargo, ¿cómo puedo pasarle la contraseña?
De lo contrario, ¿es esta la función adecuada para usar para firmar un nonce utilizado para autenticar a un usuario? ¿Quizás necesito usar otra función? Esta es mi promesa de llamar a la función (con diferentes funciones alternativas posibles):
return new Promise((resolve, reject) =>
// NOt sure which function among the ones below to use:
this.web3.eth.personal.sign(this.web3.fromUtf8(nonce), account, (err, signature) => { // Or
this.web3.eth.sign(nonce, account, (err, signature) => { // Or
this.web3.eth.accounts.sign(nonce, account, (err, signature) => { // Or
this.web3.eth.personal.sign(nonce, account, password, (err, signature) => {
if (err) return reject(err)
return resolve([account, signature])
})
)
No tuve mucho éxito con ninguno de ellos.
Gracias. j
¡El artículo al que vinculaste tiene más de dos años! Hizo referencias a la versión anterior de web3 v0.20.
Con web3 v1.2, hubo varios cambios. Para firmar, puede elegir entre:
web3.eth.sign(dataToSign, address [, callback])
aprovecha la gestión de cuentas en el proveedor web3, por ejemplo, MetaMask.web3.eth.accounts.sign(data, privateKey)
en caso de que tenga la clave privada de la cuenta.web3.eth.personal.sign(dataToSign, address, password [, callback])
para proveedores web3 que permiten desbloquear cuentas mediante programación, por ejemplo geth.Esta respuesta tiene un ejemplo con la sintaxis correcta para web3 v1.2 para los dos primeros casos: https://ethereum.stackexchange.com/a/76578
JF0001
JF0001
ismael