Web3js

使用 web3.personal.sign 在伺服器上進行 MetaMask 驗證

  • June 10, 2021

如何驗證 MetaMask 賬戶持有人是地址的真實所有者?

我最近看到這篇文章並立即嘗試,不幸的是,我沒有從伺服器獲得正確的結果。我認為這與雜湊算法 sha3 有關,但我不確定。有人可以更新解決方案嗎?謝謝!

我想這就是你要的…

使用 Web3.js 1.0 和 Metamask:

為消息創建簽名:

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])

恢復消息+簽名的地址:

var hash = web3.utils.sha3(message)
var signing_address = await web3.eth.personal.ecRecover(hash, signature)

如果您全面使用相同的消息和簽名,您應該會看到這signing_address將匹配。accounts[0]

注入 metamask 和 web3 以通過消息和簽名恢復乙太坊帳戶

var Encoded hash = web3.fromUtf8(“平台認證”)

       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)
               }
           });

引用自:https://ethereum.stackexchange.com/questions/54715