¿Cómo verificar que el titular de la cuenta MetaMask es el verdadero propietario de la dirección?
Recientemente vi esta publicación y la probé de inmediato, desafortunadamente, no obtengo el resultado correcto del servidor. Creo que tiene algo que ver con el algoritmo hash sha3, pero no estoy seguro. ¿Alguien podría actualizar la solución? ¡Gracias!
Creo que esto es lo que estás pidiendo...
Usando Web3.js 1.0 y Metamask:
Crear una firma para un mensaje:
var message = "Some string"
var hash = web3.utils.sha3(message)
var accounts = await web3.eth.getAccounts()
var signature = await web3.eth.personal.sign(hash, accounts[0])
Recuperar la dirección de un mensaje + firma:
var hash = web3.utils.sha3(message)
var signing_address = await web3.eth.personal.ecRecover(hash, signature)
Debería ver que signing_address
coincidirá accounts[0]
si está utilizando el mismo mensaje y firma en todos los ámbitos.
metamask y web3 inyectados para recuperar una cuenta ethereum por mensaje y firma
var hashCodificado = web3.fromUtf8("Autentificación en Plataforma")
web3.personal.ecRecover(hashCodificado, "0x9b2d3a06ff7da90b629b18eaa56e150da522fa77d550d06be14049ee808ca3aa471af025c1aa40e5e11e3b42a0e033935da7b934059c1e6bebbc4f6h4486d7b51b", function (error, result) {
if (error) alert("Necesitas identificarte para poder entrar al panel de usuario");
if (result) {
alert("La cuenta que ha firmado la transaccion es: " + result)
}
});
Esto es lo que funciona para mí con MetaMask versión 7.1.1:
Firmando un mensaje:
var message = "Some string"
var hash = web3.sha3(message)
var account = web3.eth.accounts[0]
web3.personal.sign(hash, account, function(error, signature) {
console.log(signature, error)
})
Obtener la dirección de la firma:
var signature = "0x..."
var message_hash = web3.sha3(message)
web3.personal.ecRecover(message_hash, signature, function(error, signing_address) {
console.log(signing_address, error);
})
He estado en un problema similar y ninguna de las respuestas funcionó para mí.
Se me ocurrió una solución que se probó para funcionar con MetaMask y WalletConnect . He publicado una respuesta detallada aquí: ¿Cómo verificar que el titular de la cuenta de MetaMask es el verdadero propietario de la dirección?
GruesoMiddleManager