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
| Indice | Type | Description |
|---|---|---|
| 0 | string | Message à signer (encodé en hexadécimal) |
| 1 | string | Adresse à 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
| Code | Message | Description |
|---|---|---|
| 4001 | L’utilisateur a rejeté la demande | L’utilisateur a refusé la demande de signature |
| -32602 | Paramètres non valides | Message ou adresse non valide |
Remarques
- Le message doit être encodé en hexadécimal avec
0xcomme 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