Skip to Content
dApps
Auf dieser Seite

personal_sign

Signiert eine Nachricht mit dem angegebenen Konto. Der Nachricht wird vor dem Signieren "\x19Ethereum Signed Message:\n" vorangestellt, um Nachrichtensignaturen vom Signieren roher Transaktionen zu trennen.


Parameter

IndexTypBeschreibung
0stringZu signierende Nachricht (hexkodiert)
1stringZum Signieren zu verwendende Adresse

Rückgabe

string - Die Signatur (Hex-Zeichenfolge mit 65 Bytes)


Beispiel

const message = 'Hello, OneKey!' const hexMessage = '0x' + Array.from(new TextEncoder().encode(message), byte => byte.toString(16).padStart(2, '0')).join('') const signature = await window.$onekey.ethereum.request({ method: 'personal_sign', params: [hexMessage, accounts[0]] }) console.log('Signature:', signature)

Mit ethers.js verwenden

import { hashMessage, recoverAddress } from 'ethers' const message = 'Hello, OneKey!' const hexMessage = '0x' + Array.from(new TextEncoder().encode(message), byte => byte.toString(16).padStart(2, '0')).join('') const signature = await window.$onekey.ethereum.request({ method: 'personal_sign', params: [hexMessage, accounts[0]] }) // Verify signature const recoveredAddress = recoverAddress(hashMessage(message), signature) console.log('Verified:', recoveredAddress.toLowerCase() === accounts[0].toLowerCase())

Fehler

CodeNachrichtBeschreibung
4001Nutzer hat die Anfrage abgelehntNutzer hat die Signaturanfrage abgelehnt
-32602Ungültige ParameterUngültige Nachricht oder Adresse

Hinweise

  • Die Nachricht muss hexkodiert sein und das 0x-Präfix haben
  • Die tatsächlich signierte Nachricht lautet: "\x19Ethereum Signed Message:\n" + len(message) + message
  • Zum Signieren typisierter Daten verwenden Sie eth_signTypedData_v4 stattdessen
  • Spezifiziert durch EIP-191 

Prüfen Sie zur Authentifizierung die vorgesehene Domain, das Konto, die Ablaufzeit und eine nur einmal verwendbare Server-Challenge. Eine gültige Signatur einer festen Beispielnachricht ist kein vollständiger Anmeldeablauf.

Zuletzt aktualisiert am