このページの内容
personal_sign
指定されたアカウントでメッセージに署名します。署名前にメッセージに "\x19Ethereum Signed Message:\n" というプレフィックスを付加することで、メッセージ署名を生トランザクションへの署名と区別します。
パラメーター
| インデックス | 型 | 説明 |
|---|---|---|
| 0 | string | 署名するメッセージ (16 進数エンコード) |
| 1 | string | 署名に使用するアドレス |
戻り値
string - 署名 (65 バイトの 16 進数文字列)
例
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)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())エラー
| コード | メッセージ | 説明 |
|---|---|---|
| 4001 | ユーザーがリクエストを拒否 | ユーザーが署名リクエストを拒否 |
| -32602 | 無効なパラメーター | 無効なメッセージまたはアドレス |
注意事項
- メッセージは 16 進数エンコードし、
0xプレフィックスを付ける必要があります - 実際に署名されるメッセージ:
"\x19Ethereum Signed Message:\n" + len(message) + message - 型付きデータの署名には eth_signTypedData_v4 を使用してください
- 次で規定されています: EIP-191
認証には、意図したドメイン、アカウント、有効期限、サーバーが発行する 1 回限りのチャレンジを検証してください。固定された例のメッセージに対する有効な署名だけでは、完全なサインインフローにはなりません。
最終更新日