Skip to Content
dApps
Sur cette page

personal_sign

Signe un message avec le compte spécifié. Le message est précédé de "\x19Ethereum Signed Message:\n" avant la signature afin de distinguer les signatures de messages de la signature de transactions brutes.


Paramètres

IndiceTypeDescription
0stringMessage à signer (encodé en hexadécimal)
1stringAdresse à utiliser pour signer

Valeur de retour

string - La signature (chaîne hexadécimale de 65 octets)


Exemple

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)

Utilisation d’ethers.js

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

Erreurs

CodeMessageDescription
4001L’utilisateur a rejeté la demandeL’utilisateur a refusé la demande de signature
-32602Paramètres non validesMessage ou adresse non valide

Remarques

  • Le message doit être encodé en hexadécimal avec 0x comme préfixe
  • Le message réellement signé est : "\x19Ethereum Signed Message:\n" + len(message) + message
  • Pour signer des données typées, utilisez eth_signTypedData_v4 à la place
  • Défini par EIP-191 

Pour l’authentification, vérifiez le domaine prévu, le compte, l’expiration et le défi serveur à usage unique. Une signature valide d’un message d’exemple fixe ne constitue pas un processus de connexion complet.

Dernière mise à jour le