Ich versuche, dem auf dieser Website gefundenen Beispiel zu folgen , um Benutzer mithilfe der MetaMask-Funktionalität zu authentifizieren. Darüber hinaus spezifiziert die web3.js-Dokumentation auf der folgenden Seite diese Zeichenfunktion:
web3.eth.personal.sign(dataToSign, address, password [, callback])
Ich habe kein Problem damit, die dataToSign- und Adresswerte an diese Funktion zu übergeben, aber wie kann ich ihr das Passwort übergeben?
Ist dies ansonsten die richtige Funktion, um eine Nonce zu signieren, die zum Authentifizieren eines Benutzers verwendet wird? Vielleicht muss ich eine andere Funktion verwenden? Dies ist mein Versprechen, die Funktion aufzurufen (mit verschiedenen möglichen Alternativfunktionen):
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])
})
)
Ich hatte mit keinem von ihnen viel Erfolg.
Danke schön. J
Der Artikel, auf den Sie verlinkt haben, ist mehr als zwei Jahre alt!! Es wurde auf die vorherige Version v0.20 von web3 verwiesen.
Mit web3 v1.2 gab es mehrere Änderungen. Beim Signieren können Sie wählen zwischen:
web3.eth.sign(dataToSign, address [, callback])
nutzt die Kontoverwaltung bei einem Web3-Anbieter, z. B. MetaMask.web3.eth.accounts.sign(data, privateKey)
falls Sie einen privaten Kontoschlüssel haben.web3.eth.personal.sign(dataToSign, address, password [, callback])
für Web3-Anbieter, die das programmgesteuerte Entsperren von Konten zulassen, z. B. geth.Diese Antwort enthält ein Beispiel mit der korrekten Syntax für web3 v1.2 für die ersten beiden Fälle: https://ethereum.stackexchange.com/a/76578
JF0001
JF0001
Ismael