Go-Ethereum
通過 MetaMask 對使用者進行身份驗證的 web3.js 簽名功能
我正在嘗試按照在此站點上找到的範例來使用 MetaMask 功能對使用者進行身份驗證。此外,以下站點的 web3.js 文件指定了這個符號函式:
web3.eth.personal.sign(dataToSign, address, password [, callback])
我將 dataToSign 和地址值傳遞給此函式沒有問題,但是,如何將密碼傳遞給它?
否則,這是為了簽署用於驗證使用者的 nonce 的正確功能嗎?也許我需要使用另一個功能?這是我呼叫該函式的承諾(使用不同的可能替代函式):
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]) }) )
我對他們中的任何一個都沒有太大的成功。
謝謝你。Ĵ
您連結到的文章已有兩年多的歷史了!它參考了 web3 之前的 v0.20 版本。
在 web3 v1.2 中,有幾個變化。對於簽名,您可以選擇:
web3.eth.sign(dataToSign, address [, callback])
利用 web3 提供程序上的帳戶管理,例如 MetaMask。web3.eth.accounts.sign(data, privateKey)
如果您有帳戶私鑰。web3.eth.personal.sign(dataToSign, address, password [, callback])
對於允許以程式方式解鎖帳戶的 web3 提供程序,例如 geth。這個答案有一個範例,其中前兩種情況下 web3 v1.2 的語法正確:https ://ethereum.stackexchange.com/a/76578